我正在制作一个报告系统,允许用户使用 Azure 凭据登录,然后他们将订阅/取消订阅报告。
它目前正在使用 ASP.NET 身份,它可以完美运行,但需要更多的IT支持,人们忘记了他们的凭据等。
如何将 Azure 凭据保存到 ASP.NET 标识中?就像其他外部提供商(如Facebook等(一样,还是会避免一起使用 ASP.NET Identity并将电子邮件地址保存到表中并引用该表而不是 ASP.NET Identity版本?
启动.cs
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options => Configuration.Bind("AzureAd", options));
services.Configure<OpenIdConnectOptions>(AzureADDefaults.OpenIdScheme, options =>
{
options.Authority = options.Authority + "/v2.0/";
// Per the code below, this application signs in users in any Work and School
// accounts and any Microsoft Personal Accounts.
// If you want to direct Azure AD to restrict the users that can sign-in, change
// the tenant value of the appsettings.json file in the following way:
// - only Work and School accounts => 'organizations'
// - only Microsoft Personal accounts => 'consumers'
// - Work and School and Personal accounts => 'common'
// If you want to restrict the users that can sign-in to only one tenant
// set the tenant value in the appsettings.json file to the tenant ID of this
// organization, and set ValidateIssuer below to true.
// If you want to restrict the users that can sign-in to several organizations
// Set the tenant value in the appsettings.json file to 'organizations', set
// ValidateIssuer, above to 'true', and add the issuers you want to accept to the
// options.TokenValidationParameters.ValidIssuers collection
options.TokenValidationParameters.ValidateIssuer = false;
// Custom
options.Scope.Add("email");
//options.Scope.Add("profile");
options.SaveTokens = true;
options.GetClaimsFromUserInfoEndpoint = true;
options.TokenValidationParameters = new TokenValidationParameters
{
NameClaimType = "name"
};
});
感谢您的阅读。
编辑: 现在,我只是使用TokenValidified事件,然后使用UserManager和CreateAsync创建用户。
如果将 asp.net 核心标识与 Azure AD 一起使用作为外部标识提供者。使用 AAD 登录后,asp.net 标识将有助于创建本地用户,用户可以输入他的 AAD 电子邮件,以便在数据库中知道哪个本地用户与特定的 Azure AD 用户相关联。然后,您可以实现自定义逻辑,例如在本地数据库中进行授权。但本地用户不会影响 AAD 用户,更改本地账号的凭据不会影响云中的 AAD 用户凭据。下次,仍然需要使用 AAD 作为标识提供者而不是本地用户帐户登录。
不需要也不应将 Azure 凭据保存到本地数据库 中。如果要重置特定用户的凭据,可以使用Microsoft Graph更新用户。您的管理员 (IT( 用户应具有正确的权限(User.ReadWrite.All
或Directory.ReadWrite.All
委派权限(才能更改租户中其他用户的信息。
这是Microsoft图形身份验证文档,这是 ASP.NET 核心的代码示例。
我不认为将 Azure 凭据保存到 ASP.NET 标识是实现目标的有用方法。
如果要使用 Azure 凭据登录,则需要将 Azure AD 集成到 ASP.NET 核心 Web 应用中,使用户能够使用工作和学校帐户登录。
此处快速入门的详细步骤/示例:使用 Microsoft 将登录添加到 ASP.NET Core Web 应用和具有 ASP.NET 核心的 Azure Active Directory。