Надеюсь, что кто-то может помочь мне решить проблему, возникшую у меня с Azure AD B2C и веб-приложением ASP.NET Core 2.
Проблема связана с маршрутом signin-oidc.
Когда я запускаю его локально, все работает отлично, но когда я отправляю его в Azure, эта страница возвращает ошибку 400, см. Скриншот ниже для получения дополнительной информации:
Вот как выглядит локальный запуск:
Я борюсь с тем, как устранить эту проблему.Я просмотрел журналы в веб-приложении и журналы аудита для Azure ADB2C и, похоже, не могу найти корневую проблему.
Вот мой код для аутентификации:
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddCookie()
.AddOpenIdConnect("AzureADB2C", options =>
{
options.Authority = Configuration.GetValue<string>("AzureADB2COptions:Authority");
options.ClientId = Configuration.GetValue<string>("AzureADB2COptions:ClientId");
options.ClientSecret = Configuration.GetValue<string>("AzureADB2COptions:ClientSecret");
options.RequireHttpsMetadata = false;
options.MetadataAddress = Configuration.GetValue<string>("AzureADB2COptions:MetadataAddress");
options.ResponseType = OpenIdConnectResponseType.IdToken;
options.Scope.Clear();
options.Scope.Add("openid");
options.CallbackPath = new PathString(
Configuration.GetValue<string>("AzureADB2COptions:CallbackPath"));
options.ClaimsIssuer = "AzureADB2C";
options.TokenValidationParameters =
new TokenValidationParameters
{
NameClaimType = "name"
};
options.Events = new OpenIdConnectEvents
{
OnAuthorizationCodeReceived = (context) =>
{
return Task.CompletedTask;
},
OnAuthenticationFailed = (context) =>
{
return Task.CompletedTask;
},
OnTokenResponseReceived = (context) =>
{
return Task.CompletedTask;
},
OnTokenValidated = async (context) =>
{
if (context.SecurityToken is JwtSecurityToken token)
{
if (context.Principal.Identity is ClaimsIdentity identity)
{
...
}
}
}
};
});
Как я уже сказал, он работает локально, но не в Azure.
Любая помощь будет принята с благодарностью!