Аутентификация Azure AD (Entra ID) работает правильно, но токены Azure AD B2C постоянно отклоняются. Мы будем очень признательны за любые дополнительные сведения, исправления или рабочий пример кода.
Я пытаюсь настроить [b]двойную аутентификацию JWT[/b] в своем веб-API ASP.NET Core. Мой API должен принимать токены от: [list] [*][b]Azure AD B2C[/b]
[*][b]Azure AD (Entra ID)[/b]
[/list] Я использую [b]PolicyScheme[/b] ([code]DualAuth[/code]), чтобы автоматически определить, какой токен используется, на основе эмитента JWT. [code]services .AddAuthentication("DualAuth") // 1. Azure AD B2C .AddJwtBearer("AzureAdB2cAuth", options => { options.Audience = configuration["AzureAdB2c:Audience"]; options.Authority = configuration["AzureAdB2c:Authority"];
if (!string.IsNullOrEmpty(authorization) && authorization.StartsWith("Bearer ")) { var token = authorization.Substring("Bearer ".Length).Trim(); var handler = new JwtSecurityTokenHandler();
if (handler.CanReadToken(token)) { var jwt = handler.ReadJwtToken(token); var issuer = jwt.Issuer;
if (issuer.Equals(configuration["AzureAdB2c:Issuer"], StringComparison.OrdinalIgnoreCase)) return "AzureAdB2cAuth"; } }
return "AzureAdAuth"; // fallback }; });
services.AddAuthorization(options => { var commonPolicy = new AuthorizationPolicyBuilder("AzureAdB2cAuth", "AzureAdAuth") .RequireAuthenticatedUser() .Build();
"AzureAd": { "Issuer": "https://sts.windows.net/tenantid/", "Audience": "api://client-id", "Authority": "https://login.microsoftonline.com/tenantid" } [/code] Аутентификация Azure AD (Entra ID) работает правильно, но токены Azure AD B2C постоянно отклоняются. Мы будем очень признательны за любые дополнительные сведения, исправления или рабочий пример кода.