Какой механизм OWIN использует, чтобы определить, что пользователь аутентифицирован, прежде чем читать их утверждения?

#asp.net #asp.net-mvc #single-sign-on #owin #katana

#asp.net #asp.net-mvc #единый вход #owin #катана

Вопрос:

Я запустил пример проекта для ASP.Net MVC, который обеспечивает единый вход в Active Directory, и я использую это руководство Microsoft для справки.

После того, как пользователь нажал для входа и получает перенаправление на страницу входа в свою организацию, при возвращении в веб-приложение следующий код проверяет, что они аутентифицированы, и успешно считывает их утверждения:

 using Microsoft.Owin.Security;
using Microsoft.Owin.Security.Cookies;
using Microsoft.Owin.Security.OpenIdConnect;
using Owin;

@if (Request.IsAuthenticated)
{
    <dl>
        @foreach (var claim in System.Security.Claims.ClaimsPrincipal.Current.Claims)
        {
            <text>
                <dt>@claim.Type</dt>
                <dd>@claim.Value</dd>
            </text>
        }
    </dl>
}
  

Под капотом, что на самом деле представляет собой истинное значение Request.IsAuthenticated ?
Существуют ли утверждения по самой природе, или существует определенное значение, которое используется для предоставления результата перед чтением утверждений?

Ответ №1:

В этом руководстве предлагается добавить промежуточное программное обеспечение аутентификации в ваш конвейер запросов. В этом случае вы добавляете промежуточные программы для проверки подлинности UseCookieAuthentication и UseOpenIdConnectAuthentication для регистрации. Эти и любые другие, которые вы можете добавить (например, аутентификация токена на предъявителя JWT), используют свой собственный внутренний механизм для анализа запроса и присвоения идентификатора утверждений контексту вашего запроса. Например, проверка подлинности с использованием файлов cookie будет искать файл cookie, представляющий сохраненный сеанс, и расшифровывать и анализировать его данные в качестве идентификатора утверждений. IsAuthenticated буквально просто возвращает true, если доступно одно или несколько удостоверений.

Для получения более подробной информации вы, конечно, можете углубиться в исходный код. Например, промежуточное программное обеспечение OWIN для проверки подлинности файлов cookie находится здесь:https://github.com/aspnet/AspNetKatana/tree/dev/src/Microsoft.Owin.Security .Файлы cookie