【发布时间】: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) 无法使用相同的令牌,请告知您的输入并帮助解决此问题。
【问题讨论】: