我想更好地了解uaa客户端令牌验证如何与云代工厂一起使用。
使用云代工厂cf工具登录后,我已经使用
获得了签名代币cf oauth-token
据我所知,此令牌已由cf客户端签名,并包含我在登录后从uaa收到的原始访问令牌。
现在我可以使用任何在线jwt解析器解码此令牌(令牌不是敏感信息,因为cf工具仅针对我当地的bosh-lite安装)。但是,如何验证令牌是否正确?这通常是云控制器随后会执行的任务,更正吗?
我尝试过如下使用JJWT java库:
Jwts.parser().setSigningKey("").parseClaimsJws(token).getBody();
然而,它抱怨空签名密钥。 cf客户端使用的签名密钥是什么?客户秘密是在UAA注册的吗?
任何澄清都非常感谢。
答案 0 :(得分:3)
我目前的理解是CF CLI只保存UAA生成的编码和签名令牌。此令牌使用UAA私钥签名,只能使用相应的UAA公钥验证。
为了验证该令牌,您有两种选择:
1)使用为您验证给定令牌的UAA端点(/ check_token),您不需要UAA的验证密钥。
2)检索UAA公共验证密钥(/ token_key),并编写一些代码以验证jwt签名。
见 https://github.com/cloudfoundry-incubator/routing-api/blob/master/authentication/token_validator.go
根据您采用的方法,您可以使用JS模仿相应的实现。
我希望有所帮助。
答案 1 :(得分:2)
您只需要验证密钥(假设您确实想验证令牌签名)
这是怎么回事 1.您可以在没有任何密钥的情况下解析JWT令牌,如果没有密钥,则不应验证签名 2.如果您希望验证签名,请提供验证密钥
验证密钥位于uaa./token_keys
下