我有一个使用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()'失败有关。我发现其他一些有趣的事情。
{ _idTokenVerification: false }
被传递到parseHash()
中,但是出于某种原因将其添加到某个地方id_token
传递到responseType
的问题,但是我们正在使用此令牌来检查到期时间。如果这可能引起问题,我也许可以找出解决方法我不能仅仅假设这些是问题,因为无论是否进行了这些修改,我都无法复制主要问题。
有什么帮助或建议吗?