Существует несколько OpenIdConnectEvents , которые можно использовать для обеспечения контроля разработчика над процессом аутентификации.
Например, OnAuthorizationCodeReceived
вызывается после проверки токена безопасности, если в сообщении протокола присутствует код авторизации. Это событие можно использовать для получения токена доступа для доступа к API с использованием кода авторизации с использованием ADAL / MSAL в Code / Hybrid Flow:
private async Task OnAuthorizationCodeReceived(AuthorizationCodeReceivedContext context)
{
// Acquire a Token for the Graph API and cache it using ADAL. In the TodoListController, we'll use the cache to acquire a token for the Todo List API
string userObjectId = (context.Principal.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier"))?.Value;
var authContext = new AuthenticationContext(context.Options.Authority, new NaiveSessionCache(userObjectId, context.HttpContext.Session));
var credential = new ClientCredential(context.Options.ClientId, context.Options.ClientSecret);
var authResult = await authContext.AcquireTokenByAuthorizationCodeAsync(context.TokenEndpointRequest.Code,
new Uri(context.TokenEndpointRequest.RedirectUri, UriKind.RelativeOrAbsolute), credential, context.Options.Resource);
// Notify the OIDC middleware that we already took care of code redemption.
context.HandleCodeRedemption(authResult.AccessToken, context.ProtocolMessage.IdToken);
}
Пример ссылки на код: Вызов веб-API в веб-приложении ASP.NET Core с использованием Azure AD .
OnTokenValidated
может использоваться для добавления пользовательских утверждений пользователю во время аутентификации, проверьте pelase выше документа, чтобы получить больше событий.