angular - Angular Msal 访问令牌检索
问题描述
我一直在尝试从 Angular 中的 MSAL 获取访问令牌,但似乎让自己陷入困境,并希望有人能弄清楚这样做的正确过程。
我目前正在使用以下内容尝试获取令牌。
this.msal.acquireTokenSilent({ scopes }).then((response) => {
console.log(response.accessToken);
});
}, (error) => {
if (error instanceof ClientAuthError) {
this.msal.loginRedirect({ scopes });
}
if (error instanceof InteractionRequiredAuthError) {
this.msal.acquireTokenRedirect({ scopes });
}
if (error instanceof HttpErrorResponse && error.status === 401) {
this.msal.acquireTokenRedirect({ scopes });
}
});
如果您登录到 Azure,这将有效,但是如果您未登录,则它会落入 ClientAuthError 并将您重定向到登录。登录后,您将被重定向到原始页面,需要再次单击相同的登录按钮。
有没有办法在登录时获取访问令牌,而不是必须登录然后调用acquireTokenSilent?
解决方案
在 msal js 中,默认情况下,如果您调用 acquiretokenredirect,它会执行第二次重定向。这将使您在第二次重定向时丢失“令牌”。您可以做的是通过在身份验证配置中将“navigateToLoginRequestUrl”设置为 false 来阻止它进行第二次重定向。那么您应该能够获取令牌并使用它。
推荐阅读
- javascript - 如何实现文章的本地化?(前端和后端)
- google-drive-api - 用户对此文件没有足够的权限
- firebase - Firebase 云函数和 ImageMagick “convert-im6.q16:未授权”错误
- reactjs - 如何实现以 Django 为后端并以 React 为前端的 ADFS SSO?
- php - 如何在本地将电子邮件发送到文件以进行 localhost 测试(wordpress)
- bash - 使用脚本查看所有文件夹和子文件夹
- security - Azure 数据工厂:在链接服务之外存储链接服务的敏感值
- c++ - 如何获取一个类的所有子对象
- python - Selenium 表单提交:附加图片上传失败
- javascript - 正则表达式从嵌套的 html 标签中删除所有属性 - Javascript