セキュリティ周りでよく聞くわりに、意外と違いがわかっていなかったのでここで知識を持っておくことが目的。
Authenticationは認証、Authorizationは認可です。和訳しても似ているやん(嘆き)。
Authentication(認証)
「あなたが何者か」「これは何か」を特定するのが認証。
認証に対するレスポンスはWho, What
で開かれた回答のイメージ。
Aの身分証を持っている/AのIDPASSを知っている → このユーザーはAだ!
Authorization(認可)
「権限を持っているか」を判別するのが認可。
認可に対するレスポンスはYes, No
で閉じられた回答のイメージ。
Xライセンス証明書を持っている → このユーザーはアクセスしてOK!
両者の関係
一般に権限はユーザー依存が多いので、認証→認可
の処理フローができていることが多い。
実際のサービス上では以下のような裏処理が働いている。
1. 認証
ログインする
→ ユーザーを特定する
◎ ユーザーを証明するトークンを発行する
2. 認可
サービスにアクセスを依頼する
→ トークンをもとに権限を確認する
→ アクセス許可を与える
→ アクセス完了
思ったこと
この言葉に限らないが、曖昧な言葉を僕以外の万人が正確に使い分けられているわけはないと思っている。
つまりはAuthentication
って書いてあっても認証
のことかと固定して考えるのは意外と落とし穴かもしれないと思ったり。(よくわかっていない人が認可のつもりで使っているのかもしれないし、なんならどちらでもないのかもしれない…。)