如何将 Asp.Net 标识与 Azure AD 授权结合使用



如何将 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 身份模板来启动项目:

  1. 使用 ASP.NET 标识创建新应用程序(个人用户帐户模板(。

  2. 使用迁移Add-Migration NameUpdate-Database 为数据库设定种子。

  3. 添加您的 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 将创建一个与您的外部帐户关联的本地帐户,以便您可以使用本地身份系统执行授权。

相关内容

  • 没有找到相关文章

最新更新