首页 文章

OAuth2不是用于身份验证吗?

提问于
浏览
1

我不太清楚为什么oauth2用于验证,OpenID Connect用于验证目的 .

来自OAuth2 RFC

authorization server(授权服务器)服务器在成功验证资源所有者并获得授权后向客户端发出访问令牌 .

另一方面,根据Authorization Code Flow RFC代理或依赖方被重定向到某种认证页面以便能够认证用户,不是吗?

此外,我一直在阅读基于Oauth2构建的OpenID Connect,以便为Oauth2提供身份验证机制 . 这样对吗?

1 回答

  • 2

    OAuth2.0是一种授权协议 . OpenID Connect包含id令牌以在其上添加身份验证

    authorization server(授权服务器)服务器在成功验证资源所有者并获得授权后向客户端发出访问令牌 .

    这里验证是为授权服务器完成的,而不是依赖方 . 授权需要识别最终用户,并且只需要使用身份验证 .

    一旦授权服务器对最终用户进行身份验证,它就会发回可用于与受保护 endpoints 通信的访问令牌 . 并且访问令牌授权依赖方使用受保护的服务 .

    访问令牌永远不会对最终用户说任何话 . 它们对RP不透明,只能由授权服务器使用 . 但是id令牌是具有最终用户详细信息的JWT . 这就是我说OpenID Connect提供身份验证的原因 .

    How to choose between OAuth2.0 and OpenID Connect ?

    您需要考虑许多事实 . 其中包括“身份提供者支持协议吗?”的问题 . 但是,这一切都归结为你如何消费代币 .

    如果客户端应用程序只允许最终用户使用受保护的 endpoints 而不打扰其身份详细信息,则应使用OAuth2.0 .

    但是,如果您的客户端应用程序关注识别最终用户并对其进行身份验证(考虑客户端应用程序的其他功能,例如数据库调用,甚至是需要这些功能的欢迎消息),那么您应该使用OpenID Connect .

相关问题