簡體   English   中英

當應用程序在 Azure 中時,如何使用 MSAL 進行身份驗證?

[英]How can i use MSAL to authenticate when the app is in Azure?

我在 Azure 中有一個 Web 應用程序,用戶通過瀏覽器中的鏈接(例如 https://<SITE_NAME>.azurewebsites.net)進行連接。

我正在考慮使用 Graph API,並在 Azure 中的應用程序上實現如下

       string clientId = "<CLIENT_ID>";
       string clientSecret = "<CLIENT_SECRET>";

        var app = ConfidentialClientApplicationBuilder
         .Create(clientId)
         .WithClientSecret(clientSecret)             
         .WithRedirectUri("http://localhost")
         .Build();

        string[] scopes = new string[]
        {
           "https://graph.microsoft.com/user.read"
        };
        var result = await app.AcquireTokenInteractive(scopes)
            .ExecuteAsync();

//此時如果成功登錄,用戶將獲得一個訪問令牌,他們可以用來進行其他api調用。

如果我的應用程序托管在 Azure 中,AcquireTokenInteractive 行將彈出“登錄到您的帳戶”Microsoft 窗口,並且該窗口將在 Azure 服務器上彈出,這是正確的還是我遺漏了什么?

如果上述內容不正確,我是否必須手動執行 1. 獲取授權令牌 2. 使用該授權令牌獲取訪問令牌?

如果這是必需的方式,是否有示例應用程序顯示 c# 中所需的步驟?

  1. 如果我的應用程序托管在 Azure 中,則 AcquireTokenInteractive 行將彈出“登錄您的帳戶”
    Microsoft 窗口和 Azure 服務器上將彈出該窗口,這是正確的還是我遺漏了什么?

是的,它是正確的,行 AcquireTokenInteractive 將彈出“登錄您的帳戶”,AcquireTokenInteractive 方法將獲取訪問令牌,MSAL 將此令牌保存在其令牌緩存中。 Azure 服務器上將彈出 Microsoft 窗口。

當您使用適用於 .NET 的 Microsoft 身份驗證庫 (MSAL.NET) 獲取訪問令牌時,該令牌將被緩存。

當應用程序需要令牌時,它應該首先調用 AcquireTokenSilent 方法來驗證緩存中是否存在可接受的令牌。

在許多情況下,可以根據緩存中的令牌獲取具有更多范圍的另一個令牌。

也可以在令牌即將到期時刷新令牌(因為令牌緩存還包含刷新令牌)。

推薦的模式是首先調用 AcquireTokenSilent 方法。 如果 AcquireTokenSilent 失敗,則使用其他方法獲取令牌。

您可以參考以下鏈接了解更多信息:

https://github.com/Azure-Samples/ms-identity-aspnet-webapi-onbehalfof

https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-net-acquire-token-silently

  1. 如果上述內容不正確,我是否必須手動執行 1. 獲取授權令牌 2. 使用該授權令牌獲取訪問令牌?
    如果這是必需的方式,是否有示例應用程序顯示 c# 中所需的步驟?

但是,如果您想手動獲取令牌,以下代碼顯示了使用Microsoft.Identity.Web在家庭控制器中執行此操作的示例。

它使用 REST API(而不是 Microsoft Graph SDK)調用 Microsoft Graph。

要獲取令牌以調用下游 API,您需要注入

ITokenAcquisition服務通過在您的控制器的構造函數(或您的頁面構造函數,如果您使用 Blazor)中的依賴注入,

並且您在控制器操作中使用它,在守護程序場景中為用戶 ( GetAccessTokenForUserAsync ) 或應用程序本身 ( GetAccessTokenForAppAsync ) 獲取令牌。

控制器方法受[Authorize]屬性保護,確保只有經過身份驗證的用戶才能使用 Web 應用程序。

您可以通過以下鏈接瀏覽示例應用程序:

在調用 Web API 的 Web 應用中獲取令牌 - Microsoft 身份平台 | 微軟文檔

暫無
暫無

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

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