首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何侦听MSAL-角令牌重新识别请求?

如何侦听MSAL-角令牌重新识别请求?
EN

Stack Overflow用户
提问于 2019-06-04 21:37:12
回答 2查看 996关注 0票数 2

所以我让MSAL角块在我的角度项目中正确地工作了。问题在于,当我将会话打开了一段时间,当令牌可能过期时,MSAL会调用对Azure AD的重新身份验证请求。这将自动重定向到Azure AD以进行验证,如果启动路径不是Azure中的注册路径(例如,localhost:1000/login会成功,但localhost:1000/orders不会成功),则会失败。

理想情况下,我不应该指定Azure AD中的每个路径置换,因此我想拦截身份验证重定向,重定向到默认URL,然后启动身份验证过程。这是我最初的想法:

我认为认证层中的以下代码将有一个挂钩,即:

代码语言:javascript
复制
import { MsalService, BroadcastService } from '@azure/msal-angular';

broadcast.subscribe("msal:loginSuccess",
  () => {
  ...
}
this.broadcast.subscribe("msal:loginFailure",
  () => {
  ...
});

但它看上去并不是击中了这个部分,而是在app.routing中加入了钩子:

代码语言:javascript
复制
import { MsalGuard } from "@azure/msal-angular";

const appRoutes: Routes = [
  { path: 'login', component: LoginComponent, canActivate: [MsalGuard] },
  { path: 'orders', component: OrdersComponent, canActivate: [MsalGuard] },
];

任何想法都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-05 15:33:09

事实证明,您可以黑进系统--您所需要做的就是在Azure的清单中使用通配符。

1/日志进入https://portal.azure.com

2/转到Azure

3/转到应用程序注册

4/选择你的应用程序

5打开清单并设置如下:

代码语言:javascript
复制
"replyUrlsWithType": [
    {
        "url": "https://localhost:1000/*",
        "type": "Web"
    }
],

6/保存..。然后瞧。这迫使Azure AD接受来自该域的所有URI

注意: Azure门户会主动阻止通配符匹配..。但你可以通过舱单绕过它;)

票数 1
EN

Stack Overflow用户

发布于 2022-06-23 12:01:06

我知道你已经解决了你的问题,但你的问题从来没有得到正确的回答。经过很长一段时间的研究,我终于找到了一种合适的方法来监听MSAL--角令牌重新识别请求。

下面的订阅会监听每个HTTP请求,并在您的AccessToken正确且未过期时发出事件,例如'msal:acquireTokenStart‘。

如果您的AccessToken不正确并且确实过期了,还有另一个事件使用RefreshToken从网络中获取一个新的AccessToken:'msal:acquireTokenFromNetworkStart‘。

如果两个标记都是错误的或删除的,则发送'msal:acquireTokenFailure‘。这些发射可以用于例如重定向或注销用户。

代码语言:javascript
复制
 this.msalBroadcastService.msalSubject$.subscribe({
      next: (msalSubject) => {
        if (msalSubject.eventType === 'msal:acquireTokenFailure') {
          // Do something when acquiring of the token fails
        }
       }
      },
    });

上面的代码在ngOnInit内部。不要忘记导入MsalBroadcastService并将其注入构造函数。

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

https://stackoverflow.com/questions/56451676

复制
相关文章

相似问题

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