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.