JSON Web Tokenの使いどころ

改ざんを防止するJSONとして注目されているのがJSON Web Tokenです。署名することでデータの改ざんを防止しつつ、URLセーフな仕組みとなっています。JSON自体は誰でも閲覧できるのでセキュアな情報を送るのには適していませんが、改ざんしたとしてもそれを検証する仕組みが用意されていることで安心して利用できます。

そんなJSON Web Tokenがどういった場面で使われているのか紹介します。

セッション

トークンの中にユーザIDであったり、ユーザ名、有効期限といった情報を持たせることで認証後のクライアントにセッションとして使ってもらいます。サーバ側ではセッションをデータベースで管理する必要がなくなります。

Cookieなどにデータを持たせておいて、アクセスの度にその内容をチェックすることで改ざんされていないか確認ができます。改ざんされていないのであれば、ユーザIDをそのまま利用できます。

セッションIDはユニークで単なる文字列なのが一般的ですが、その場合はセッションIDをデータベースに保存しておく必要があります。JSON Web Tokenを使うことでデータベースに保存することなく、安全なセッション管理ができます。

OAuth2トークン

OAuth2トークンとしてJSON Web Tokenを使うことで、こちらもデータベースで管理する必要がなくなります。ただし有効期限だけを延ばすと言った操作はできないのでリフレッシュトークンを使ってトークン自体改める必要があります。

例えばGoogleのOAuthトークンはJSON Web Tokenになっています。公開鍵も配布されていますので、それを使ってトークンの検証ができるようになっています。

OpenID Connect

OAuth2をベースにした認証プロトコルであるOpenID ConnectのIDトークンはJSON Web Tokenが使われています。ペイロード部分については任意の情報で構いませんが、ヘッダー部分についてはRFC 7515の中で決められています

メールアドレス確認

メールアドレスと有効期限をペイロードとしてJSON Web Tokenを生成し、メールアドレス認証用のURLとすればデータベースで確認コードを保存することなく、正しいメールアドレスであるという検証ができます。

改ざんはできないので別なメールアドレスを適用することはできませんし、自分のメールアドレスであればURLに含まれていても問題はないでしょう。また、JSON Web TokenはURLセーフになっていますので、URL中に含めるのも問題ありません。


JSON Web Tokenを使うことでこれまでデータベースに保存していた一時的なトークンや確認コードが不要になります。送られてきたデータを適切に検証すれば、その内容が正しいことが簡単に分かります。

なおJSON Web Tokenでは秘密鍵が重要になりますので、間違っても紛失しないようくれぐれも注意してください。また、BASE64デコードしているので情報はURLセーフである反面、含んでいる情報の1.5倍くらいに長くなってしまいます。あまり多くの情報を盛り込まない方が良いでしょう。

© NTT Communications Corporation All Rights Reserved.