我正在尝试在JavaScript中使用Keycloak,以下是我遵循的步骤。
.json文件复制到我的apache文件夹。 {
"realm": "master",
"auth-server-url": "http://localhost:8080/auth",
"ssl-required": "external",
"resource": "test",
"public-client": true,
"confidential-port": 0
}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并将其直接放在我的根文件夹中,但也发生了同样的问题。这是我试图打开页面时收到的信息。
发布于 2022-05-12 18:42:50
我对第一点感到困惑,keycloak会自动从Apache文件夹中的json文件加载配置吗?让我们假设不是,我认为问题所在在于,您没有将config param传递给keycloak构造函数。
如何初始化密钥披风:
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实现。
https://stackoverflow.com/questions/72217690
复制相似问题