面试题答案
一键面试主要角色
- 资源所有者(Resource Owner):拥有受保护资源的用户。
- 客户端(Client):想要访问资源所有者受保护资源的应用程序。
- 授权服务器(Authorization Server):负责验证资源所有者的身份,并颁发授权码和访问令牌。
- 资源服务器(Resource Server):托管受保护资源,验证访问令牌并提供资源访问。
基本工作流程及交互步骤
- 客户端请求授权
- 客户端将资源所有者重定向到授权服务器的授权端点,请求授权码。请求中包含客户端ID、重定向URI、范围等信息。
- 授权服务器验证并询问资源所有者
- 授权服务器验证客户端的合法性,并对资源所有者进行身份验证。
- 然后向资源所有者展示授权请求,询问是否授权客户端访问其资源。
- 资源所有者授权
- 如果资源所有者同意授权,授权服务器将重定向回客户端指定的重定向URI,并在URL中包含授权码。
- 客户端换取访问令牌
- 客户端使用授权码向授权服务器的令牌端点发送请求,换取访问令牌。请求中包含授权码、客户端ID、客户端密钥(若有)和重定向URI。
- 授权服务器验证授权码的有效性以及其他请求参数,验证通过后,向客户端颁发访问令牌,有时还可能包含刷新令牌。
- 客户端访问资源
- 客户端使用访问令牌向资源服务器发送请求,访问受保护资源。
- 资源服务器验证访问令牌的有效性,验证通过后,向客户端返回请求的资源。
- 访问令牌过期及刷新(涉及授权码轮换机制部分)
- 当访问令牌过期后,客户端使用刷新令牌向授权服务器的令牌端点请求新的访问令牌。
- 授权服务器验证刷新令牌的有效性,验证通过后,生成新的访问令牌(可能还会生成新的刷新令牌,实现授权码轮换)并返回给客户端。
- 客户端使用新的访问令牌继续访问资源服务器的受保护资源。