В Keycloak вы можете использовать JWT для получения идентификатора вызывающего абонента?

#keycloak #keycloak-rest-api

#keycloak #keycloak-rest-api

Вопрос:

Мы хотели бы, чтобы пользователи проходили аутентификацию в приложении Slack, предоставляя их текущий JWT Keycloak в качестве процедуры одноразовой аутентификации. Это позволило бы нам связать их идентификатор пользователя Slack с идентификатором пользователя Keycloak.

Однако я не могу найти какую-либо конечную точку, такую как GetCallerIdentity AWS, в Keycloak. Я просмотрел документы, и самое близкое, что я могу найти, — это идентификационный токен, упомянутый здесь . Однако я ничего не могу найти о том, как разгадать этот идентификационный токен, чтобы безопасно получить информацию о его владельце.

Кто-нибудь может указать мне правильное направление?

Спасибо!

Ответ №1:

Open ID Connect определяет конечную точку userinfo, которая похожа на конечную точку AWS GetCallerIdentity. Но для этого требуется запустить запрос. Я бы предпочел прочитать данные пользователя из токена.

Стандартные библиотеки JWT (OIDC) поддерживают декодирование токенов. Токен доступа / идентификатора состоит из 3 частей: заголовок, полезная нагрузка, подпись. Вы можете использовать декодирование base64 в части полезной нагрузки, и вы получите json с данными пользователя. Конечно, правильная реализация также прочитает заголовок, чтобы получить используемый алгоритм, и он проверит подпись токена с использованием открытого ключа и алгоритма IdP. В противном случае кто-то может подделать токен.

https://jwt.io/#debugger-io обеспечивает приятный визуальный интерфейс, который поможет вам понять, а также расшифровать структуру токена:

введите описание изображения здесь

Имейте в виду: то, что возвращается в ответе userinfo, зависит от конфигурации клиента OIDC в Keycloak

Комментарии:

1. Спасибо! Это очень полезно, это именно то, что мне нужно было знать. Я ценю это.