keycloak 从自定义协议映射器抛出身份验证错误

Posted

技术标签:

【中文标题】keycloak 从自定义协议映射器抛出身份验证错误【英文标题】:keycloak throw authentication error from custom protocol mapper 【发布时间】:2020-12-02 09:53:05 【问题描述】:

我已经创建了一个扩展自 AbstractOIDCProtocolMapper 的 java 自定义协议映射器

这个映射器调用了一个rest api,我想根据响应的结果在登录时显示一个自定义消息错误。但我不知道该怎么做

我重写了方法

protected void setClaim(IDToken token, ProtocolMapperModel mappingModel, UserSessionModel userSession)

【问题讨论】:

【参考方案1】:

您可以抛出一个扩展 org.keycloak.services.ErrorResponseException 的异常。在那里你可以覆盖

@Override
    public Response getResponse() 
        if (response != null) 
            return response;
         else 
            OAuth2ErrorRepresentation errorRep = new OAuth2ErrorRepresentation(error, errorDescription);
            return Response.status(status).entity(errorRep).type(MediaType.APPLICATION_JSON_TYPE).build();
        
    

将任何对象作为实体传递,作为响应的一部分返回。

【讨论】:

以上是关于keycloak 从自定义协议映射器抛出身份验证错误的主要内容,如果未能解决你的问题,请参考以下文章

keycloak 客户端协议映射器(脚本映射器)将请求标头添加到令牌中

Keycloak 中的协议映射器如何工作?

keycloak - 使用 kcadm.sh 将协议映射器添加到 keycloak

使用 kcadm.sh 在 Keycloak 中创建协议映射器

如何在 Keycloak 中创建脚本映射器?

域对象和数据映射器应如何在使用 MVC 的身份验证系统的服务类中交互