即使用户已登录,wolkenkit也会重定向到Auth0

时间:2018-01-15 15:51:37

标签: auth0 wolkenkit

我只是尝试使用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>...

1 个答案:

答案 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

希望这会有所帮助: - )