【问题标题】:IdentityServer4 with aspnet core MVC OIDC authentication - api scope limit?IdentityServer4 与 aspnet 核心 MVC OIDC 身份验证 - api 范围限制?
【发布时间】:2018-05-12 15:10:24
【问题描述】:

我有一个 MVC 应用程序,它使用针对 IdS4(核心 1.1)的 Microsoft.AspNetCore.Authentication.OpenIdConnect 中间件。 MVC 使用身份验证后获得的访问令牌调用后端 Web API。我正在使用“代码 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 的源代码,但找不到任何会限制客户端可能请求的 API 范围数量的内容。

有什么想法吗?

【问题讨论】:

  • 也许,日志可能有额外的信息。你检查过日志吗?
  • 尝试从请求中删除两个作用域,然后将第三个作用域的名称设置得太长,无法知道问题是否是“URL 长度问题”

标签: asp.net-mvc identityserver4 openid-connect


【解决方案1】:

感谢 cmets。在 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 的类似限制。

【讨论】:

    猜你喜欢
    • 2017-05-23
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    • 1970-01-01
    相关资源
    最近更新 更多