Auth0通常要求用户进行两次身份验证

时间:2018-11-27 16:34:16

标签: angular authentication oauth auth0

我有一个使用Angular 7构建的面向客户端的Web应用程序,该应用程序使用Auth0(auth0-js v9.8.2)进行身份验证。我们要求用户使用用户名/密码登录,然后使用监护人/文本/电话进行多重登录。所有这些都很好。问题是,我们看到有时有时需要用户在从Auth0的托管登录页面重定向到应用程序后立即进行第二次身份验证/多因素验证。我本人已经看过一两次,但是现在尝试调试此问题,因此无法复制该问题。但是,我在日志中看到每天有几个用户遇到这种不便。

这是我代码中的一些摘要。如果我知道如何复制,我将尝试进行调试,但是即使现在其他人仍在进行,我什至无法实现。

我在app.component.ts中要做的第一件事是呼叫handleAuthentication(),并要求用户进行身份验证(如果尚未登录的话)。

constructor(private auth: Auth, private dataService: DataService) {
    this.auth.handleAuthentication().then((res: any) => {
        if (this.auth.isAuthenticated()) {
            this.authenticated = true;
        } else {
            this.auth.auth0.authorize();
        }
    });
}

这里是handleAuthentication()函数,只有在调用'parseHash()'并设置了会话之后,才能解析该函数​​。

public handleAuthentication(): Promise<any> {
    return new Promise((resolve, reject) => {
        this.auth0.parseHash({ _idTokenVerification: false }, (err, authResult) => {
            if (authResult && authResult.accessToken && authResult.idToken) {
                window.location.hash = '';
                this.setSession(authResult);
            } else if (err) {
                console.log(err);
            }
            resolve();
        });
    });
}

这是我的auth0设置,以帮助您

auth0 = new auth0.WebAuth({
    domain: '<domain>',
    clientID: '<clientID>',
    redirectUri: environment.callbackURL,
    audience: '<audience>',
    responseType: 'token id_token',
    scope: 'openid'
});

我唯一的猜测是,它与'parseHash()'失败有关。我发现其他一些有趣的事情。

  1. 在其他示例中,我看不到{ _idTokenVerification: false }被传递到parseHash()中,但是出于某种原因将其添加到某个地方
  2. 我已经看到其他人谈论将id_token传递到responseType的问题,但是我们正在使用此令牌来检查到期时间。如果这可能引起问题,我也许可以找出解决方法

我不能仅仅假设这些是问题,因为无论是否进行了这些修改,我都无法复制主要问题。

有什么帮助或建议吗?

0 个答案:

没有答案