簡體   English   中英

通過Azure AD ADAL的ASP.NET MVC用戶身份驗證

[英]ASP.NET MVC User Authentication through Azure AD ADAL

我有一個帶有Identity 2身份驗證的ASP.NET MVC應用程序,該應用程序被部署為Azure應用程序。 我想做的是在此應用程序中使用Azure Active Directory身份驗證,以便在Active Directory中創建的用戶(此AD在與應用程序駐留的Azure相同的訂閱中創建)可以在應用程序中進行身份驗證。

使用標准的Active Directory,我將使用LDAP(S)協議與域控制器進行身份驗證,但是在Azure AD中,由於不支持LDAP協議,被告知使用ADAL庫。

我已經審查了ADAL的許多實現方式,但是我不確定需要執行的確切操作流程。
從官方Github上回購我回顧了AdalDesktopTestApp項目,並總結了認證機制如下:

private const string ClientId = "1950a258-227b-4e31-a9cf-717495945fc2";
private const string User = ""; // can also be empty string for testing IWA and U/P
private const string Resource = "https://graph.windows.net";



static void main(string[] args) {
     var context = new AuthenticationContext("https://login.windows.net/common", true, new FileCache());
     RunAppAsync(context).Wait();
}

private static async Task RunAppAsync(AuthenticationContext context) {
    Task<AuthenticationResult> authTask = null;
    authTask = context.AcquireTokenAsync(Resource, ClientId, new UserPasswordCredential(User, Console.ReadLine()));
    await FetchTokenAsync(authTask).ConfigureAwait(false);
}

private static async Task FetchTokenAsync(Task<AuthenticationResult> authTask)
{
    await authTask.ConfigureAwait(false);

    Console.BackgroundColor = ConsoleColor.DarkGreen;
    Console.WriteLine("Token is {0}", authTask.Result.AccessToken);
    Console.ResetColor();
}

如果從Azure應用程序運行此代碼,ClientId會變成什么?

在我的情況下, Resource變量和AuthenticationContext的第一個參數“ https://login.windows.net/common ”是否保持不變? 如何指定在Azure中創建的Active Directory域的名稱? 使用在Azure AD中手動創建的用戶帳戶進行身份驗證時,這是正確的操作流程嗎?

是的,不支持LDAP。 您需要使用OAuth / OpenID Connect(通過ADAL或MSAL可以更輕松地進行操作)(這是更新的版本,可與v2端點一起使用)。

客戶端ID是您在Azure AD中注冊的應用程序的ID。 有時也稱為應用程序ID。 資源標識您要呼叫的內容。 樣本中的資源是Azure AD Graph API的標識符。 您將使用https://graph.microsoft.com作為更新的Microsoft Graph API。 您獲取的訪問令牌僅對該API有效。 請注意,MSAL / v2不使用資源,而是使用范圍。

具有“ common”的URL是您的權限。 這說明您要允許哪些帳戶登錄您的應用程序。 Common允許來自任何Azure AD租戶的用戶登錄到您的應用程序。 (然后,您的應用程序也需要是多租戶)。如果只想支持特定的Azure AD租戶,請將其指定為https://login.microsoftonline.com/your-aad-tenant-id 要使其保持多租戶狀態,請將其設置為https://login.microsoftonline.com/common

您正在應用中使用不太安全的資源所有者密碼憑據授予流程。 您應該使用重載彈出一個Web瀏覽器,該瀏覽器允許用戶正確登錄。 例如,在您的應用中,擁有MFA的用戶將無法登錄。

暫無
暫無

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

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