.net核心中的混合身份验证与Open Id Connect和本地数据库

问题描述 投票:1回答:2

是否有一种模式可以设计一个能够使用Open Id Connect(在Azure AD中连接)和本地数据库对用户进行身份验证的应用程序?

我正在创建的应用程序将拥有来自具有Azure Active Directory的公司的用户,但也有未被该公司雇用的用户必须使用该应用程序,因为他们未在Azure AD中注册。

没有Azure AD的身份验证方法应使用本地数据库,而不是其他身份验证提供程序。

.net asp.net-core .net-core azure-active-directory openid-connect
2个回答
0
投票

您可以使用ASP.NET Identity管理数据库中的本地用户,并使用Azure AD作为外部身份提供程序,使AAD帐户能够在您的应用程序中登录。您可以识别Azure AD用户并链接到本地​​数据库中的用户,以便您还可以管理与本地用户和Azure AD用户的关系/角色。

我将提供一个简单的代码示例来说明如何实现该功能:

  1. 使用ASP.NET Identity(Individual User Accounts模板)创建新的.net核心应用程序。
  2. 安装包:Microsoft.AspNetCore.Authentication.AzureAD.UI
  3. 修改Startup.cs以启用Azure AD身份验证: services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer( Configuration.GetConnectionString("DefaultConnection"))); services.AddDefaultIdentity<IdentityUser>() .AddEntityFrameworkStores<ApplicationDbContext>(); services.AddAuthentication(sharedOptions => { }).AddAzureAD(options => Configuration.Bind("AzureAd", options)).AddCookie();
  4. 修改appsettings.json以添加Azure AD应用程序设置: "AzureAd": { "Instance": "https://login.microsoftonline.com/", "Domain": "xxx.onmicrosoft.com", "TenantId": "xxxxxx-xxxxx-4f08-b544-b1eb456f228d", "ClientId": "xxxxx-xxxxx-4717-9821-e4f718fbece4", "CallbackPath": "/signin-oidc", "CookieSchemeName": "Identity.External" }, 用户可以在登录过程中选择使用本地用户或AAD用户登录。

0
投票

您可以使用IdentityServer作为“联合网关”,它接受各种身份验证方法(Azure AD,本地用户等),并将它们公开为单个统一的OpenID Connect服务器。这使得将新应用程序集成到您的环境中变得容易,因为它们具有用户和单个端点的单一视图,并且“网关”可以单独负责处理认证方法和协议。

有关模式的详细信息,请参阅此页面:

http://docs.identityserver.io/en/latest/topics/federation_gateway.html

enter image description here

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.