【问题标题】:When using AddOpenIdConnect, why are default Scopes added?使用 AddOpenIdConnect 时,为什么要添加默认范围?
【发布时间】:2019-06-08 07:36:30
【问题描述】:

我正在尝试在我的 .NET Core 项目的 Startup.cs 类中设置 OpenIdConnect,但我一直收到错误消息:

消息包含错误:'invalid_scope'、error_description:'error_description is null'、error_uri:'error_uri is null'。

我猜这个错误的原因是因为在下面显示的代码中,我清除了 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;

                            });

【问题讨论】:

  • Invalid_scope 错误来自您的身份提供者,而不是来自您的客户。至于配置文件范围,这是“默认”行为。我想大多数身份提供者会将其作为可用范围之一。无法回答您“应该”做什么。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 2011-01-21
    相关资源
    最近更新 更多