我有一个MVC应用程序,它使用Microsoft.AspNetCore.Authentication.OpenIdConnect中间件来对抗IdS4 (核心1.1)。MVC使用身份验证后获得的访问令牌调用后端web。我使用的是“代码id_token”响应。我已经使用作用域对API进行了分段,但我有相当多的作用域,即15。当我构建OIDCoptions时,我添加了客户机所需的作用域:
oidOptions.Scope.Add("usersRead"); // Api scope
oidOptions.Scope.Add("usersWrite"); // Api scope这件事做得很好。但是,我添加了另外两个作用域,现在IdS报告了当MVC对IdS进行OIDC挑战时,即在用户收到登录表单之前
不良请求
我可以从我的MVC应用程序的列表中删除任何两个作用域,然后它又开始工作了。这让我觉得可以请求的范围的数量有一些限制,或者URL长度有一些问题?我查看了OIDC中间件和IdS的源代码,找不到任何可以限制客户机可能请求的范围数量的东西。
有什么想法吗?
发布于 2017-12-10 10:58:59
谢谢你的评论。在Azure Web应用程序中设置日志流之后,立即突出显示了问题。实际上,构成令牌请求的工件有一个字符串长度限制,特别是对于范围字符串300个字符。我们已经缩短了范围名称,现在一切都很好。
注意,这是针对dot v1.1的--对于v2.0也有类似的限制。
https://stackoverflow.com/questions/47543807
复制相似问题