Выполнить код после проверки подлинности Azure AD - PullRequest
1 голос
/ 12 апреля 2019

Мне удалось заставить этот пример работать https://azure.microsoft.com/en-us/resources/samples/active-directory-dotnet-webapp-openidconnect-aspnetcore/

У меня вопрос, как сделать что-то дополнительное после аутентификации. Например, на обычной странице входа в систему после проверки POST я мог установить запись в журнале для пользователя или установить дополнительные файлы cookie.

При интеграции с Azure AD я не уверен, куда поместить такой код, который должен выполняться только после аутентификации пользователя. URL ответа (путь обратного вызова) не работает для этой цели (я попытался поместить свою пользовательскую страницу здесь, и она действительно не была выполнена. Очевидно, промежуточное программное обеспечение создает специальный маршрут для этой конечной точки, чтобы он мог обработать данные для входа в систему)

Любая помощь приветствуется!

1 Ответ

1 голос
/ 12 апреля 2019

Существует несколько 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 выше документа, чтобы получить больше событий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...