面试题答案
一键面试主要角色
- 资源拥有者(Resource Owner):通常是用户,拥有受保护的资源,并且有权授予第三方应用访问这些资源的权限。
- 客户端(Client):即第三方应用,它需要获取资源拥有者的授权,以访问受保护的资源。
- 授权服务器(Authorization Server):负责验证资源拥有者的身份,并颁发授权码(Authorization Code)和访问令牌(Access Token)。
- 资源服务器(Resource Server):托管受保护的资源,验证访问令牌的有效性,并在令牌有效时提供资源访问。
基本流程
- 用户请求第三方应用资源:客户端(第三方应用)向用户展示一个请求访问其资源的界面。
- 重定向到授权服务器:用户同意后,客户端将用户重定向到授权服务器,附带客户端ID、重定向URI和授权类型(如授权码模式
authorization_code
)等参数。 - 授权服务器验证用户身份:授权服务器对用户进行身份验证,通常通过用户名和密码等方式。
- 用户授权:授权服务器向用户展示客户端请求的权限范围,用户决定是否授权给客户端访问其资源。
- 颁发授权码:如果用户授权,授权服务器生成一个授权码,并将用户重定向回客户端指定的重定向URI,同时将授权码作为参数传递。
- 客户端请求访问令牌:客户端收到授权码后,使用授权码、客户端ID和客户端密钥(如果需要)向授权服务器请求访问令牌。
- 授权服务器验证并颁发访问令牌:授权服务器验证授权码、客户端ID和密钥(如果有)的有效性,验证通过后颁发访问令牌(Access Token),可能还包括刷新令牌(Refresh Token,用于在访问令牌过期时获取新的访问令牌)。
- 客户端使用访问令牌访问资源:客户端使用访问令牌向资源服务器请求访问受保护的资源。
- 资源服务器验证令牌并返回资源:资源服务器验证访问令牌的有效性,如果有效则返回相应的资源给客户端。