我有一个 MVC 应用程序,它使用 Microsoft.AspNetCore.Authentication.OpenIdConnect 中间件来对抗 IdS4(核心 1.1)。MVC 使用身份验证后获得的访问令牌调用后端 Web API。我正在使用“代码 id_token”响应。我已经使用范围对 API 进行了分段,但我有相当多的 API,即 15。当我构建 OIDCoptions 时,我添加了客户端需要的范围:
oidOptions.Scope.Add("usersRead"); // Api scope
oidOptions.Scope.Add("usersWrite"); // Api scope
这工作得很好。但是,我又添加了两个范围,现在当 MVC 对 IdS 进行 OIDC 质询时,即在用户获得登录表单之前,IdS 报告以下内容
错误的请求
我可以从我的 MVC 应用程序的列表中删除任意两个范围,然后它会重新开始工作。这让我觉得可以请求的范围数量有一些限制,或者 URL 长度有问题?我查看了 OIDC 中间件和 IdS 的源代码,但找不到任何会限制客户端可能请求的 API 范围数量的内容。
有任何想法吗?
感谢您的评论。在 Azure Web 应用程序中设置日志流后,问题立即突出显示。实际上,对构成令牌请求的工件有字符串长度限制,特别是对于范围字符串 300 个字符。我们缩短了范围名称,现在一切正常。
参考参考:https : //github.com/IdentityServer/IdentityServer4/blob/aspnetcore1/src/IdentityServer4/Configuration/DependencyInjection/Options/InputLengthRestrictions.cs
请注意,这是针对 dot net core v1.1 - v2.0 的类似限制。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句