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

问题描述

我创建了一个AbstractOIDCProtocolMapper扩展来的Java自定义协议映射器

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

我被覆盖了方法

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

解决方法

您可以引发扩展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();
        }
    }

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