簡體   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