我只是尝试使用wolkenkit文档之后的聊天模板测试wolkenkit的身份验证。用户登录似乎有效,但即使用户已经登录(没有客户端调用auth.login
方法),用户也会被重定向到Auth0。
以下是客户端的代码段:
wolkenkit.connect({
host: 'local.wolkenkit.io',
port: 3000,
authentication: new wolkenkit.authentication.OpenIdConnect({
identityProviderUrl: 'https://<myIdentity>.eu.auth0.com/authorize',
clientId: '<myClientID>',
strictMode: false
})
}).
then(chat => {
console.log("chat.auth.isLoggedIn() = " + chat.auth.isLoggedIn());
console.log(chat.auth.getProfile());
if (!chat.auth.isLoggedIn()) {
return chat.auth.login();
}
});
在package.json
中,身份提供者配置如下:
"wolkenkit": {
"environments": {
"default": {
"identityProvider": {
"name": "https://<myIdentity>.eu.auth0.com/",
"certificate": "/server/keys/<myIdentity>.eu.auth0.com"
},...
清除cookie后的浏览器日志(我审查了提供者身份和chat.auth.getProfile()
返回的对象):
Navigated to http://local.wolkenkit.io:8080/
index.js:14 chat.auth.isLoggedIn() = false
index.js:15 undefined
Navigated to https://<myIdentity>.eu.auth0.com/login?client=<clientID>...
Navigated to http://local.wolkenkit.io:8080/
index.js:14 chat.auth.isLoggedIn() = true
index.js:15 {iss: "https://<myIdentity>.eu.auth0.com/", sub: "auth0|...", aud: "...", iat: ..., exp: ..., …}
Navigated to https://<myIdentity>.eu.auth0.com/login?client=<clientID>...
答案 0 :(得分:1)
虽然您配置了身份验证,但重定向通常意味着身份验证的配置方式存在错误。
您可能需要检查以下设置:
RS256
签名,而不是HS256
(对于某些帐户,这似乎是Auth0的默认设置)。要找出正在使用的签名算法,请从浏览器的本地存储中获取令牌并将其粘贴到JWT debugger中。然后,您可以看到令牌的签名方式。如果您需要更改签名算法,可以在Auth0中的客户端的高级设置中找到。certificate.pem
。如果它有另一个名称,或者package.json
中的路径不正确,wolkenkit甚至不应该启动应用程序,但要确保仔细检查文件是否正确命名。package.json
中,除了证书路径之外,您还必须提供您使用的身份提供商的名称,在您的情况下,这是https://<myIdentity>.eu.auth0.com/
。请注意,此必须完全匹配令牌中的iss
声明。令牌中的声明通常包含尾部斜杠,而package.json
中的值则不包含。如果它们不同,请使用package.json
中的令牌值。完成更改后,请确保清空本地存储,并使用以下命令重新启动wolkenkit应用程序(否则您的更改将无法生效):
$ wolkenkit restart
希望这会有所帮助: - )