![](/img/trans.png)
[英]Authenticate using Azure AD B2C in a NativeScript angular Application
[英]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
在我的 Angular 应用程序中,我无法强制我的用户在后续调用安全资源时再次登录。 我希望当我在按下此按钮后拨打任何电话时,它会发回一个失败代码,我可以将其捕获在拦截器或类似物中。
文档不清楚,我什至不确定我是否误解了该操作的工作原理。 我查看了各种答案,包括一个关于倾斜时间和自定义基本 susi 流程的答案,但这对于应该是一个常见用例的东西来说似乎太过分了。
我正在使用以下位置提供的已发布示例,并进行更改以将其指向我的 B2C 区域。 其中配置了标准流程。 MSAL 1 和 2 代码会出现此问题 - 均不适用于此问题。
将此代码与我的设置一起使用,我可以使用创建的帐户登录 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.