我有一个使用SSO的多个OpenId客户端的领域。我需要确定每个Keycloak用户来自哪个客户端。
如何获取此信息?
答案 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();
}