摘自网上内容,写的很好。
是一种开放标准的授权框架,用于授权第三方应用程序访问受保护的资源,而无需提供直接的用户名和密码。它提供了一种安全的授权机制,允许用户授权第三方应用程序代表他们访问受保护的资源。下面将详细解释OAuth2的认证过程和相关概念。
OAuth2认证的主要参与者包括:
资源所有者(Resource Owner):即最终用户,拥有受保护资源的所有权。
客户端(Client):第三方应用程序,希望访问受保护资源。
授权服务器(Authorization Server):负责对资源所有者进行身份验证,并颁发访问令牌。
资源服务器(Resource Server):存储受保护的资源,并验证访问令牌以确保访问的合法性。
OAuth2认证过程如下:
注册应用程序:客户端首先需要在授权服务器注册,并获取客户端ID和客户端密钥。这些凭据将用于后续的认证和授权请求。
获取授权码:客户端将用户重定向到授权服务器,并请求授权。用户将在授权服务器上进行身份验证,并确认是否授权客户端访问其受保护的资源。一旦用户授权,授权服务器将生成一个授权码,并将其返回给客户端。
获取访问令牌:客户端使用授权码向授权服务器请求访问令牌。客户端将提供客户端ID、客户端密钥和授权码作为验证凭据。授权服务器对这些凭据进行验证,并在验证通过后颁发访问令牌。
访问受保护资源:客户端将访问令牌发送到资源服务器,并请求访问受保护的资源。资源服务器验证访问令牌的有效性和权限,并根据结果决定是否授予客户端访问受保护资源的权限。
OAuth2认证还涉及一些重要的概念:
访问令牌(Access Token):代表授权的凭据,用于访问受保护的资源。访问令牌通常具有过期时间,并且可以被客户端使用来请求访问受保护的资源。
刷新令牌(Refresh Token):用于获取新的访问令牌的凭据。当访问令牌过期时,客户端可以使用刷新令牌向授权服务器请求新的访问令牌,而无需重新进行用户授权。
范围(Scope):用于限定访问令牌的权限范围。资源服务器可以根据范围的不同,对客户端请求进行授权的级别和限制。
OAuth2认证提供了一种安全和可扩展的方式,允许用户控制第三方应用程序对其受保护资源的访问权限。它广泛应用于各种场景,如社交登录、API访问控制等。
OAuth2 四种认证模式(https://blog.csdn.net/admans/article/details/134238938)
1. Authorization Code(授权码模式)
【步骤1,2】用户访问客户端,需要使用服务提供商的数据(用户信息),客户端通过重定向跳转到服务提供商的页面。
【步骤3】用户选择是否给予客户端授权访问服务提供商(用户信息)数据的权限。
【步骤4】用户给与授权。授权系统通过重定向(redirect_uri)并携带 授权凭证(code) 跳转回客户端。
【步骤5,6】客户端将授权凭证(code)发送给客服端服务器,客户端服务器携带授权码(code)、客户端id(client_id)和秘钥(client_secret)向认证服务器请求访问令牌(access_token)。
【步骤7,8】认证服务器核对授权码等信息,确认无误后,向客户端服务器发送访问令牌(access_token)和更新令牌(refresh_token),然后客户端服务器再发送给客户端。
【步骤9,10】客户端持有访问令牌(access_token)和需要请求的参数向客户端服务器发起资源请求,然后客户端服务器再向服务提供商的资源服务器请求资源(web API)。
【步骤11,12,13】服务提供商的资源服务器返回数据给客户端服务器,然后再回传给客户端使用。
2. Impliclt Grant(隐式授权模式)
3. Resource Owner Password Credentials Grant(密码模式)
4. Client Credentials Grant(客户端凭证模式)