具有 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 个字符。我们已经缩短了作用域名称,现在一切正常。
注意,这是针对 dot net core v1.1 - v2.0 的类似限制。
我有一个 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 个字符。我们已经缩短了作用域名称,现在一切正常。
注意,这是针对 dot net core v1.1 - v2.0 的类似限制。