如何将 Asp.Net 标识与 Azure AD 授权集成
是否可以通过OpenIdConnect将 Asp.Net 标识与Azure AD授权集成?我希望有一个两个授权提供程序,一个用于本地授权(通过标准 Asp.net 核心标识(,第二个通过Azure AD
_services
.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddOpenIdConnect(OpenIdConnectDefaults.AuthenticationScheme, options =>
{
options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.ClientId = clientId;
options.ClientSecret = clientSecret;
options.Authority = $"{baseAuthorityUrl}/{tenantId}/v2.0";
options.CallbackPath = new PathString(callBackPath);
options.Scope.Add("email");
options.Scope.Add("profile");
options.ResponseType = "code id_token";
options.SaveTokens = true;
options.GetClaimsFromUserInfoEndpoint = true;
options.TokenValidationParameters = new TokenValidationParameters
{
NameClaimType = "name"
};
})
这适用于 Azure AD 授权,但我无法将授权方法从 Azure AD 更改为 ASp.Net 标识。任何帮助都非常感谢
我建议使用默认的 ASP.NET 身份模板来启动项目:
-
使用 ASP.NET 标识创建新应用程序(个人用户帐户模板(。
-
使用迁移
Add-Migration Name
、Update-Database
为数据库设定种子。 -
添加您的 OIDC 提供商:
services .AddAuthentication(options => { options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme; options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme; }).AddCookie() .AddOpenIdConnect(OpenIdConnectDefaults.AuthenticationScheme, options => { options.SignInScheme = IdentityConstants.ExternalScheme; options.ClientId = ClientId; options.ClientSecret = ClientSecret; options.Authority = $"{baseAuthorityUrl}/{tenantId}/v2.0"; options.CallbackPath = new PathString("/signin-oidc"); options.Scope.Add("email"); options.Scope.Add("profile"); options.ResponseType = "code id_token"; options.SaveTokens = true; options.GetClaimsFromUserInfoEndpoint = true; options.TokenValidationParameters = new TokenValidationParameters { NameClaimType = "name" }; });
请确保对 SignInScheme 使用IdentityConstants.ExternalScheme
,否则标识将无法正确接受外部登录信息。
Asp.net 将创建一个与您的外部帐户关联的本地帐户,以便您可以使用本地身份系统执行授权。