如果没有 OIDC,如何在 OAuth2 中完成身份验证?

how would authentication be done in OAuth2 without OIDC?

我知道有很多 material 关于这一点,但我还是不太明白。

我知道 OAuth2 不用于身份验证,您需要 OIDC 在上面才能进行身份验证。

但还是不太明白为什么。

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

这是身份验证,对吗?

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

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

披露:我为 Ping Identity 工作。

我写了一篇关于为什么 OpenID Connect 在 OAuth 2.0 之上有用的博客,我认为它在这里会有所帮助。

https://developer.pingidentity.com/en/blog/posts/2019/oidc-adds-authentication.html

基本上,OAuth 2.0 框架为客户端提供了一种方式来请求授权服务器去获取资源所有者的授权。

也就是说,客户端对授权服务器说,"I need to access a protected resource owned by John, can you go ask John to authorize this access."然后授权服务器可以做这件事,并返回一个访问令牌给客户端以访问受保护的资源。

但是,如果客户提出要求,"How do I know it was actually John that provided authorization?"OAuth 2.0 框架不会提供回答此问题的方法。

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