Authenticationscheme和Authenticationprotocol之间有区别吗?

问题描述 投票:-1回答:1

目前,我正在撰写一篇关于Asp .Net Core中身份验证可能性的小文章。身份验证对我来说是全新的,我感到困惑,因为有些消息来源谈论身份验证方案,有些则涉及身份验证协议。有什么不同吗?或者在这种情况下,scheme是协议的同义词吗?

例如:在这个来源中,NTLM被描述为一种方案:https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/understanding-http-authentication

这里它被列为协议:https://en.wikipedia.org/wiki/Authentication_protocol

authentication asp.net-core network-protocols
1个回答
0
投票

OpenIDConnect,OAuth,LDAP等是协议。 Cookie,Bearer(针对JWT)是方案。

应用程序可以在同一个应用程序中使用多个身份验证机制(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授权提供商处获得的信息。

© www.soinside.com 2019 - 2024. All rights reserved.