Мы установили установку KeyCloak, которая предоставляет имя входа на основе OpenID Connect, которое основано на брокерском имени входа для провайдера идентификации на основе SAML. Мы реализовали плагин, который поддерживает настраиваемые сопоставления атрибута SAML с назначением группы и различными пользовательскими атрибутами.
Мы хотели бы предоставить службу обмена токенами - предпочтительно расширение стандартной службы, такой как конечная точка «токен», - которая может принимать несколько настраиваемых входных параметров, выполнять некоторую настраиваемую проверку и выпускать токен доступа, включая настраиваемые параметры. и, возможно, данные, полученные из пользовательских параметров в качестве новых требований.
Вариант использования - это тот случай, когда клиенту необходимо установить несколько идентификаторов в специфический для контекста токен доступа, чтобы использовать определенные сервисы, для которых требуется установить этот контекст. Разрешено ли пользователю задавать данный контекст или нет, можно проверить с помощью пользовательской функциональности плагина, которая вызывает несколько внешних служб.
Мы думали, что будет легко расширить функциональность конечной точки токена, реализовав класс на основе AbstractOIDCProtocolMapper
, а также реализовав OIDCAccessTokenMapper
. Оказывается, однако, что трудно получить доступ к пользовательским параметрам!
Мы предполагали, что основная функциональность должна быть реализована в методе:
@Override
protected void setClaim(IDToken token,
ProtocolMapperModel mappingModel,
UserSessionModel userSession,
KeycloakSession keycloakSession,
ClientSessionContext clientSessionCtx) {...}
Кто-нибудь знает умный способ достичь моей цели?
Возможно, мне следует расширить другой класс, использовать другую конечную точку или ...?