使用 AddOpenIdConnect 时,为什么会添加默认范围?



我正在尝试在我的.NET Core项目的Startup.cs类中设置OpenIdConnect,但我不断出现错误:

消息包含错误:"invalid_scope",error_description:"error_description为空",error_uri:"error_uri为空"。

我想此错误的原因是因为在下面显示的代码中,我清除了o.Scope列表,因为它似乎包含 2 个默认范围:

  1. 开放ID
  2. 轮廓

如果我不清除默认范围,我正在访问的客户端将无法识别针对有效应用程序的请求,因此我的请求在他们端失败。在这种情况下,我确实重新添加了范围:">openid",它允许我向我的客户端发出成功的请求,但是在重定向到我的RedirectUri时,我遇到了上面提到的错误。

  • "invalid_scope"错误是否来自我的客户端?或者这是否发生在使用 .NET Core 的中间件中?

  • 是否应该要求客户端更新他们身边的范围以包含"配置文件",这样我就不必清除默认范围?

services.AddAuthentication().AddOpenIdConnect(socialProvider.ProviderName, o =>
{
o.ClientId = "xx"
o.ClientSecret = "xx"
o.Authority = "xx"
o.CallbackPath = "xx"
// There appear to be 2 scopes added by default here that cause the 
// integration for o to not be recognised as an application when we get to o' side.
o.Scope.Clear();
o.Scope.Add("openid");
o.GetClaimsFromUserInfoEndpoint = true;
o.SaveTokens = true;
o.RequireHttpsMetadata = false;
});

AddOpenIdConnect 会自动创建 OpenIdConnectOptions 对象,默认范围是 openid 和配置文件。因此,您应该告诉您的身份支持这两个作用域,或者清除我们的默认作用域并添加客户端支持的任何

内容

最新更新