【问题标题】:OAM 12c OAuth Access token validationOAM 12c OAuth 访问令牌验证
【发布时间】:2018-12-10 09:36:10
【问题描述】:

我正在尝试设置 OAM 12c 以使用默认设置实现 OAuth。 寻求您的帮助以解决与签名相关的问题。

Issue - Caused by: java.security.SignatureException: Signature length not correct: got 256 but was expecting 128

用例 - 通过使用 OAM 证书在本地验证 OAM 12c 访问令牌以实现 OAuth(2 支流)

说明 - OSB (Oracle Service Bus) 是一个使用 OWSM 产品实现 REST 服务和安全服务的 oracle 产品。 UI 应用程序(我们使用 SOAP UI 进行模拟)将调用此 REST 服务并将 JWT 令牌作为承载令牌(通过调用 OAM 12c REST API 生成的令牌)传递 OSB 应该使用 OAM 的证书来验证令牌。

执行的步骤 - 1. 在 OWSM 默认密钥库中导入 OAM 证书(在 fmwconfig/defaultkeystore 别名 orakey 下),根据 oracle 文档,它应该使用 OAM 证书在本地验证传入的 JWT 访问令牌。 2.使用OAM API创建身份域、资源服务器和客户端 3.调用OAM API创建token 4. 将此令牌传递给 OSB REST API 5. 令牌验证失败,OSB 日志中出现以下异常。

我们收到的异常是——

Caused by: java.security.SignatureException: Signature length not correct: got 256 but was expecting 128
              at sun.security.rsa.RSASignature.engineVerify(RSASignature.java:189)
              at java.security.Signature$Delegate.engineVerify(Signature.java:1219)
              at java.security.Signature.verify(Signature.java:652)
              at oracle.security.restsec.jwt.JwtToken.verify(JwtToken.java:1558)

我已验证,在 OAM12c 生成的令牌是带有 RSASHA256 签名的 RSA256,但看起来 OSB (12.2.1.3.0) 无法使用相同的令牌,请告知您的输入并帮助解决此问题。

【问题讨论】:

    标签: oracle osb


    【解决方案1】:

    在我看来,问题在于使用不正确的证书进行签名验证。

    OAM 12c 中,创建的每个 OAuth 域都有自己的一组公私密钥对(证书)。这些证书不存储在 fmwconfig/defaultkeystore 别名 orakey 下。

    在最新的 12cPS3 Bundle 补丁上, 尝试使用以下 URL 获取 OAuth 域证书。

    curl -X GET "http://{managed server host}:{managed server port}/oauth2/rest/security" -H 'authorization: Basic ...' -H 'X-OAUTH-IDENTITY-DOMAIN-NAME: <OAuth Domain Name>'
    

    基本授权标头包含 - B64 编码的“OAuth 客户端 ID:密码”

    响应将采用 JSON Web 密钥规范,即 RFC 7517。

    【讨论】:

      猜你喜欢
      • 2019-08-08
      • 1970-01-01
      • 2019-06-01
      • 2013-11-26
      • 1970-01-01
      • 2015-07-16
      • 1970-01-01
      • 1970-01-01
      • 2019-07-23
      相关资源
      最近更新 更多