scope
参数的作用scope
用于声明请求访问的资源和权限。常见的值包括 openid
、profile
、email
等。scope
,在后续的 token 请求中,Keycloak 会根据这些 scope
返回相应的信息。
- openid用于指示请求者希望使用 OpenID Connect 进行身份验证
- 获取 ID Token:当你在授权请求中包含 openid 时,Keycloak 会返回一个 ID Token,包含用户的身份信息,反之,scope里不加openid,则不会生成ID Token这个字段。
scope
授权请求阶段 (/protocol/openid-connect/auth
):
scope
参数,以便在用户同意授权时,明确所请求的权限。令牌请求阶段 (/protocol/openid-connect/token
):
scope
,但通常情况下,如果在授权请求中已指定 scope
,则不需要在此再次指定;scope
,这里再指定是无效的,以授权中指定的值
为准以下是一个获取授权码的请求示例:
GET /auth/realms/{realm}/protocol/openid-connect/auth?
response_type=code&
client_id={client_id}&
redirect_uri={redirect_uri}&
scope=openid profile
scope
在授权请求中是可选的,但为了确保获得正确的权限和数据,建议在请求中包含 scope
参数。scope
是非常重要的。grant_type:authorization_code
code:3be438fe-8651-4a84-8141-976b76e671e1.75cab95f-a1ec-4b9b-9a6e-8f1ecb651cd6.61d819de-33e4-4006-ae66-dd7609ea2d3e
client_id:dahengshuju
client_secret:9e3de70f-d5cd-4d11-a8aa-85fd3af13265
scope:profile
{
"exp": 1727233162,
"iat": 1727231362,
"auth_time": 1727229121,
"jti": "bb296d9d-d521-45b1-aab9-8cb6bea0ddc3",
"iss": "https://xx.xx.com/auth/realms/xx",
"sub": "347c9e9e-076c-45e3-be74-c482fffcc6e5",
"typ": "Bearer",
"azp": "dahengshuju",
"session_state": "75cab95f-a1ec-4b9b-9a6e-8f1ecb651cd6",
"acr": "0",
"scope": "email profile",
"email_verified": false,
"preferred_username": "test",
"locale": "zh-CN",
"email": "bfyxzls@gmail.com"
}
{
"exp": 1727233521,
"iat": 1727231721,
"auth_time": 1727229121,
"jti": "f7de8ad9-7558-4f4a-8761-8724f685febb",
"iss": "https://xx.xx.com/auth/realms/xx",
"sub": "347c9e9e-076c-45e3-be74-c482fffcc6e5",
"typ": "Bearer",
"azp": "dahengshuju",
"session_state": "75cab95f-a1ec-4b9b-9a6e-8f1ecb651cd6",
"acr": "0",
"scope": "profile",
"preferred_username": "test",
"locale": "zh-CN"
}
{
"sub": "347c9e9e-076c-45e3-be74-c482fffcc6e5",
"email_verified": false,
"preferred_username": "test",
"locale": "zh-CN",
"email": "xxx@gmail.com"
}