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

时间:2019-06-08 07:36:30

标签: c# asp.net-core openid openid-connect

我试图在.NET Core项目的Startup.cs类中设置一个OpenIdConnect,但始终出现以下错误:

消息包含错误:“ invalid_scope”,错误描述:“ error_description为空”,错误_uri:“ error_uri为空”。

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

  1. openid
  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;

                            });

1 个答案:

答案 0 :(得分:0)

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