Как называется схема для идентификации?

Допустим, я использую следующее:

services.AddIdentity<User, UserRole>()
        .AddEntityFrameworkStores<AppDbContext>();

Какое имя схемы аутентификации устанавливается? Я не нашел это ни в одной документации. Я пытался найти класс с именами IdentityAuthenticationDefaults а также IdentityDefaults но ничего не нашел. Я пробовал "Cookies", но это не установлено. Приложение работает хорошо, так что, конечно, есть некоторые имена схем.

2 ответа

Решение

IdentityConstants это класс, который вы ищете здесь. Вот соответствующая часть для вашего конкретного вопроса (удалена xmldocs):

public class IdentityConstants
{
    private static readonly string CookiePrefix = "Identity";

    public static readonly string ApplicationScheme = CookiePrefix + ".Application";

    ...
}

IdentityConstants.ApplicationScheme используется в качестве DefaultAuthenticateScheme - само значение оказывается Identity.Application,

Схемы настраиваются здесь:

services.AddAuthentication(options =>
{
    options.DefaultAuthenticateScheme = IdentityConstants.ApplicationScheme;
    options.DefaultChallengeScheme = IdentityConstants.ApplicationScheme;
    options.DefaultSignInScheme = IdentityConstants.ExternalScheme;
})

Вот ссылки на справочные документы по API:

  • IdentityConstants
  • IdentityConstants.ApplicationScheme

Глупо, что в IdentityConstants есть статические строковые ссылки, но они не могут использоваться атрибутом класса или метода AuthorizeAttribute для установки свойства AuthenticationSchemes, поскольку оно должно быть постоянным значением. Я создал простой класс общих констант, который содержит все необходимое, чтобы обойти это, но хочу, чтобы MS предоставила что-то OOTB.

      public class SharedConstants
{
    public const string IdentityApplicationScheme = "Identity.Application";
}

Тогда вы можете использовать это так.

      [Authorize(AuthenticationSchemes = SharedConstants.IdentityApplicationScheme)]
Другие вопросы по тегам