Я использую аутентификацию Azure AD B2 C в моем ASP. NET Core веб-приложении. Я также хочу получить уведомление после успешной аутентификации пользователя, чтобы я мог добавить пользовательские роли и для этого я пытаюсь зарегистрировать обратный вызов OnAuthorizationCodeReceived. Но как только я это делаю, я получаю следующее исключение ...
OpenIdConnectProtocolException: сообщение содержит ошибку: 'invalid_request', error_description: 'AADB2C90079: клиенты должны отправлять client_secret при погашении конфиденциального гранта.
Исходный код в Setup.cs, который работает, это ...
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(AzureADB2CDefaults.AuthenticationScheme)
.AddAzureADB2C(options => Configuration.Bind("AzureAdB2C", options));
services.AddControllersWithViews();
services.AddRazorPages();
}
Но когда я добавляю следующий код в функцию ConfigureServices () ...
services.Configure<OpenIdConnectOptions>(AzureADB2CDefaults.OpenIdScheme, options =>
{
options.ResponseType = OpenIdConnectResponseType.Code;
options.Events = new OpenIdConnectEvents
{
OnAuthorizationCodeReceived = OnAuthorizationCodeReceived,
};
});
public async Task OnAuthorizationCodeReceived(AuthorizationCodeReceivedContext context)
{
}
It начинает генерировать вышеупомянутое исключение, когда я нажимаю кнопку входа. Похоже, я могу аутентифицироваться и получаю обратный вызов OnAuthorizationCodeReceived. Но когда управление возвращается из OnAuthorizationCodeReceived, что исключение происходит со следующими стек ...
Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.RedeemAuthorizationCodeAsyn c (OpenIdConnectMessage tokenEndpointRequest) Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.HandleRemoteAuthenticateAsyn c ()
Пожалуйста, дайте мне знать, что здесь не так?