Есть ли разница между схемой аутентификации и протоколом аутентификации? - PullRequest
0 голосов
/ 01 марта 2019

В настоящее время я работаю над небольшой статьей о возможностях аутентификации в Asp .Net Core.Аутентификация для меня совершенно новая, и я запутался, потому что некоторые источники говорят о схемах аутентификации, а некоторые - о протоколах аутентификации.Есть ли различия?Или схема в данном случае является синонимом протокола?

Например: в этом источнике NTLM описывается как схема: https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/understanding-http-authentication

здесь он указан в качестве протокола: https://en.wikipedia.org/wiki/Authentication_protocol

1 Ответ

0 голосов
/ 01 марта 2019

OpenIDConnect, OAuth, LDAP и т. Д. Являются протоколами.Cookie, Bearer (для JWT) являются схемами.

Приложение может использовать несколько механизмов аутентификации (JWT, Cookie) в одном приложении (например, если оно имеет MVC с представлениями Razor, с использованием cookie-файлов и WebAPI с использованием JWT).

т.е.

services.AddAuthentication(options =>
{
    options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
    options.DefaultChallengeScheme = "oidc";
})
.AddCookie(options =>
{
    options.ExpireTimeSpan = TimeSpan.FromMinutes(60);
})
.AddOpenIdConnect("oidc", options =>
{
    options.Authority = "http://localhost:8000";

    options.ClientId = "mvc";
    options.ClientSecret = "secret";

    options.ResponseType = "code id_token";
    options.Scope.Add("email");
    options.Scope.Add("api1");
    options.Scope.Add("offline_access");

    options.GetClaimsFromUserInfoEndpoint = true;
    options.SaveTokens = true;

    options.TokenValidationParameters = new TokenValidationParameters
    {
        NameClaimType = JwtClaimTypes.Name,
        RoleClaimType = JwtClaimTypes.Role,
    };
});

Схема используется для определения, от какого из этих провайдеров использовать для получения пользовательской информации (такой как статус аутентификации, утверждения и т. Д.).

[Authorize(AuthenticationSchemes = "Bearer")] на контроллере или действии будет использовать данные пользователя, полученные от этого провайдера JwtBearer Auth, где [Authorize(AuthenticationSchemes = "Cookies")] будет использовать информацию, полученную от поставщика авторизации cookie.

...