面试题答案
一键面试- 用户请求资源:
- 客户端将用户引导至授权服务器的授权端点。
- HTTP请求方法:通常是GET。
- 参数:
response_type
:值为code
,表示使用授权码模式。client_id
:客户端在授权服务器注册的ID。redirect_uri
:授权服务器在授权成功后重定向回客户端的URI。scope
:请求的权限范围,多个范围用空格分隔。
- 错误处理:
- 如果参数缺失或不正确,授权服务器返回HTTP 400 Bad Request错误,可能包含错误信息,如
error=invalid_request
及error_description
说明具体问题。
- 如果参数缺失或不正确,授权服务器返回HTTP 400 Bad Request错误,可能包含错误信息,如
- 用户授权:
- 授权服务器向用户展示授权页面,询问用户是否授权客户端访问其资源。
- 用户做出授权决定(同意或拒绝)。
- 错误处理:
- 如果用户拒绝授权,授权服务器重定向回
redirect_uri
,并带有error=access_denied
及error_description
描述拒绝原因。
- 如果用户拒绝授权,授权服务器重定向回
- 授权服务器颁发授权码:
- 如果用户授权,授权服务器生成授权码,并通过302重定向将用户浏览器重定向回
redirect_uri
。 - HTTP请求方法:重定向(302)。
- 参数:
code
:授权码。
- 错误处理:
- 若在生成或返回授权码过程中出现问题,重定向回
redirect_uri
,携带类似error=server_error
及error_description
的错误信息。
- 若在生成或返回授权码过程中出现问题,重定向回
- 如果用户授权,授权服务器生成授权码,并通过302重定向将用户浏览器重定向回
- 客户端请求访问令牌:
- 客户端在后端使用授权码向授权服务器的令牌端点请求访问令牌。
- HTTP请求方法:通常是POST。
- 参数:
grant_type
:值为authorization_code
。code
:之前获取的授权码。redirect_uri
:与之前请求授权时一致。client_id
:客户端ID。client_secret
:客户端密钥(如果是保密客户端)。
- 错误处理:
- 若授权码无效或已过期,返回HTTP 400 Bad Request错误,
error=invalid_grant
及error_description
说明原因。 - 如果客户端身份验证失败(如
client_id
或client_secret
错误),返回HTTP 401 Unauthorized错误,error=invalid_client
及error_description
描述问题。
- 若授权码无效或已过期,返回HTTP 400 Bad Request错误,
- 授权服务器颁发访问令牌:
- 授权服务器验证请求无误后,生成访问令牌,并返回给客户端。
- HTTP请求方法:响应(通常是JSON格式)。
- 参数(响应):
access_token
:访问令牌。token_type
:如Bearer
。expires_in
:访问令牌的过期时间(秒)。- 可选:
refresh_token
(如果支持刷新令牌)。
- 错误处理:
- 若出现内部错误导致无法颁发令牌,返回HTTP 500 Internal Server Error错误,
error=server_error
及error_description
说明问题。
- 若出现内部错误导致无法颁发令牌,返回HTTP 500 Internal Server Error错误,