首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Keycloak Javascript未能将

Keycloak Javascript未能将
EN

Stack Overflow用户
提问于 2022-05-12 14:44:35
回答 1查看 728关注 0票数 2

我正在尝试在JavaScript中使用Keycloak,以下是我遵循的步骤。

  1. 我在KeyCloak管理面板中创建了一个客户机。链接到图像
  2. 我将.json文件复制到我的apache文件夹。
代码语言:javascript
复制
    {
      "realm": "master",
      "auth-server-url": "http://localhost:8080/auth",
      "ssl-required": "external",
      "resource": "test",
      "public-client": true,
      "confidential-port": 0
    }
  1. 我转到我的index.html,添加这两行代码来调用脚本。
  2. 这就是我在myLogical.js上的文章
代码语言:javascript
复制
var keycloak = new Keycloak();

function initKeycloak() {
    keycloak.init({onLoad: 'login-required'}).then(function() {
        constructTableRows(keycloak.idTokenParsed);
        pasteToken(keycloak.token);
    }).catch(function() {
        alert('failed to initialize');
    });
}

function constructTableRows(keycloakToken) {
    document.getElementById('row-username').innerHTML = keycloakToken.preferred_username;
    document.getElementById('row-firstName').innerHTML = keycloakToken.given_name;
    document.getElementById('row-lastName').innerHTML = keycloakToken.family_name;
    document.getElementById('row-name').innerHTML = keycloakToken.name;
    document.getElementById('row-email').innerHTML = keycloakToken.email;
}

function pasteToken(token){
    document.getElementById('ta-token').value = token;
    document.getElementById('ta-refreshToken').value = keycloak.refreshToken;
}

var refreshToken = function() {
    keycloak.updateToken(-1)

我试图下载文件keycloak.js并将其直接放在我的根文件夹中,但也发生了同样的问题。这是我试图打开页面时收到的信息。

EN

回答 1

Stack Overflow用户

发布于 2022-05-12 18:42:50

我对第一点感到困惑,keycloak会自动从Apache文件夹中的json文件加载配置吗?让我们假设不是,我认为问题所在在于,您没有将config param传递给keycloak构造函数。

如何初始化密钥披风:

代码语言:javascript
复制
const initKeycloak = async () => {
    //you can hardcode these values for now just to see if everything works
    const config = { url: 'http://localhost:8080/auth', realm: 'master', clientId: 'test'};

    const keycloak = new Keycloak(config);

    await keycloak
            .init({ onLoad: 'login-required' })
            .then(isAuthenticated => {
                //user is authenticated
             })
             .catch(error => { console.log('keycloak error', error); });
}

另一件重要的事情是,keycloak库版本(在package.json中)必须匹配keycloak服务器版本。有时,不同的版本相互作用,但最好的做法是,keycloak-js版本与keycloak服务器版本相匹配。

您还可以在这里查看:https://github.com/m-s7/react-core/blob/devel/src/services/keycloak-service.ts,这是我的repo,带有工作的keycloak实现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72217690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档