はじめに
SpringSecurityの認証トークンについて、トークンってなに?何ができるの?みたいなところ解決していければと思い記事を書いていきます。
間違いなどございましたらご指摘いただけますと幸いです!
(まずSpring Securityとは)
認証や認可、およびその他多くのセキュリティ対策を簡易に実装できるSpringのフレームワークです。
認証:ユーザーが誰であるかを確認する(ログインのこと)
認可:認証された(ログインした)ユーザーが特定のページにアクセスできるかを決定する方法(権限があるかないか)
よく聞くトークンってなんなの?
トークンは、認証や認可のプロセスにおいてユーザーの認証情報を安全にやりとりするための文字列です。
このトークンはユーザーは見れないものになっています。
ちなみに、今回は認証トークンについての説明ですがトークンにはさまざまな種類があります。
下記にどんなトークンがあるのか書いておきます。
1. 認証トークン
- JWT(JSON Web Token)
ユーザー認証に使用されるトークンの一種で、セッションの代わりに使用されることが多いです
サーバーが署名したトークンで、ユーザーがログイン後受け取りそれを用いて認証されたリクエストを行います
2. セッショントークン
ユーザーがウェブサイトやサービスにログインした際に発行されるトークンでセッションを維持するために使用されます。クッキーとしてブラウザに保存されます
3. APIトークン
APIへのアクセスを制御するために使用されるトークンです
開発者がAPIを利用する際にリクエストに含めることで認証や権限の確認が行われます
4. CSRFトークン
CSRF攻撃を防ぐために使用されるトークンで、フォーム送信時に一緒に送信され、サーバー側で検証されます
他にもありますが、トークンにはこのように色々あるということを知っていただければOKです。
セッショントークンと認証トークンは同じように見えますが、違いがありますので簡単に説明しておきます。
違いとして、認証トークンはサーバーがトークンの状態を保持することはないのですが、セッショントークンはサーバーがセッションの状態を保持するなどの違いがあります。
認証トークンのイメージ図
下の図のような感じでトークンは発行されて保持されます。
【流れ】
クライアントが名前とパスワードを入力して送信
↓
受け取ったサーバーはトークンを発行
↓
クライアントにトークンを返す
↓
クライアントはcookieなどでトークンを保持
といった感じです。
セッションでもたせてもよいので、タブが開いている場合はトークンが有効になるような処理をかくことで、ユーザーがページにアクセスする権限があるのかを判断することができます。
つまり、トークンが有効である限り、クライアントからのリクエストは権限が付与されてあれば通るということです。
まとめ
簡単によく聞くトークンって何?ということをまとめてみました。
まだどのように処理書くの?などは理解できていないためさらに学習を進めていければと思います。