首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >即使在用户登录时,wolkenkit也重定向到Auth0

即使在用户登录时,wolkenkit也重定向到Auth0
EN

Stack Overflow用户
提问于 2018-01-15 15:51:36
回答 1查看 78关注 0票数 3

我只是试着用跟踪wolkenkit文档的聊天模板来测试wolkenkit的身份验证。用户登录似乎有效,但用户被重定向到Auth0,即使他们已经登录(没有客户端调用auth.login方法)。

下面是客户端的代码片段:

代码语言:javascript
复制
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中,身份提供程序配置如下:

代码语言:javascript
复制
"wolkenkit": {
    "environments": {
      "default": {
        "identityProvider": {
          "name": "https://<myIdentity>.eu.auth0.com/",
          "certificate": "/server/keys/<myIdentity>.eu.auth0.com"
        },...

清除cookie后的浏览器日志(我检查了提供者标识和chat.auth.getProfile()返回的对象):

代码语言:javascript
复制
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>...
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-15 16:11:09

尽管您配置了身份验证,但重定向通常意味着配置身份验证的方式出现错误。

您可能需要检查以下设置:

  • 必须使用RS256 (而不是HS256 )对令牌进行签名(对于某些帐户来说,HS256似乎是Auth0的缺省值)。要找出正在使用的签名算法,请从浏览器的本地存储中获取令牌并将其粘贴到JWT调试器中。然后您可以看到令牌是如何签名的。如果您需要更改签名算法,您可以在Auth0中的客户端高级设置中找到这一点。
  • 使用相同的调试器,您还可以验证所使用的令牌和证书是否匹配。如果没有,您可能复制了错误的证书,或者您已经将路径配置为指向错误的证书。
  • 证书文件必须命名为certificate.pem。如果它有另一个名称,或者package.json中的路径不正确,wolkenkit甚至不应该启动应用程序,但是要确保再次检查文件的名称是否正确。
  • package.json中,除了证书的路径之外,还必须提供您使用的身份提供者的名称,在您的示例中,这是https://<myIdentity>.eu.auth0.com/。请注意,此必须与令牌中的iss声明完全匹配。令牌中的声明通常包含一个尾随斜杠,而package.json中的值不包含。如果它们不同,请在package.json中使用令牌的值。

完成更改后,请确保清空本地存储,并使用以下命令重新启动wolkenkit应用程序(否则更改将无效):

代码语言:javascript
复制
$ wolkenkit restart

希望这会有所帮助:)

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

https://stackoverflow.com/questions/48266381

复制
相关文章

相似问题

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