Authentication AddOpenIdConnect错误-SecurityTokenException:无法验证';id#u令牌';,未找到适用于以下各项的ISecurityTokenValidator:''&引用;

Authentication AddOpenIdConnect错误-SecurityTokenException:无法验证';id#u令牌';,未找到适用于以下各项的ISecurityTokenValidator:''&引用;,authentication,asp.net-core,authorization,openid-connect,Authentication,Asp.net Core,Authorization,Openid Connect,我在ASP.NET Core 3.1应用程序中遇到此异常。 这些是使用的参数: options.ClientId = config["Connection:ClientId"]; options.ClientSecret = config["Connection:ClientSecret"]; options.Authority = config["Connection:Uri"];

我在ASP.NET Core 3.1应用程序中遇到此异常。 这些是使用的参数:

                options.ClientId = config["Connection:ClientId"];
                options.ClientSecret = config["Connection:ClientSecret"];
                options.Authority = config["Connection:Uri"];
                options.CallbackPath = new PathString("/signin");
                options.ResponseType = "code";
                options.ResponseMode = "query";
                options.RequireHttpsMetadata = false;
我得到了授权码和访问令牌,但之后我得到了错误消息,如图所示:

无法验证“id_令牌”,找不到适用于“”的ISecurityTokenValidator

为什么在我使用“代码”作为响应类型时,对“id_令牌”的验证会发生


感谢您的帮助。

上次我使用它们时,Microsoft服务器端web应用程序库仅支持混合流,您必须设置:

  • 响应\u类型=代码id\u令牌
这将强制id令牌作为授权响应的一部分进行验证,从而增加替换攻击领域的安全性

UI的一个较新选项是使用以下流,在这种情况下还需要额外的PKCE参数,我很确定MS库不支持这些参数

  • 响应类型=代码
在aecond情况下,id令牌将在以下步骤中接收和处理,该步骤将为令牌交换授权代码