我正在建造一个muli-tenant saas(software as a service) architecture。我必须authentication system为系统构建。
muli-tenant saas(software as a service) architecture
authentication system
根据我的研究,我认为我需要使用构建基于的身份验证系统OAuth2.0和承载令牌JWT tokens。
OAuth2.0
JWT tokens
在阅读了很多有关如何构建OAuth2.0服务器的OAuth2.0的知识之后,我仍然感到困惑didn't understand,full concept of OAuth并且对是否需要它或是否需要其他身份验证系统感到困惑。
didn't understand
full concept of OAuth
我的系统需要的是,我们将为SDK所有客户提供服务,每个客户都将拥有一个,Application Id并且a secret key使用SDK客户端将连接到我们系统中存在的他的应用程序。
SDK
Application Id
a secret key
在application ID将客户他的申请目前映射在我们的系统和client secret key将要验证客户端内的application.Do我还需要建立一个基于OAuth2.0的认证系统或者我可以建立基于我们需要自己的身份验证系统?
application ID
client secret key
OAUTH2.0的用例是什么?何时不需要实现它?
首先,如OAuth身份验证中明确指出的
OAuth 2.0不是身份验证协议。 用户访问应用程序时的身份验证告诉应用程序当前用户是谁以及他们是否存在。完整的身份验证协议还可能会告诉您有关此用户的许多属性,例如唯一标识符,电子邮件地址,以及当应用程序显示“ Good Morning”时如何调用它们。 但是,OAuth不会告诉应用程序。 OAuth绝对不会对用户说任何话,也不会说用户如何证明他们的存在或者即使他们仍然在场。 就OAuth客户端而言,它要求一个令牌,获得一个令牌,并最终使用该令牌访问某些API。它对谁授权该应用程序,甚至根本没有用户一无所知。
OAuth 2.0不是身份验证协议。
用户访问应用程序时的身份验证告诉应用程序当前用户是谁以及他们是否存在。完整的身份验证协议还可能会告诉您有关此用户的许多属性,例如唯一标识符,电子邮件地址,以及当应用程序显示“ Good Morning”时如何调用它们。
但是,OAuth不会告诉应用程序。 OAuth绝对不会对用户说任何话,也不会说用户如何证明他们的存在或者即使他们仍然在场。 就OAuth客户端而言,它要求一个令牌,获得一个令牌,并最终使用该令牌访问某些API。它对谁授权该应用程序,甚至根本没有用户一无所知。
有一个使用OAuth进行用户身份验证的标准:OpenID Connect,与OAuth2兼容。
OpenID Connect ID令牌是签名的JSON Web令牌(JWT),它与常规OAuth访问令牌一起提供给客户端应用程序。 ID令牌包含一组有关身份验证会话的声明,包括用户的标识符(子),发布令牌的身份提供者的标识符(iss)以及为其创建令牌的客户端的标识符(音频)。
在Go中,您可以查看 coreos/dex 带有可插拔连接器的OpenID Connect身份(OIDC)和OAuth 2.0提供程序。
coreos/dex