繁体   English   中英

如何让我的 angular 应用程序与我可以在 Azure 门户中按下的 b2c“撤销会话”按钮一起工作

[英]How do I get my angular application to work with b2c “revoke session” button which I can press in the Azure portal

我的用例是能够强制要求用户在丢失设备/帐户受损的情况下再次登录,还可以更新他们缓存的用户帐户,我们在 Angular 应用程序中添加了更多信息。

在 Azure B2C 中,我有几个管理按钮,包括 [Revoke Sessions]。 在幕后,这调用了图 function,如此处所述(我的 API 可以稍后以编程方式调用):- https://graph-user-revssignins?view 1.0&tabs=csharp

b2c 中的管理按钮显示撤销会话

在我的 Angular 应用程序中,我无法强制我的用户在后续调用安全资源时再次登录。 我希望当我在按下此按钮后拨打任何电话时,它会发回一个失败代码,我可以将其捕获在拦截器或类似物中。

文档不清楚,我什至不确定我是否误解了该操作的工作原理。 我查看了各种答案,包括一个关于倾斜时间和自定义基本 susi 流程的答案,但这对于应该是一个常见用例的东西来说似乎太过分了。

我正在使用以下位置提供的已发布示例,并进行更改以将其指向我的 B2C 区域。 其中配置了标准流程。 MSAL 1 和 2 代码会出现此问题 - 均不适用于此问题。 用于注册登录的 B2C 用户流程

https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/samples/msal-angular-v2-samples/angular11-b2c-sample

将此代码与我的设置一起使用,我可以使用创建的帐户登录 B2C,编辑我的个人资料并查看我的示例安全 api。

在 B2C 环境中,我按下撤销 session 按钮。 在客户端上,我尝试再次调用我的 api,它只是像以前一样调用它。

我怀疑将 go 更改为app.component.ts示例的这一部分:-

      this.msalBroadcastService.msalSubject$
      .pipe(
        filter((msg: EventMessage) => msg.eventType === EventType.LOGIN_FAILURE || msg.eventType === EventType.ACQUIRE_TOKEN_FAILURE),
        takeUntil(this._destroying$)
      )
      .subscribe((result: EventMessage) => {
        console.log(result);
        if (result.error instanceof AuthError) {
          // Check for forgot password error
          // Learn more about AAD error codes at https://docs.microsoft.com/azure/active-directory/develop/reference-aadsts-error-codes
          if (result.error.message.includes('AADB2C90118')) {

            // login request with reset authority
            let resetPasswordFlowRequest = {
              scopes: ["openid"],
              authority: this.policies.authorities.forgotPassword.authority,
            }

            this.login(resetPasswordFlowRequest);
          }
        }
      });

带有该示例的文档将您指向此处以了解其他事件:- https://docs.microsoft.com/en-gb/azure/active-directory/develop/reference-aadsts-error-codes但同样没有提及撤销的期望是什么。

我错过了什么?当某人在按下该按钮后尝试访问受保护的资源时,如何让示例应用程序强制他们再次登录?

谢谢

Azure AD 可以应用策略,包括仅在下一次请求登录或获取访问令牌时才撤销会话。

AAD 今天在无状态模式下工作,因此如果用户在其 web 应用程序中处于活动状态,因为 session 基于 cookies 仍然有效,并且/或运行的访问权仍然有效,并且/或默认情况下发布后),没有服务器端机制来强制注销用户或使已发布的访问令牌无效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM