Общие сведения о проверке подлинности в ASP.NET Core

Автор: Майк Роусос (Mike Rousos)

Проверка подлинности — это процесс установления личности пользователя. Авторизация — это процесс определения, есть ли у пользователя доступ к ресурсу. Проверка подлинности в ASP.NET Core выполняется через службу проверки подлинности IAuthenticationService, применяемую в специальном ПО промежуточного слоя. Служба проверки подлинности использует зарегистрированные обработчики для выполнения связанных с проверкой подлинности действий. Примеры таких действий:

  • Проверка подлинности пользователя.
  • Реагирование на ситуацию, когда не прошедший проверку подлинности пользователь пытается обратиться к ресурсу, доступ к которому ограничен.

Зарегистрированные обработчики проверки подлинности и их параметры конфигурации называются "схемами".

Схемы проверки подлинности задаются путем регистрации служб проверки подлинности в Program.cs следующими способами:

  • После вызова AddAuthentication, например, AddJwtBearer или AddCookie, выполняется вызов метода расширения для конкретной схемы. Эти методы расширения используются AuthenticationBuilder.AddScheme для регистрации схем с соответствующими параметрами.
  • Менее часто путем вызова AuthenticationBuilder.AddScheme напрямую.

Например, следующий код позволяет зарегистрировать службы и обработчики для схем проверки подлинности на основе файлов cookie и носителя JWT:

builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(JwtBearerDefaults.AuthenticationScheme,
        options => builder.Configuration.Bind("JwtSettings", options))
    .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme,
        options => builder.Configuration.Bind("CookieSettings", options));

В AddAuthentication параметр JwtBearerDefaults.AuthenticationScheme представляет собой имя схемы, применяемой по умолчанию, когда конкретная схема не запрашивается.

Если используется множество схем, в политиках (или атрибутах) авторизации можно указать конкретные схемы, применяемые для проверки подлинности пользователя. В приведенном выше примере можно специально задать использование схемы на основе файлов cookie, указав ее имя (по умолчанию — CookieAuthenticationDefaults.AuthenticationScheme, однако при вызове AddCookie можно указать другое).

В некоторых случаях AddAuthentication автоматически вызывается другими методами расширения. Например, при использовании ASP.NET Core Identity выполняется внутренний вызов AddAuthentication.

ПО промежуточного слоя для проверки подлинности добавляется в Program.cs путем вызова UseAuthentication. Вызов UseAuthentication регистрирует ПО промежуточного слоя, использующее зарегистрированные ранее схемы проверки подлинности. Следует вызывать UseAuthentication перед вызовом любого ПО промежуточного слоя, требующего проверки подлинности пользователей.

Проверка подлинности: основные понятия

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

Если зарегистрирована только одна схема проверки подлинности, она становится схемой по умолчанию. Если зарегистрировано несколько схем и схема по умолчанию не указана, в атрибуте авторизации необходимо указать схему, в противном случае возникает следующая ошибка:

InvalidOperationException: не указана проверка подлинностиScheme, и не найдено значение DefaultAuthenticateScheme. Схемы по умолчанию можно задать с помощью AddAuthentication(string defaultScheme) или AddAuthentication(Action<AuthenticationOptions> configureOptions).

DefaultScheme

Если зарегистрирована только одна схема проверки подлинности, одна схема проверки подлинности:

Чтобы отключить автоматическое использование одной схемы проверки подлинности в качестве DefaultSchemeвызова AppContext.SetSwitch("Microsoft.AspNetCore.Authentication.SuppressAutoDefaultScheme").

Схема проверки подлинности

Схема проверки подлинности служит для выбора обработчика проверки подлинности, отвечающего за создание правильного набора утверждений. Дополнительные сведения см. в статье Авторизация с использованием определенной схемы.

Схема проверки подлинности — это имя, соответствующее следующим элементам:

  • обработчик проверки подлинности;
  • параметры для настройки конкретного экземпляра обработчика.

Схемы выполняют роль механизма, определяющего действия проверки подлинности, проверочного запроса и запрета для связанного обработчика. Например, политика авторизации может использовать имена схем для указания схемы или схем авторизации, которые должны использоваться для проверки подлинности пользователя. При настройке проверки подлинности обычно задается схема проверки подлинности по умолчанию. Она применяется, если ресурс не запрашивает конкретную схему. Также доступны следующие возможности:

  • Можно указать разные схемы по умолчанию для действий проверки подлинности, проверочного запроса и запрета.
  • Можно объединить несколько схем в одну, используя схемы политик.

Обработчик проверки подлинности

Обработчик проверки подлинности:

  • является типом, который реализует действия схемы;
  • является производным от IAuthenticationHandler или AuthenticationHandler<TOptions>;
  • служит главным образом для проверки подлинности пользователей.

В зависимости от конфигурации схемы проверки подлинности и контекста входящего запроса обработчики проверки подлинности:

  • создают объекты AuthenticationTicket, представляющие удостоверение пользователя, если проверка подлинности прошла успешно;
  • возвращают "результат отсутствует" или "сбой", если проверка подлинности не пройдена;
  • Методы для сложных и запретных действий при попытке пользователей получить доступ к ресурсам:
    • отсутствуют права доступа (запрет);
    • не пройдена проверка подлинности (проверочный запрос).

RemoteAuthenticationHandler<TOptions> и AuthenticationHandler<TOptions>

RemoteAuthenticationHandler<TOptions> — это класс для проверки подлинности, для которого требуется шаг удаленной проверки подлинности. По завершении шага удаленной проверки подлинности обработчик выполняет обратный вызов к CallbackPath (задано обработчиком). Обработчик завершает этап проверки подлинности, используя сведения, передаваемые в путь обратного вызова HandleRemoteAuthenticateAsync. Этот метод используется OAuth 2.0 и OIDC, но не JWT и cookie из-за невозможности напрямую использовать заголовок носителя и cookie для проверки подлинности. В этом случае удаленно размещенный поставщик

  • является поставщиком проверки подлинности.
  • Примеры: Facebook, Twitter, Google, Microsoft и любой другой поставщик OIDC, который обрабатывает проверку подлинности пользователей с помощью механизма обработчиков.

Аутентификация

Действие проверки подлинности в схеме отвечает за получение удостоверения пользователя в зависимости от контекста запроса. Оно возвращает объект AuthenticateResult, который указывает, выполнена ли проверка подлинности, и, если да, включает удостоверение пользователя в билете проверки подлинности. См. раздел AuthenticateAsync. Примеры проверки подлинности:

  • Схема проверки подлинности на основе cookie получает удостоверение пользователя из файлов cookie.
  • Схема на основе носителя JWT десериализирует и проверяет токен носителя JWT для получения удостоверения пользователя.

Задача

Проверочный запрос вызывается процессом авторизации, когда пользователь, не прошедший проверку подлинности, запрашивает доступ к конечной точке, требующей проверку. Запрос выдается, например, если анонимный пользователь обращается к ресурсу с ограниченным доступом или щелкает какую-то ссылку для входа. Процесс авторизации выдает запрос с использованием указанных схем проверки подлинности. Если схемы не заданы, применяется схема по умолчанию. См. раздел ChallengeAsync. Примеры проверочных запросов:

  • Схема проверки подлинности на основе файлов cookie перенаправляет пользователя на страницу входа.
  • Схема на основе носителя JWT возвращает результат 401 с заголовком www-authenticate: bearer.

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

Запрет

Действие запрета в схеме проверки подлинности вызывается процессом авторизации, когда прошедший проверку подлинности пользователь пытается обратиться к ресурсу, к которому у него нет прав доступа. См. раздел ForbidAsync. Примеры запрета проверки подлинности:

  • Схема проверки подлинности на основе файлов cookie перенаправляет пользователя на страницу с сообщением об отказе в доступе.
  • Схема на основе носителя JWT возвращает результат 403.
  • Настраиваемая схема проверки подлинности перенаправляет пользователя на страницу, где он может запросить доступ к ресурсу.

Действие запрета может сообщить пользователю следующее:

  • Они прошли проверку подлинности.
  • Доступ к запрошенному ресурсу не разрешен.

Сведения о различиях между действиями проверочного запроса и запрета см. по следующим ссылкам:

Поставщики проверки подлинности для отдельного клиента

В ASP.NET Core нет встроенного решения для проверки подлинности в системе с несколькими клиентами. Хотя клиенты могут написать один с помощью встроенных функций, мы рекомендуем клиентам рассмотреть Orchard Core, ABP Framework или Finbuckle.MultiTenant для многотенантной проверки подлинности.

Orchard Core — это:

  • модульная платформа с открытым исходным кодом и инфраструктура для приложений с несколькими клиентами, созданная на основе ASP.NET Core;
  • система управления содержимым (CMS), созданная на основе этой платформы приложений.

Этот пример кода для Orchard Core содержит реализацию поставщиков проверки подлинности отдельно для каждого клиента.

ABP Framework поддерживает различные архитектурные шаблоны, включая модульность, микрослужбы, проектирование на основе домена и мультитенантность. См. Источник ABP Framework на GitHub.

Finbuckle.MultiTenant:

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

Дополнительные ресурсы

Автор: Майк Роусос (Mike Rousos)

Проверка подлинности — это процесс установления личности пользователя. Авторизация — это процесс определения, есть ли у пользователя доступ к ресурсу. Проверка подлинности в ASP.NET Core выполняется через службу проверки подлинности IAuthenticationService, применяемую в специальном ПО промежуточного слоя. Служба проверки подлинности использует зарегистрированные обработчики для выполнения связанных с проверкой подлинности действий. Примеры таких действий:

  • Проверка подлинности пользователя.
  • Реагирование на ситуацию, когда не прошедший проверку подлинности пользователь пытается обратиться к ресурсу, доступ к которому ограничен.

Зарегистрированные обработчики проверки подлинности и их параметры конфигурации называются "схемами".

Схемы проверки подлинности задаются путем регистрации служб проверки подлинности в Program.cs следующими способами:

  • После вызова AddAuthentication, например, AddJwtBearer или AddCookie, выполняется вызов метода расширения для конкретной схемы. Эти методы расширения используются AuthenticationBuilder.AddScheme для регистрации схем с соответствующими параметрами.
  • Менее часто путем вызова AuthenticationBuilder.AddScheme напрямую.

Например, следующий код позволяет зарегистрировать службы и обработчики для схем проверки подлинности на основе файлов cookie и носителя JWT:

builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(JwtBearerDefaults.AuthenticationScheme,
        options => builder.Configuration.Bind("JwtSettings", options))
    .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme,
        options => builder.Configuration.Bind("CookieSettings", options));

В AddAuthentication параметр JwtBearerDefaults.AuthenticationScheme представляет собой имя схемы, применяемой по умолчанию, когда конкретная схема не запрашивается.

Если используется множество схем, в политиках (или атрибутах) авторизации можно указать конкретные схемы, применяемые для проверки подлинности пользователя. В приведенном выше примере можно специально задать использование схемы на основе файлов cookie, указав ее имя (по умолчанию — CookieAuthenticationDefaults.AuthenticationScheme, однако при вызове AddCookie можно указать другое).

В некоторых случаях AddAuthentication автоматически вызывается другими методами расширения. Например, при использовании ASP.NET Core Identity выполняется внутренний вызов AddAuthentication.

ПО промежуточного слоя для проверки подлинности добавляется в Program.cs путем вызова UseAuthentication. Вызов UseAuthentication регистрирует ПО промежуточного слоя, использующее зарегистрированные ранее схемы проверки подлинности. Следует вызывать UseAuthentication перед вызовом любого ПО промежуточного слоя, требующего проверки подлинности пользователей.

Проверка подлинности: основные понятия

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

Автоматическая проверка схем не предусмотрена. Если схема по умолчанию не указана, ее следует указать в атрибуте авторизации. В противном случае возникает следующая ошибка:

InvalidOperationException: не указана проверка подлинностиScheme, и не найдено значение DefaultAuthenticateScheme. Схемы по умолчанию можно задать с помощью AddAuthentication(string defaultScheme) или AddAuthentication(Action<AuthenticationOptions> configureOptions).

Схема проверки подлинности

Схема проверки подлинности служит для выбора обработчика проверки подлинности, отвечающего за создание правильного набора утверждений. Дополнительные сведения см. в статье Авторизация с использованием определенной схемы.

Схема проверки подлинности — это имя, соответствующее следующим элементам:

  • обработчик проверки подлинности;
  • параметры для настройки конкретного экземпляра обработчика.

Схемы выполняют роль механизма, определяющего действия проверки подлинности, проверочного запроса и запрета для связанного обработчика. Например, политика авторизации может использовать имена схем для указания схемы или схем авторизации, которые должны использоваться для проверки подлинности пользователя. При настройке проверки подлинности обычно задается схема проверки подлинности по умолчанию. Она применяется, если ресурс не запрашивает конкретную схему. Также доступны следующие возможности:

  • Можно указать разные схемы по умолчанию для действий проверки подлинности, проверочного запроса и запрета.
  • Можно объединить несколько схем в одну, используя схемы политик.

Обработчик проверки подлинности

Обработчик проверки подлинности:

  • является типом, который реализует действия схемы;
  • является производным от IAuthenticationHandler или AuthenticationHandler<TOptions>;
  • служит главным образом для проверки подлинности пользователей.

В зависимости от конфигурации схемы проверки подлинности и контекста входящего запроса обработчики проверки подлинности:

  • создают объекты AuthenticationTicket, представляющие удостоверение пользователя, если проверка подлинности прошла успешно;
  • возвращают "результат отсутствует" или "сбой", если проверка подлинности не пройдена;
  • Методы для сложных и запретных действий при попытке пользователей получить доступ к ресурсам:
    • отсутствуют права доступа (запрет);
    • не пройдена проверка подлинности (проверочный запрос).

RemoteAuthenticationHandler<TOptions> и AuthenticationHandler<TOptions>

RemoteAuthenticationHandler<TOptions> — это класс для проверки подлинности, для которого требуется шаг удаленной проверки подлинности. По завершении шага удаленной проверки подлинности обработчик выполняет обратный вызов к CallbackPath (задано обработчиком). Обработчик завершает этап проверки подлинности, используя сведения, передаваемые в путь обратного вызова HandleRemoteAuthenticateAsync. Этот метод используется OAuth 2.0 и OIDC, но не JWT и cookie из-за невозможности напрямую использовать заголовок носителя и cookie для проверки подлинности. В этом случае удаленно размещенный поставщик

  • является поставщиком проверки подлинности.
  • Примеры: Facebook, Twitter, Google, Microsoft и любой другой поставщик OIDC, который обрабатывает проверку подлинности пользователей с помощью механизма обработчиков.

Аутентификация

Действие проверки подлинности в схеме отвечает за получение удостоверения пользователя в зависимости от контекста запроса. Оно возвращает объект AuthenticateResult, который указывает, выполнена ли проверка подлинности, и, если да, включает удостоверение пользователя в билете проверки подлинности. См. раздел AuthenticateAsync. Примеры проверки подлинности:

  • Схема проверки подлинности на основе cookie получает удостоверение пользователя из файлов cookie.
  • Схема на основе носителя JWT десериализирует и проверяет токен носителя JWT для получения удостоверения пользователя.

Задача

Проверочный запрос вызывается процессом авторизации, когда пользователь, не прошедший проверку подлинности, запрашивает доступ к конечной точке, требующей проверку. Запрос выдается, например, если анонимный пользователь обращается к ресурсу с ограниченным доступом или щелкает какую-то ссылку для входа. Процесс авторизации выдает запрос с использованием указанных схем проверки подлинности. Если схемы не заданы, применяется схема по умолчанию. См. раздел ChallengeAsync. Примеры проверочных запросов:

  • Схема проверки подлинности на основе файлов cookie перенаправляет пользователя на страницу входа.
  • Схема на основе носителя JWT возвращает результат 401 с заголовком www-authenticate: bearer.

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

Запрет

Действие запрета в схеме проверки подлинности вызывается процессом авторизации, когда прошедший проверку подлинности пользователь пытается обратиться к ресурсу, к которому у него нет прав доступа. См. раздел ForbidAsync. Примеры запрета проверки подлинности:

  • Схема проверки подлинности на основе файлов cookie перенаправляет пользователя на страницу с сообщением об отказе в доступе.
  • Схема на основе носителя JWT возвращает результат 403.
  • Настраиваемая схема проверки подлинности перенаправляет пользователя на страницу, где он может запросить доступ к ресурсу.

Действие запрета может сообщить пользователю следующее:

  • Они прошли проверку подлинности.
  • Доступ к запрошенному ресурсу не разрешен.

Сведения о различиях между действиями проверочного запроса и запрета см. по следующим ссылкам:

Поставщики проверки подлинности для отдельного клиента

В ASP.NET Core нет встроенного решения для проверки подлинности в системе с несколькими клиентами. Клиенты могут сами создать для себя такое решение на основе встроенных функций, но мы рекомендуем использовать для этой цели Orchard Core или ABP Framework.

Orchard Core — это:

  • модульная платформа с открытым исходным кодом и инфраструктура для приложений с несколькими клиентами, созданная на основе ASP.NET Core;
  • система управления содержимым (CMS), созданная на основе этой платформы приложений.

Этот пример кода для Orchard Core содержит реализацию поставщиков проверки подлинности отдельно для каждого клиента.

ABP Framework поддерживает различные архитектурные шаблоны, включая модульность, микрослужбы, проектирование на основе домена и мультитенантность. См. Источник ABP Framework на GitHub.

Дополнительные ресурсы

Автор: Майк Роусос (Mike Rousos)

Проверка подлинности — это процесс установления личности пользователя. Авторизация — это процесс определения, есть ли у пользователя доступ к ресурсу. Проверка подлинности в ASP.NET Core выполняется через службу проверки подлинности IAuthenticationService, применяемую в специальном ПО промежуточного слоя. Служба проверки подлинности использует зарегистрированные обработчики для выполнения связанных с проверкой подлинности действий. Примеры таких действий:

  • Проверка подлинности пользователя.
  • Реагирование на ситуацию, когда не прошедший проверку подлинности пользователь пытается обратиться к ресурсу, доступ к которому ограничен.

Зарегистрированные обработчики проверки подлинности и их параметры конфигурации называются "схемами".

Схемы проверки подлинности задаются путем регистрации служб проверки подлинности в Startup.ConfigureServices следующими способами:

  • После вызова AddAuthentication (например, AddJwtBearer или AddCookie) выполняется вызов метода расширения для конкретной схемы. Эти методы расширения используются AuthenticationBuilder.AddScheme для регистрации схем с соответствующими параметрами.
  • Менее часто путем вызова AuthenticationBuilder.AddScheme напрямую.

Например, следующий код позволяет зарегистрировать службы и обработчики для схем проверки подлинности на основе файлов cookie и носителя JWT:

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(JwtBearerDefaults.AuthenticationScheme,
        options => Configuration.Bind("JwtSettings", options))
    .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme,
        options => Configuration.Bind("CookieSettings", options));

В AddAuthentication параметр JwtBearerDefaults.AuthenticationScheme представляет собой имя схемы, применяемой по умолчанию, когда конкретная схема не запрашивается.

Если используется множество схем, в политиках (или атрибутах) авторизации можно указать конкретные схемы, применяемые для проверки подлинности пользователя. В приведенном выше примере можно специально задать использование схемы на основе файлов cookie, указав ее имя (по умолчанию — CookieAuthenticationDefaults.AuthenticationScheme, однако при вызове AddCookie можно указать другое).

В некоторых случаях AddAuthentication автоматически вызывается другими методами расширения. Например, при использовании ASP.NET Core Identity выполняется внутренний вызов AddAuthentication.

ПО промежуточного слоя для проверки подлинности добавляется в Startup.Configure путем вызова UseAuthentication. Вызов UseAuthentication регистрирует ПО промежуточного слоя, использующее зарегистрированные ранее схемы проверки подлинности. Следует вызывать UseAuthentication перед вызовом любого ПО промежуточного слоя, требующего проверки подлинности пользователей. При использовании маршрутизации конечных точек метод UseAuthentication необходимо вызывать в следующем порядке:

  • После UseRouting, чтобы были доступны сведения о маршрутизации, необходимые для принятия решений о проверке подлинности.
  • До UseEndpoints, чтобы пользователи проходили проверку подлинности перед доступом к конечным точкам.

Проверка подлинности: основные понятия

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

Автоматическая проверка схем не предусмотрена. Если схема по умолчанию не указана, ее следует указать в атрибуте авторизации. В противном случае возникает следующая ошибка:

InvalidOperationException: не указана проверка подлинностиScheme, и не найдено значение DefaultAuthenticateScheme. Схемы по умолчанию можно задать с помощью AddAuthentication(string defaultScheme) или AddAuthentication(Action<AuthenticationOptions> configureOptions).

Схема проверки подлинности

Схема проверки подлинности служит для выбора обработчика проверки подлинности, отвечающего за создание правильного набора утверждений. Дополнительные сведения см. в статье Авторизация с использованием определенной схемы.

Схема проверки подлинности — это имя, соответствующее следующим элементам:

  • обработчик проверки подлинности;
  • параметры для настройки конкретного экземпляра обработчика.

Схемы выполняют роль механизма, определяющего действия проверки подлинности, проверочного запроса и запрета для связанного обработчика. Например, политика авторизации может использовать имена схем для указания схемы или схем авторизации, которые должны использоваться для проверки подлинности пользователя. При настройке проверки подлинности обычно задается схема проверки подлинности по умолчанию. Она применяется, если ресурс не запрашивает конкретную схему. Также доступны следующие возможности:

  • Можно указать разные схемы по умолчанию для действий проверки подлинности, проверочного запроса и запрета.
  • Можно объединить несколько схем в одну, используя схемы политик.

Обработчик проверки подлинности

Обработчик проверки подлинности:

  • является типом, который реализует действия схемы;
  • является производным от IAuthenticationHandler или AuthenticationHandler<TOptions>;
  • служит главным образом для проверки подлинности пользователей.

В зависимости от конфигурации схемы проверки подлинности и контекста входящего запроса обработчики проверки подлинности:

  • создают объекты AuthenticationTicket, представляющие удостоверение пользователя, если проверка подлинности прошла успешно;
  • возвращают "результат отсутствует" или "сбой", если проверка подлинности не пройдена;
  • Методы для сложных и запретных действий при попытке пользователей получить доступ к ресурсам:
    • отсутствуют права доступа (запрет);
    • не пройдена проверка подлинности (проверочный запрос).

RemoteAuthenticationHandler<TOptions> и AuthenticationHandler<TOptions>

RemoteAuthenticationHandler<TOptions> — это класс для проверки подлинности, для которого требуется шаг удаленной проверки подлинности. По завершении шага удаленной проверки подлинности обработчик выполняет обратный вызов к CallbackPath (задано обработчиком). Обработчик завершает этап проверки подлинности, используя сведения, передаваемые в путь обратного вызова HandleRemoteAuthenticateAsync. Этот метод используется OAuth 2.0 и OIDC, но не JWT и cookie из-за невозможности напрямую использовать заголовок носителя и cookie для проверки подлинности. В этом случае удаленно размещенный поставщик

  • является поставщиком проверки подлинности.
  • Примеры: Facebook, Twitter, Google, Microsoft и любой другой поставщик OIDC, который обрабатывает проверку подлинности пользователей с помощью механизма обработчиков.

Аутентификация

Действие проверки подлинности в схеме отвечает за получение удостоверения пользователя в зависимости от контекста запроса. Оно возвращает объект AuthenticateResult, который указывает, выполнена ли проверка подлинности, и, если да, включает удостоверение пользователя в билете проверки подлинности. См. раздел AuthenticateAsync. Примеры проверки подлинности:

  • Схема проверки подлинности на основе cookie получает удостоверение пользователя из файлов cookie.
  • Схема на основе носителя JWT десериализирует и проверяет токен носителя JWT для получения удостоверения пользователя.

Задача

Проверочный запрос вызывается процессом авторизации, когда пользователь, не прошедший проверку подлинности, запрашивает доступ к конечной точке, требующей проверку. Запрос выдается, например, если анонимный пользователь обращается к ресурсу с ограниченным доступом или щелкает какую-то ссылку для входа. Процесс авторизации выдает запрос с использованием указанных схем проверки подлинности. Если схемы не заданы, применяется схема по умолчанию. См. раздел ChallengeAsync. Примеры проверочных запросов:

  • Схема проверки подлинности на основе файлов cookie перенаправляет пользователя на страницу входа.
  • Схема на основе носителя JWT возвращает результат 401 с заголовком www-authenticate: bearer.

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

Запрет

Действие запрета в схеме проверки подлинности вызывается процессом авторизации, когда прошедший проверку подлинности пользователь пытается обратиться к ресурсу, к которому у него нет прав доступа. См. раздел ForbidAsync. Примеры запрета проверки подлинности:

  • Схема проверки подлинности на основе файлов cookie перенаправляет пользователя на страницу с сообщением об отказе в доступе.
  • Схема на основе носителя JWT возвращает результат 403.
  • Настраиваемая схема проверки подлинности перенаправляет пользователя на страницу, где он может запросить доступ к ресурсу.

Действие запрета может сообщить пользователю следующее:

  • Они прошли проверку подлинности.
  • Доступ к запрошенному ресурсу не разрешен.

Сведения о различиях между действиями проверочного запроса и запрета см. по следующим ссылкам:

Поставщики проверки подлинности для отдельного клиента

Платформа ASP.NET Core не имеет встроенного решения для проверки подлинности в системе с несколькими клиентами. Хотя клиенты могут создавать приложения с мультитенантной проверкой подлинности, рекомендуется использовать одну из следующих исполняющих сред ASP.NET Core с поддержкой мультитенантной проверки подлинности:

Orchard Core

Orchard Core. Этот пример кода для Orchard Core содержит реализацию поставщиков проверки подлинности отдельно для каждого клиента.

ABP Framework

ABP Framework поддерживает различные архитектурные шаблоны, включая модульность, микрослужбы, проектирование на основе домена и мультитенантность. См. Источник ABP Framework на GitHub.

Дополнительные ресурсы