接口描述
获取用户授权,如果用户未登录 EIAM 系统,则要求用户进行身份认证,身份认证成功后返回授权码。接口支持 PKCE 模式,如需进行 PKCE 模式的校验,可传入相应的参数。
请求方法
GET
请求地址
/auth/oauth2/authorize
请求参数
参数 | 参数位置 | 类型 | 是否必填 | 描述 |
client_id | Query | String | 是 | |
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"} |