gpt4 book ai didi

c# - 通过 Azure AD ADAL 的 ASP.NET MVC 用户身份验证

转载 作者:行者123 更新时间:2023-12-02 23:28:03 24 4
gpt4 key购买 nike

我有一个具有 Identity 2 身份验证的 ASP.NET MVC 应用程序,该应用程序部署为 Azure 应用程序。我想做的是在此应用程序中使用 Azure Active Directory 身份验证,以便在 Active Directory 中创建的用户(此 AD 是在应用程序所在的同一 Azure 订阅中创建的)可以在应用程序中进行身份验证。

对于标准 Active Directory,我将使用 LDAP(S) 协议(protocol)对域 Controller 进行身份验证,但在 Azure AD 中,我被告知要使用 ADAL 库,因为不支持 LDAP 协议(protocol)(​​?)。

我已经审查了 ADAL 的许多实现,但我不确定需要执行的确切操作流程。
来自官方Github repo我回顾了 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。您获取的访问 token 仅对该 API 有效。请注意,MSAL/v2 不使用资源,而是使用范围。

带有“common”的URL是您的权限。这表示您希望允许哪些帐户登录您的应用程序。Common 允许任何 Azure AD 租户的用户登录到您的应用程序。(那么您的应用程序也需要是 Multi-Tenancy 的)如果只想支持特定的 Azure AD 租户,请将其指定为 https://login.microsoftonline.com/your-aad-tenant-id。要保持 Multi-Tenancy 状态,请将其设置为 https://login.microsoftonline.com/common

您在应用中使用安全性较低的资源所有者密码凭据授予流程。您应该使用重载来弹出允许用户正确登录的 Web 浏览器。例如,在您的应用中,具有 MFA 的用户将无法登录。

关于c# - 通过 Azure AD ADAL 的 ASP.NET MVC 用户身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57134588/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com