Отсутствует идентификатор группы KeyCloak в токене - PullRequest
1 голос
/ 06 января 2020

В настоящее время я настраиваю бесплатный экземпляр sh KeyCloak и пытаюсь добиться следующего: пользователи будут помещены в - группы - эти группы получат указанные клиентом c роли

например У меня есть роль "Издатели" и несколько групп издателей: Publisher1, Publisher2, ...

Итак, когда пользователь входит в систему, я могу определить, является ли он издателем или нет, и затем дать ему доступ к определенный c набор функций на сайте. Затем группы должны сузить все сведения, которые он получит.

Точно так же, как роль предоставит ему доступ к REST API, и группа отфильтрует результаты, которые он получит.

В SQL: SELECT * FROM xyz where publisher_id = ?

В токене я хочу увидеть эту информацию. При использовании функции оценки в настоящее время я получаю следующее:

{
  "jti": "3e96fc9d-b1dc-428a-8f8e-0661f9cf265b",
  "exp": 1578303161,
  "nbf": 0,
  "iat": 1578302861,
  "iss": "https://prodo-sso-ti.ariva-services.de/auth/realms/PRODO",
  "aud": "account",
  "sub": "55bed571-dd3b-4282-8688-5da543517a49",
  "typ": "Bearer",
  "azp": "dashboard",
  "auth_time": 0,
  "session_state": "12ab2b8c-dc9a-42ca-b106-1a213dd38fc0",
  "acr": "1",
  "allowed-origins": [
    "https://secretlink"
  ],
  "realm_access": {
    "roles": [
      "offline_access",
      "uma_authorization"
    ]
  },
  "resource_access": {
    "account": {
      "roles": [
        "manage-account",
        "manage-account-links",
        "view-profile"
      ]
    },
    "dashboard": {
      "roles": [
        "Publisher"
      ]
    }
  },
  "scope": "openid profile email",
  "group_membership": [
    "/Publisher1"
  ],
  "email_verified": true,
  "name": "My Name",
  "preferred_username": "mb",
  "locale": "de",
  "given_name": "My",
  "family_name": "Name",
  "email": "my@name.de"
}

Я активировал Картограф членства в группе, чтобы получить группы, в которые входит пользователь. Проблема в том, что я получаю только название группы, пока мне нужно что-то более полезное, например, удостоверение личности. Поэтому я попытался добавить в группу «publisher_id» атрибут с цифрой c значение «1».

Как можно также получить этот publisher_id в информации о членстве в группе или где-то еще. Или, может быть, я нахожусь на неправильном пути, и это может быть достигнуто как-то иначе?

Я ценю любые намеки:)

1 Ответ

0 голосов
/ 07 января 2020

с помощью этого локона вы можете узнать, какие роли доступны для специальной группы:

curl --location --request GET 'http://localhost:8080/auth/admin/realms/adanic/groups/35324d42-3299-4ed3-ad07-8c9ea8c02e9b/role-mappings/realm/available'

и по этому локону вы можете получить список пользователей с особой ролью:

curl --location --request GET 'http://localhost:8080/auth/admin/realms/adanic/roles/adanic-admin/users?first=0&max=100' \
--header 'Content-Type: application/json' \
--data-raw '{
   "roles": [
       {
           "id": "0830ff39-43ea-48bb-af8f-696bc420c1ce",
           "name": "user",
           "description": "${role_create-client}",
           "composite": false,
           "clientRole": true,
           "containerId": "kilid"
       }
   ]
}'

я sh это может помочь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...