【问题标题】:oauth2-oidc-sdk ParseException: "The none algorithm is not accepted"oauth2-oidc-sdk ParseException:“不接受无算法”
【发布时间】:2021-02-27 18:43:33
【问题描述】:

显然我并不精通 OAuth2 OpenID 机制 - 只知道非常基础的知识。

我已经成功使用 spring-boot-starter-oauth2-client 来构建我的 OAuth2 客户端。我正在与之交谈的服务器有一个描述服务的 .well-known 端点。他们最近更改了此端点实现,以在返回的结果中包含各种信息,例如支持的算法。

如果是某些特定字段,例如“id_token_signing_alg_values_supported”,则包含一个额外的“无”算法。

当我指向 oauth2 配置以使用这些“无”算法条目从新的 .well-known 端点寻求描述时,我从 oauth2-oidc-sdk 库代码中得到 ParseException:

Caused by: com.nimbusds.oauth2.sdk.ParseException: The none algorithm is not accepted
    at com.nimbusds.oauth2.sdk.as.AuthorizationServerMetadata.parse(AuthorizationServerMetadata.java:1560) ~[oauth2-oidc-sdk-7.1.1.jar:7.1.1]
    at com.nimbusds.openid.connect.sdk.op.OIDCProviderMetadata.parse(OIDCProviderMetadata.java:1190) ~[oauth2-oidc-sdk-7.1.1.jar:7.1.1]
...

我知道客户端代码可能对服务器接受某些条目的“无”算法感到愤怒。我想我正在与之交谈的服务器不应该公开让客户向其发送未加密内容的方式......但是 - 如果是这种情况 - 我只是一个客户 - 我可以不要忘记这一点并忽略这个权限服务器让我使用这个“无”算法?有没有办法覆盖这种行为?我查看了 oauth2-oidc-sdk 代码,但找不到任何方法。

谢谢。

[edit:] 具体来说,oauth2-oidc-client 不接受以下众所周知的配置条目中的“无”算法值:

  • token_endpoint_auth_signing_alg_values_supported
  • introspection_endpoint_auth_signing_alg_values_supported
  • revocation_endpoint_auth_signing_alg_values_supported

【问题讨论】:

    标签: spring-boot spring-security openid-connect spring-security-oauth2


    【解决方案1】:

    none 算法是一个非常糟糕的主意,因为使用这种算法,任何人都可以创建自己的令牌或修改现有令牌,并且令牌的接收者无法信任它。此外,还有许多与无相关的安全漏洞。

    喜欢这个:

    【讨论】:

    • 谢谢 - 我会稍等片刻,希望有人想出一个解决方案来覆盖客户端库部分的这个空白拒绝来解析这个配置 - 否则会将其标记为答案
    • 没问题!可以不禁用服务器上的none算法吗?
    • 它是第三方服务器 :)
    • 只是一个疯狂的想法,但你能不能只从第三方服务器复制发现文档并托管你自己的版本。并从中删除 alg none ?当然,如果它在服务器上发生变化,您不会注意到,但这是一个快速入门的技巧。
    • 感谢您的建议。是的,我试过了,有点——但有一些小故障——从配置中看,一些值是根据我指定为发现文档位置的基本 url 计算出来的——好吧,确切地说,我指定了所提供资源的发行者的基本 url (spring.security.oauth2.client.provider.some_xx_provider.issuer-uri) - 并且配置是在 {base-url}/.well-known/openid-configuration 上自动发现的 - 这个基础-url 似乎稍后会被使用 - 所以如果它是虚拟的,那么 oauth2 工作流程就会中断 - 我还没有找到缓解这种情况的方法
    猜你喜欢
    • 2020-04-11
    • 2022-12-22
    • 1970-01-01
    • 1970-01-01
    • 2021-04-02
    • 1970-01-01
    • 2021-08-30
    • 2018-12-15
    • 2020-08-21
    相关资源
    最近更新 更多