我正在构建一个muli-tenant saas(software as a service) architecture。我必须为系统构建authentication system。
从我所研究的情况来看,我认为需要建立基于OAuth2.0的认证系统和使用JWT tokens的承载令牌。
在阅读了大量关于OAuth2.0如何构建OAuth2.0服务器的文章之后,我仍然对didn't understand full concept of OAuth感到困惑,也不清楚我是否需要它,或者我是否需要其他身份验证系统。
我的系统需要的是,我们将向所有客户提供一个SDK,每个客户端都有一个Application Id和a secret key,使用SDK将连接到系统中的他的应用程序。
application ID将客户映射到我们系统中的应用程序,client secret key将在application.Do中对客户机进行身份验证,我仍然需要构建一个基于OAuth2.0的身份验证系统,或者我可以根据我们的需要构建自己的身份验证系统吗?
:OAUTH2.0的用例是什么?什么时候我们不需要它来实现?
发布于 2016-05-02 05:01:11
首先,正如OAuth认证中明确指出的那样
OAuth 2.0不是身份验证协议。 用户访问应用程序的上下文中的身份验证告诉应用程序当前用户是谁,以及他们是否存在。完整的身份验证协议可能还会告诉您有关此用户的许多属性,例如唯一标识符、电子邮件地址,以及应用程序说“早安”时该如何称呼它们。 然而,OAuth没有告诉应用程序这一切。 OAuth绝对没有提到用户,也没有说明用户是如何证明他们的存在的,即使他们还在那里。 就OAuth客户端而言,它请求一个令牌,得到一个令牌,并最终使用该令牌访问某些API。它不知道是谁授权了应用程序,或者是否有一个用户在那里。
有一个使用OAuth进行用户身份验证的标准: OpenID连接,与OAuth2兼容。
OpenID连接ID令牌是一个签名的JSON Web令牌(JWT),它沿常规OAuth访问令牌提供给客户端应用程序。 ID令牌包含一组关于身份验证会话的声明,包括用户标识符(sub)、发出令牌的身份提供者标识符(iss)和创建此令牌的客户端标识符(aud)。
在Go中,您可以查看coreos/dex,一个带有可插拔连接器的OpenID连接标识(OIDC)和OAuth 2.0提供程序。
https://stackoverflow.com/questions/36974902
复制相似问题