Keycloak:如何获取用户在哪里注册的client_id?

时间:2018-12-12 19:46:31

标签: keycloak

我有一个使用SSO的多个OpenId客户端的领域。我需要确定每个Keycloak用户来自哪个客户端。

如何获取此信息?

3 个答案:

答案 0 :(得分:0)

如果解码,则每个JWT都具有参数azp,这是客户端ID。

答案 1 :(得分:0)

如果您解码令牌,则字段“ aud”就是您的“ client_id”。

使用jwt.io检查此信息。

答案 2 :(得分:0)

回答我自己的问题。

我没有在Keycloak的令牌中找到该信息。所以我添加了一个脚本。

在“身份验证”>“注册流程”中,添加具有以下功能的“脚本”类型的执行:

function authenticate(context) {

    var username = user ? user.username : "anonymous";
    var uri = context.getUriInfo();

    LOG.info("setClientIdAttribute for URI " + context.getUriInfo().getRequestUri());

    if (uri !== null) {
        var clientId = uri.getQueryParameters().getFirst("client_id");

        if (clientId !== null) {
            LOG.info("Attribute 'origin' set with value " + clientId + " for user " + username);
            user.setSingleAttribute('origin', clientId);
        }
    }

    context.success();
}