在keycloak登录页面上显示应用程序名称

时间:2018-06-13 09:05:51

标签: keycloak keycloak-services

我有两个应用App1App2keycloak进行互动,以便对用户进行身份验证。

我想在keycloak登录页面上显示应用程序名称。

例如:如果用户登录App1,则keycloak登录页面应显示"登录App1"。 App2也应该发生同样的情况。

如何实现这一目标。?

3 个答案:

答案 0 :(得分:1)

如果您想将两者保持在同一领域,只需将javascript代码添加到custom theme login page即可。 client_id作为请求参数传递给登录页面。例如:

function getParameterByName(name, url) {
    if (!url) url = window.location.href;
    name = name.replace(/[\[\]]/g, "\\$&");
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, " "));
}

$(window).load(function(){ 
    var clientName = getParameterByName('client_id');
    var title = document.getElementById('title');
    title.innerHTML += clientName;
});

另见:

答案 1 :(得分:0)

我的猜测:使用两个不同的领域(App1, App2)并为每个领域创建自定义的Keycloak主题 - https://www.keycloak.org/docs/latest/server_development/index.html#_themes

答案 2 :(得分:0)

如果使用自定义登录主题,则可以分别在Freemarker模板中以${client.name}${client.clientId}的形式访问客户端名称或客户端ID。客户端名称可能最适合这种情况:只需通过Keycloak管理控制台将其设置为应用程序的名称即可。

不幸的是,可用的Freemarker变量没有得到很好的记录。您可以查看Keycloak的源代码(尤其是FreemarkerLoginFormsProvider类),以查找其他可用的变量。寻找到attributes.put的电话。

相关问题