我已经在MVC客户端中设置了以下身份验证。
JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();
services.AddAuthentication(_ =>
{
//_.DefaultScheme = "Cookies";
//_.DefaultChallengeScheme = "oidc";
_.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddCookie("Cokies")
.AddFacebook()
.AddGoogle()
.AddJwtBearer()
.AddOpenIdConnect("oidc", _ => { });
由于默认设置为JWT,因此我想其他的( Cookie , Facebook , Google 和 OpenIdConnect 如果不使用任何参数调用授权装饰器,则只需忽略它们。
但是,我只是得到 401未经授权而没有其他信息。例如,如果我注释掉JWT的默认方案语句并激活cookie,如下所示:
{
_.DefaultScheme = "Cookies";
_.DefaultChallengeScheme = "oidc";
//_.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
}...
我得到开发人员错误页面,说客户ID未知。但是在这种情况下,我只会在Chrome中获得带有错误代码的默认页面。我当时在考虑可能需要设置默认的挑战方案,但是对JWT这样做是没有意义的,对吧?另外,在 JwtBearerDefaults 类中没有该字段。
我在MVC客户端中缺少什么以使其正确进行身份验证?还是我的IDS4配置出现问题?
我已经搜索了一段时间,但没有发现任何与我交谈的热门歌曲,并且我认为这很有意义。可能是我的无知,但是...
仍然产生相同问题的较短版本看起来像这样。
JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(_ =>
{
_.Authority = "https://localhost:44300";
_.Audience = "http://localhost:5001";
});
我的IDS4在端口44300上运行(已通过 .well-known 选中),API在端口5001上。