Уникальность имени роли OpenID - PullRequest
0 голосов
/ 10 марта 2020

Интересно, как правильно сопоставить роли токена доступа 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"
}
...