Интересно, как правильно сопоставить роли токена доступа OpenID с ролями в приложении? В качестве примера рассмотрим, что веб-приложение получает токен для клиента «myrealm-api-client». Токен содержит область «my-service» и соответствующую аудиторию myrealm-my-service, которая является рассматриваемой серверной службой, в которой я хочу сопоставить роли токена доступа с ролями приложения.
Теперь, какие роли я должен на самом деле отобразить? Должен ли я фильтровать роли по имени клиента или принимать все роли как есть? В последнем случае я мог бы получить роль администратора, связанную с «myrealm-api-client» для другой службы, как в примере ниже?
{
"jti": "410161b7-7b22-479f-a099-e8aea00ddf62",
"exp": 1670204820,
"nbf": 0,
"iat": 1583806373,
"iss": "http://127.0.0.1:8080/auth/realms/myrealm",
"aud": [
"myrealm-my-service",
"account"
],
"sub": "483db22b-da17-4967-9522-3b99eb3d430f",
"typ": "Bearer",
"azp": "myrealm-api-client",
"nonce": "N0.72384752258387671583806372863",
"auth_time": 1583804820,
"session_state": "e78a3858-870c-4faa-bc36-d091a96b250a",
"acr": "0",
"allowed-origins": [
"*"
],
"realm_access": {
"roles": [
"myrealm-api-role",
"offline_access",
"uma_authorization"
]
},
"resource_access": {
"myrealm-api-client": {
"roles": [
"Admin"
]
},
"account": {
"roles": [
"manage-account",
"manage-account-links",
"view-profile"
]
}
},
"scope": "openid profile email my-service",
"email_verified": true,
"name": "Fooman S",
"preferred_username": "myrealm-api-user",
"given_name": "Fooman",
"family_name": "S",
"email": "foo@man.com"
}