簡體   English   中英

如何從 angular 調用 B2C Graph API?

[英]How can I call B2C Graph API from angular?

我試圖了解如何調用圖形 API 以使用 msal-angular ("@azure/msal-angular": "^0.1.4") 拉回一些用戶信息。 我一直無法為此找到工作示例/教程。

我已經設置了 Azure AD B2C。 使用用戶名作為登錄密鑰創建了一個本地帳戶提供程序。 我創建了注冊/登錄流程並注冊了一個 webapp 'b2c-app01'。 對於 API 權限,我給了應用“user.read”權限。

我已登錄使用以下 msal 配置

    MsalModule.forRoot({
      clientID: "00000000-0000-0000-0000-000000000000", // b2c-app01 in app registration
      authority: "https://b2c-app01.b2clogin.com/tfp/b2c-app01.onmicrosoft.com/B2C_1_SignInOrSignUp",
      validateAuthority: false,

接下來,我嘗試按照此示例https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-v2-javascript-spa訪問圖形 API。

但是,我無法通過acquireTokenSilent 調用。 我通過 ['user.read'] 作為范圍,並收到以下錯誤

        this._user = this.authService.getUser();
        let tokenResponse = await this.authService.acquireTokenSilent(
            ['user.read'],
        );
        console.log(tokenResponse);

The scope 'user.read' provided in the request is not supported.

我嘗試將用戶中返回的身份提供程序 url 用於權限屬性,但隨后出現 CORS 錯誤。 我什至不知道這是否有效,所以我沒有更多地研究 CORS 錯誤

        this._user = this.authService.getUser();
        let tokenResponse = await this.authService.acquireTokenSilent(
            ['user.read'],
            this._user.identityProvider,
            this._user,
        );
        console.log(tokenResponse);

blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. .

關於我做錯了什么或我缺少什么的任何建議?

編輯:

下面是api權限在此處輸入圖片說明

無法向 AAD B2C 應用注冊授予 Graph API 權限。 根據您所說的,您已在 B2C 目錄中創建了 AAD 應用程序注冊。

這是不可能的“我創建了注冊/登錄流程並注冊了一個 web 應用程序‘b2c-app01’。 對於 API 權限,我給了應用‘user.read’權限。”

您提到了 AAD B2C,但您的 JS 示例是針對 AAD 的。 對於 AAD B2C 用例,返回用戶令牌中的所有必需數據。 對於任何其他圖形 API 調用(例如查詢用戶組),請調用您自己的 API,該 API 使用客戶端憑據針對 B2C 租戶中的 AAD App Reg 對時間圖形 API 進行身份驗證。

您是否嘗試過在User.Read范圍前面加上圖形 URL,即https://graph.microsoft.com/User.Read 只是在黑暗中刺...

使用 B2C 應用調用 Microsoft Graph 的場景描述如下:

https://docs.microsoft.com/en-us/azure/active-directory-b2c/microsoft-graph-get-started?tabs=applications

那篇文章實現的 OAUTH 場景是client_credentials 流,也稱為服務帳戶,或守護進程。 我認為他們涵蓋的主要用例是使用 Azure DevOps 來維護身份策略,並通過 Graph 對 DevOps 部署管道進行身份驗證以自動上傳策略。

理想情況下,可以支持其他用戶交互 oauth 流,例如代表隱式授權流。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM