[英]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.