2016-09-22 12 views
0

最近、アクセストークンとしてJSON Webトークン(JWT)を使用してOAuth2.0サーバーを実装しようとしています。私はJWTの自己完結型の特徴について非常に混乱しています。私はJWTが自己完結型であるため、認可サーバーではなく、どこでも検証できることに気付きました。この機能はどのように機能しますか?自己完結型の機能を実現するには、JWTにどのような主張を含める必要がありますか?認証サーバーの外部でJWTを確認する方法

もう1つの質問は、JWTがステートレスである場合、サーバーがJWTを格納すべきでないことを意味します。それでは、JWTはどのように検証されていますか?簡単に偽造できないのですか?

私はこの分野では新人だけど、私は誰かが私を助けることができることを望む:)

答えて

1

JWTは、署名することができる請求、暗号化またはその両方が含まれています。 これらの操作は、暗号化キーを使用して実行されます。キーは非対称(例えば、octなどのキー)は非対称です(例えば、RSAECなどのプライベート/公開キーのペア)。

あなたはJWT(すなわちJWS)を確認したい場合は、次の手順を実行する必要があります。

  • は、(アルゴリズムがサポートされ、重大なクレームがペイロードであり、その価値が理解されているヘッダをチェック)。
  • (特にexpiatnbfaud)を確認してください。
  • 署名を確認してください。

が署名をチェックするには、キーを必要とし、アルゴリズムによっては、このキーは

  • 対称鍵
  • 公開鍵することができ、非対称

場合サードパーティのアプリケーションでJWTを検証できるようにしたい場合は、非対称キーを使用し、公開鍵を第三者と共有します。 公開キーを使用して署名することはできないため、第三者はカスタムのクレームを持つ有効なトークンを偽造することはできません。

鍵を共有する方法はあなた次第です。一般的な方法は、アプリケーションがそれらを取得するURLを提供することです(たとえば、Googleキーhttps://www.googleapis.com/oauth2/v3/certs)。

+0

ありがとうございました!私はこのプロセスをはっきりと理解しています。私は別の質問があります、満期はトークンの漏れの損失を減らすための唯一の方法ですか?トークンがモバイルデバイスに格納されていると、悪意のあるアプリケーションによってトークンが簡単に盗まれる可能性があります。そうですか? – LuCima

+0

はい、盗まれる可能性がありますが、トークンが期限切れになった場合はもう使用できません。だから短い生涯をお勧めします。 –

+0

ありがとう、私は今JWTをよく知っています。 – LuCima