具有 aspnet 核心 MVC OIDC 身份验证的 IdentityServer4 - api 范围限制?

IdentityServer4 with aspnet core MVC OIDC authentication - api scope limit?

我有一个 MVC 应用程序,它使用针对 IdS4(核心 1.1)的 Microsoft.AspNetCore.Authentication.OpenIdConnect 中间件。 MVC 使用身份验证后获得的访问令牌调用后端 Web API。我正在使用 "code id_token" 响应。我已经使用范围对 API 进行了分段,但我有相当多的范围,即 15 个。当我构建 OIDCoptions 时,我添加了客户端需要的范围:

oidOptions.Scope.Add("usersRead");           // Api scope
oidOptions.Scope.Add("usersWrite");          // Api scope

这非常有效。但是,我又添加了两个范围,现在当 MVC 对 IdS 进行 OIDC 质询时,即在用户获得登录表单之前,IdS 会报告以下内容

bad request

我可以从我的 MVC 应用程序的列表中删除任意两个范围,然后它会再次开始工作。这让我觉得可以请求的范围数量有一些限制,或者 URL 长度有一些问题?我查看了 OIDC 中间件和 IdS 的源代码,但找不到任何可以限制客户端可能请求的 API 范围数量的内容。

有什么想法吗?

感谢您的评论。在 Azure Web App 中设置日志流后,问题立即突出显示。实际上,构成令牌请求的工件有字符串长度限制,特别是范围字符串 300 个字符。我们已经缩短了作用域名称,现在一切正常。

参考请看:https://github.com/IdentityServer/IdentityServer4/blob/aspnetcore1/src/IdentityServer4/Configuration/DependencyInjection/Options/InputLengthRestrictions.cs

注意,这是针对 dot net core v1.1 - v2.0 的类似限制。