如何将Asp.Net身份与Azure AD授权集成
是否可以通过OpenIdConnect将Asp.Net Identity与Azure AD授权集成在一起?我想同时拥有两个授权提供者,一个用于本地授权(通过standart 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 Identity。任何帮助都非常感激
答案 0 :(得分:0)
我建议使用默认的ASP.NET Identity模板启动项目:
使用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将创建一个与您的外部帐户相关联的本地帐户,以便您可以使用本地身份系统执行授权。