身份验证方案和身份验证协议之间有区别吗?
Is there a Difference between an Authenticationscheme and an Authenticationprotocol?
目前,我正在写一篇关于 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
OpenIDConnect、OAuth、LDAP 等都是协议。
Cookie, Bearer (for JWT) 都是 schemes.
一个应用程序可以在同一个应用程序中使用多种身份验证机制(JWT、Cookie)(例如,如果它具有带 Razor 视图的 MVC,使用 Cookie 和使用 JWT 的 WebAPI)。
即
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 授权提供者获得的信息。
目前,我正在写一篇关于 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
OpenIDConnect、OAuth、LDAP 等都是协议。 Cookie, Bearer (for JWT) 都是 schemes.
一个应用程序可以在同一个应用程序中使用多种身份验证机制(JWT、Cookie)(例如,如果它具有带 Razor 视图的 MVC,使用 Cookie 和使用 JWT 的 WebAPI)。
即
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 授权提供者获得的信息。