获取授权码

最近更新时间:2022-03-23 18:00:43

我的收藏

接口描述

获取用户授权,如果用户未登录 EIAM 系统,则要求用户进行身份认证,身份认证成功后返回授权码。接口支持 PKCE 模式,如需进行 PKCE 模式的校验,可传入相应的参数。

请求方法

GET

请求地址

/auth/oauth2/authorize

请求参数

参数
参数位置
类型
是否必填
描述
client_id
Query
String
客户端 ID,可参见 应用管理页面 > 选定指定应用 > 单击应用配置 > 对应的“Client Id”
response_type
Query
String
固定值“code”。
redirect_uri
Query
String
授权成功后的重定向地址,如该参数为空,则使用创建应用时设置的“Redirect Uri”作为重定向地址,用于接收 code 等参数。含特殊字符,需要做 URLEncode
state
Query
String
推荐
应用系统提供的一个随机字符串,服务器会原样重定向给应用系统,它既能防止 CSRF、XSRF, 同时也可以用来对应 SP 初始发起的状态
scope
Query
String
OIDC 应用系统必须上送该参数,参数值应以 openid 开头
code_challenge_method
Query
String
PKCE 模式的必要参数,即 code_challenge 值的计算方法,目前仅支持 SM3,表示 SM3 摘要算法
code_challenge
Query
String
PKCE 模式的必要参数,计算方式:code_challenge = code_challenge_method(code_verifier)。code_verifier 为校验码原文,应用系统需要自行保存code_verifier,并在获取授权令牌的请求中带上,用作验证
nonce
Query
String
应用系统提供的一个随机字符串,服务器会在 /token 请求返回的 id_token 中原样携带该参数,供应用系统进行校验,以防止重放冲击

返回参数

参数
参数位置
类型
描述
code
Query
String
授权码,10分钟内有效
state
Query
String
应用系统提供的一个随机字符串,服务器会原样重定向给应用系统,它既能防止 CSRF、XSRF, 同时也可以用来对应 SP 初始发起的状态。当入参未传入 state 时,则无此项出参

返回方式

重定向

接口示例

输入示例

https://<auth_domain>/auth/oauth2/authorize?client_id=ODQyNGJlYmF****NDZiYWE4YjkwNjU4MzMxOThkMGU&response_type=code&redirect_uri=http%3A%2F%2Flocalhost%3A9080%2Fauth%2Fredirect%2Fget&state=baa07350-e2b9-****-a8ae-350325288049&scope=openidasd6786hj824****24993e0achjty&nonce=xxxxxxxx

返回示例

http://localhost:9080/auth/redirect/get?code=b9eb0dc2338824****24993e0aca6180&state=baa07350-e2b9-****-a8ae-350325288049

错误码

httpStatus
Response
400
{"error": "invalid_request", "error_description": "invalid response_type"}
400
{"error": "invalid_request", "error_description": "missing subject_token parameter"}
400
{"error": "invalid_request", "error_description": "missing client_id parameter"}
400
{"error": "invalid_request", "error_description": "missing response_type parameter"}
400
{"error": "invalid_request", "error_description": "missing scope parameter"}
403
{"error": "unauthorized_client", "error_description": "invalid client"}
500
{"error": "internal_server_error", "error_description": "generate access token fail"}
500
{"error": "internal_server_error", "error_description": "generate authorization code fail"}