OAuth2 不是用于身份验证吗?
Isn't OAuth2 for authentication?
我不太明白为什么 oauth2 用于授权而 OpenID Connect 用于身份验证。
authorization server
The server issuing access tokens to the client after successfully
authenticating the resource owner and obtaining authorization.
另一方面,根据 Authorization Code Flow RFC 代理或依赖方被重定向到某种身份验证页面以便能够对用户进行身份验证,不是吗?
此外,我一直读到 OpenID Connect 在 Oauth2 上构建,以便为 Oauth2 提供身份验证机制。对吗?
OAuth2.0 是一种授权协议。 OpenID Connect 合并了 id 令牌以在其之上添加身份验证
authorization server The server issuing access tokens to the client after successfully authenticating the resource owner and obtaining authorization.
这里的认证是针对授权服务器的,不是针对依赖方的。授权需要识别最终用户,为此仅使用身份验证。
一旦授权服务器对最终用户进行身份验证,它就会发回可用于与受保护端点通信的访问令牌。访问令牌授权依赖方使用受保护的服务。
访问令牌从不说明最终用户的任何信息。它们对 RP 是不透明的,只能由授权服务器使用。但是 id token 是一个带有最终用户详细信息的 JWT。这就是为什么我说 OpenID Connect 提供身份验证。
OAuth2.0和OpenID Connect如何选择?
您需要考虑许多事实。其中包括"does identity provider support protocols?"的问题。但是,这一切都归结为您使用代币的方式。
如果您的客户端应用程序只允许最终用户使用受保护的端点而不关心他们的身份详细信息,您应该使用 OAuth2.0。
但是,如果您的客户端应用程序关心识别最终用户并对他们进行身份验证(考虑客户端应用程序的其他功能,例如需要这些功能的数据库调用,甚至是欢迎消息),那么您应该使用 OpenID Connect。
我不太明白为什么 oauth2 用于授权而 OpenID Connect 用于身份验证。
authorization server The server issuing access tokens to the client after successfully authenticating the resource owner and obtaining authorization.
另一方面,根据 Authorization Code Flow RFC 代理或依赖方被重定向到某种身份验证页面以便能够对用户进行身份验证,不是吗?
此外,我一直读到 OpenID Connect 在 Oauth2 上构建,以便为 Oauth2 提供身份验证机制。对吗?
OAuth2.0 是一种授权协议。 OpenID Connect 合并了 id 令牌以在其之上添加身份验证
authorization server The server issuing access tokens to the client after successfully authenticating the resource owner and obtaining authorization.
这里的认证是针对授权服务器的,不是针对依赖方的。授权需要识别最终用户,为此仅使用身份验证。
一旦授权服务器对最终用户进行身份验证,它就会发回可用于与受保护端点通信的访问令牌。访问令牌授权依赖方使用受保护的服务。
访问令牌从不说明最终用户的任何信息。它们对 RP 是不透明的,只能由授权服务器使用。但是 id token 是一个带有最终用户详细信息的 JWT。这就是为什么我说 OpenID Connect 提供身份验证。
OAuth2.0和OpenID Connect如何选择?
您需要考虑许多事实。其中包括"does identity provider support protocols?"的问题。但是,这一切都归结为您使用代币的方式。
如果您的客户端应用程序只允许最终用户使用受保护的端点而不关心他们的身份详细信息,您应该使用 OAuth2.0。
但是,如果您的客户端应用程序关心识别最终用户并对他们进行身份验证(考虑客户端应用程序的其他功能,例如需要这些功能的数据库调用,甚至是欢迎消息),那么您应该使用 OpenID Connect。