Oauth 2.0 如果没有OIDC,在OAuth2中如何进行身份验证?

Oauth 2.0 如果没有OIDC,在OAuth2中如何进行身份验证?,oauth-2.0,openid-connect,Oauth 2.0,Openid Connect,我知道有很多关于这一点的材料,但我还是不太明白 我知道OAuth2不是用于身份验证的,您需要在上面使用OIDC来进行身份验证 但还是不太明白为什么 如果我查看隐式流,其中一个步骤是用户向授权服务器进行身份验证,然后发出访问令牌 这是身份验证,不是吗 那么为什么我们仍然需要OIDC和ID令牌呢?是因为访问令牌本身不够,JWT确保用户稍后可以通过后端服务进行身份验证吗 如果您只有OAuth2而没有OIDC,您将如何进行身份验证?披露:我为Ping Identity工作 我写了一篇关于为什么OpenI

我知道有很多关于这一点的材料,但我还是不太明白

我知道OAuth2不是用于身份验证的,您需要在上面使用OIDC来进行身份验证

但还是不太明白为什么

如果我查看隐式流,其中一个步骤是用户向授权服务器进行身份验证,然后发出访问令牌

这是身份验证,不是吗

那么为什么我们仍然需要OIDC和ID令牌呢?是因为访问令牌本身不够,JWT确保用户稍后可以通过后端服务进行身份验证吗


如果您只有OAuth2而没有OIDC,您将如何进行身份验证?

披露:我为Ping Identity工作

我写了一篇关于为什么OpenIDConnect在OAuth2.0上很有用的博客,我认为这会有所帮助

基本上,OAuth2.0框架为客户机提供了一种请求授权服务器从资源所有者那里获得授权的方法

也就是说,客户机对授权服务器说,“我需要访问John拥有的受保护的资源,你能让John授权访问吗?”然后授权服务器可以做这件事,并带着访问令牌返回客户机以访问受保护的资源

但是,如果客户机问,“我怎么知道是John提供了授权?”OAuth 2.0框架没有给出答案


除了访问令牌之外,OpenID Connect还提供了额外的ID令牌,客户端可以检查它是否是John。

谢谢您的回复!因此,OAuth2基本上涉及身份验证,但仅在资源所有者和授权服务器之间,客户端无法确保此身份验证实际有效。只有将某些信息添加到访问令牌(ID令牌)中时,客户端才能确保资源所有者实际上已经过身份验证。因此,OIDC并没有真正添加身份验证,而是通过ID令牌将有关身份验证过程的信息转发给客户端?根据这一点:隐式授权类型的步骤之一是“授权服务器验证资源所有者(通过用户代理)”并确定资源所有者是批准还是拒绝客户端的访问请求。”因此,即使没有OIDC,也有一个身份验证步骤。还是我遗漏了什么?OAuth2.0规范没有规定任何处理您所说的身份验证的方法。更重要的是,“嘿,你应该在这里进行身份验证。”它没有描述应该如何进行,或者如何传递有关身份验证和用户的信息。OIDC对此做了更多的补充,并说,“好的,这就是我们如何处理身份验证并将成功的身份验证传递给客户端。”因此,如果没有OIDC,我们将不得不想出自己的身份验证和传递信息的方法。是的,ID令牌是OAuth缺少的OIDC的主要补充之一