具有自定义参数的OpenID Connect令牌交换

时间:2019-04-08 10:55:51

标签: openid-connect keycloak

我们已经设置了KeyCloak安装,该安装公开了基于OpenID Connect的登录名,该登录名是基于代理登录到基于SAML的身份提供程序的登录名的。我们已经实现了一个插件,该插件支持SAML属性到组分配和各种用户属性的自定义映射。

我们想公开一个令牌交换服务-最好是对标准服务的扩展,例如“令牌”端点-该令牌交换服务可以采用一些自定义输入参数,执行一些自定义验证并发出包括该自定义参数的访问令牌以及可能将从自定义参数得出的数据作为新声明。

用例是一种情况,其中要求客户端将一些标识符设置到特定于上下文的访问令牌中,以便使用需要设置该上下文的某些服务。可以通过调用一些外部服务的自定义插件功能来验证是否允许用户设置给定上下文。

我们认为通过实现基于AbstractOIDCProtocolMapper的类并实现OIDCAccessTokenMapper来扩展令牌端点的功能将很容易。但是事实证明,很难访问自定义参数!

我们认为主要功能应通过以下方法实现:

@Override
protected void setClaim(IDToken token, 
        ProtocolMapperModel mappingModel, 
        UserSessionModel userSession, 
        KeycloakSession keycloakSession, 
        ClientSessionContext clientSessionCtx) {...}

有人知道实现我目标的聪明方法吗? 也许我应该扩展一个不同的类,使用另一个端点,或者...?

0 个答案:

没有答案