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

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

消息包含错误:“invalid_scope”、error_description:“error_description 为空”、error_uri:“error_uri 为空”。

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

  1. 打开标识符
  2. 简介

如果我不清除默认范围,我正在访问的客户端将无法识别我对有效应用程序的请求,因此我的请求在他们这边失败了。在这种情况下,我确实重新添加了范围:“openid”,这使我能够向我的客户端发出成功的请求,但随后在重定向到我的 RedirectUri 时我我收到上述错误。

  • “invalid_scope”错误是否来 self 的客户端?或者这是否发生在 .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 和配置文件。所以你应该要么告诉你的身份支持这两个范围,要么清除我们的默认范围并添加客户端支持的任何内容

https://stackoverflow.com/questions/56504467/

相关文章:

macos - 节点模块在我的 Mac 上无故丢失

reactjs - Webpack 无法导入带有 ` 标记的 React 组件

angular - 我的 Angular 应用程序的规模(缩放)在生产中单独增加

tensorflow - 基于直方图定义 TF 中的损失函数

typescript - Promise.resolve(null) 的目的是什么

.net-core - 错误 UseHealthChecksUI 遇到意外字符

javascript - 将 Uint8Array 转换为 Float32Array

r - 在 R studio 中安装 factoextra 包

python - "pyenv virtualenvwrapper"是做什么的?

javascript - 简单的 react-spring 组件在 gatsby 中不起作用 - 元