2016-12-26 11 views
3

を流し、私はJWTJWTトークンSSO

とSSOの流れについての素朴な疑問を持っているクライアントがそれにアクセスしようとする場合には、我々はクライアントアプリケーション/サーバーとリソースサーバーへのJWTを提供して別の認証サーバを、持っているとしましょうトークン。

enter image description here

質問は、それ自体でサーバーの検証トークンリソースなければならない(例えば認証サーバとのプライベート証明書を共有する)、または、各クライアント要求のためのJWTを検証する認証サーバーに要求すべきか?

答えて

3

JWT specificationはスケーラビリティを念頭に置いて作成されました。 JWTの設計の目的は、信頼できるすべてのアプリケーションが署名ブロックを検証できることです。パフォーマンスを気にする場合は、SHA-256 HMACを使用して、共有秘密の各エンドポイントで署名をローカルに検証します。 JWTに非対称署名を使用するとオーバーヘッドが発生しますが、JWTを検証して発行していないエンドポイントに公開鍵を格納してから、トークンを発行する中央機関に秘密鍵を格納することができます。検証と発行の間のこのような関心事の分離は、敵対者がトークン作成プロセスを邪魔する可能性を減らします(Read:Defense-in-depth)。

トークンをリアルタイムで取り消す必要がある場合は、各トークンを検証する中央権限が必要です。これはうまくいきますが、JWTの設計の目的を破っています。システムはトークンとしてcryptogrpahic nonceを発行する方が良いでしょう。

関連する問題