我正在尝试设置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 )是使用OWSM产品实现REST服务和安全服务的oracle产品。一个UI应用程序(为了模拟我们正在使用SOAP ),将调用此REST服务,并将JWT令牌作为一个承载令牌(通过调用OAM 12c REST生成的令牌) OSB应该使用OAM的证书来验证该令牌。
步骤- 1.在OWSM默认密钥存储中导入OAM证书(在fmwconfig/defaultkeystore别名orakey下),并根据oracle文档使用OAM Certifcates在本地验证传入的JWT访问令牌。2.使用OAM API 3创建标识域、资源服务器和客户端。通过调用OAM API 4创建令牌。将此令牌传递给OSB REST 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)无法使用相同的令牌,请告诉您的输入并帮助解决这个问题。
发布于 2019-04-07 13:05:15
在我看来,问题在于使用不正确的证书进行签名验证。
在OAM 12c中,创建的每个OAuth域都有自己的一组公钥-私钥对(证书)。这些证书没有存储在fmwconfig/defaultkeystore别名orakey下。
在最新的12cPS3捆绑补丁上,尝试以下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密钥规范(即RFC 7517 )中进行。
https://stackoverflow.com/questions/53702837
复制相似问题