Gus*_*sos 5 .net azure-active-directory openid-connect .net-core asp.net-core
是否有一种模式可以设计一个能够使用 Open Id Connect(在 Azure AD 中连接)和本地数据库对用户进行身份验证的应用程序?
我正在创建的应用程序的用户来自拥有 Azure Active Directory 的公司,但也有非该公司雇用的用户,这些用户必须使用该应用程序,因为他们未在 Azure AD 中注册。
不使用 Azure AD 的身份验证方法应使用本地数据库,而不是其他身份验证提供程序。
您可以使用 ASP.NET Identity 来管理数据库中的本地用户,并使用 Azure AD 作为外部身份提供程序,使 AAD 帐户能够登录您的应用程序。您可以识别 Azure AD 用户并链接到本地数据库中的用户,以便还可以管理与本地用户和 Azure AD 用户的关系/角色。
我将提供一个简单的代码示例来说明如何实现该功能:
使用 ASP.NET Identity(模板)创建新的 .net core 应用程序Individual User Accounts。
安装包:Microsoft.AspNetCore.Authentication.AzureAD.UI
修改 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();
Run Code Online (Sandbox Code Playgroud)修改 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"
},
Run Code Online (Sandbox Code Playgroud)
用户在登录过程中可以选择使用本地用户或AAD用户登录。
| 归档时间: |
|
| 查看次数: |
2126 次 |
| 最近记录: |