1

uaa クライアント トークンの検証がクラウド ファウンドリでどのように機能するかをよりよく理解したいと思います。

クラウド ファウンドリー cf ツールでログインした後、使用して署名付きトークンを取得しました

cf oauth-token

私が理解しているように、このトークンは cf クライアントによって署名されており、ログイン後に uaa から受け取った元のアクセス トークンが含まれています。

これで、任意のオンライン jwt パーサーでこのトークンをデコードできます (cf ツールはローカルの bosh-lite インストールのみを対象としているため、トークンは機密情報ではありません)。しかし、トークンが正しいことをどのように検証すればよいでしょうか? これは通常、クラウド コントローラーが実行するタスクですよね?

次のようにJJWT Javaライブラリを使用してみました:

Jwts.parser().setSigningKey("").parseClaimsJws(token).getBody();

それでも、空の署名鍵について文句を言います。cf クライアントが使用している署名鍵は何ですか? クライアント シークレットは UAA に登録されていますか?

説明をいただければ幸いです。

4

2 に答える 2

4

私の現在の理解では、CF CLI は、UAA によって生成されたエンコードされ署名されたトークンを保存するだけです。このトークンは、UAA 秘密鍵で署名されており、対応する UAA の公開検証鍵でのみ検証できます。

そのトークンを確認するには、次の 2 つのオプションがあります。

1) 特定のトークンを検証する UAA エンドポイント (/check_token) を使用します。このアプローチでは、UAA の検証キーは必要ありません。

https://github.com/cloudfoundry/uaa/blob/master/server/src/main/java/org/cloudfoundry/identity/uaa/oauth/RemoteTokenServices.javaを参照してください。

2) UAA 公開検証キー (/token_key) を取得し、jwt 署名を検証するコードを記述します。

https://github.com/cloudfoundry-incubator/routing-api/blob/master/authentication/token_validator.goを参照して ください

採用したアプローチに基づいて、JS を使用して対応する実装を模倣できます。

それが役立つことを願っています。

于 2016-01-27T23:32:06.160 に答える
2

必要なのは検証キーだけです (実際にトークンの署名を検証したい場合)

1. キーなしで JWT トークンを解析できます。キーがないと、署名を検証できません 2. 署名を検証する場合は、検証キーを提供します

検証キーは uaa./token_keys にあります

https://uaa.run.pivotal.io/token_keys

于 2016-01-27T19:25:53.240 に答える