OAuth2.0中的身份验证以及它如何与OpenId一起使用

时间:2012-10-18 14:29:40

标签: .net openid oauth-2.0 dotnetopenauth

好的寻找一些指导

我正在研究设置一个中央身份验证和授权服务器,以便使用DotNetOpenAuth登录和访问我们的Api。

到目前为止

OpenId - >认证
OAuth - >授权好......然后它变得混乱。

OpenId有OAuth的扩展。 (那么对Connect And Auth2.0有什么需要!) OpenId Connect有点像Auth2.0吗?

OAuth2.0允许身份验证
Hueinverse提到OAuth2.0有一个新用户名&密码流

  

用户名和密码流 - 用于信任客户端处理其凭据但客户端仍不希望存储用户的用户名和密码的情况。此流程仅适用于用户与客户之间存在高度信任的情况。

但是谷歌提到了protocols

  

OAuth 2.0是适用于所有Google API的全新简化授权协议。 OAuth 2.0依赖于SSL来实现安全性,而不是要求您的应用程序直接进行加密签名。此协议允许您的应用程序请求访问与用户的Google帐户关联的数据。

认证不值得提及。

使用DotnetOpenAuth,它使用OpenId库对OAuth2.0进行身份验证。

所以...有人可以为我清理OpenId Connect和OAuth 2.0的细节! :)

提前致谢。

1 个答案:

答案 0 :(得分:0)

OAuth用于授权。 OpenIDConnect用于身份验证。

OpenIDConnect(不是OpenID)是建立在OAuth2之上的。

在OAuth中,客户端接收访问令牌,该令牌可用于访问服务器端资源(例如服务器API)。拥有访问令牌并不意味着我们对用户身份进行身份验证。它只会授予您访问属于用户的资源的权限。

在OpenIDConnect中,客户端会收到一个类似的令牌,称为“ ID令牌”,其形式为JWT。客户端可以通过其数字签名来验证此令牌,并从该ID令牌获取用户ID信息。

OAuth支持多个grant types。您提到的一种是“密码授予类型”,其中授权服务器信任客户端应用程序并让它处理用户凭证(例如密码)。

更常见的授予类型是授权代码流,其中用户在授权服务器登录页面(授权端点)上提交其凭据。如果您有“使用Google / Facebook帐户登录”的经验,则应该更好地了解其工作原理。