認可
にんか
Authorization
一言でいうと
認証された人が「何をしてよいか」を判定する仕組みのこと。
詳しい意味
認可(Authorization)は、すでに認証(Authentication)されたユーザーが「どのリソースに、どの操作をしてよいか」を判定する仕組みです。たとえば「自分の投稿は編集できるが、他人の投稿は読み取り専用」「管理者だけが削除できる」といったルールを定義・適用します。認証(あなたは誰か)と認可(その人に何が許されているか)はセットで語られますが、別の概念です。実装としては「ロール(admin / user / guest)」「権限のリスト(ABAC)」「リソースオーナー判定」などが使われます。
何に使うか
ログイン後の画面で「自分のデータだけ表示・編集できる」状態を作るとき。管理者と一般ユーザーで使える機能を分けるとき。APIで他人のリソースへの不正アクセスを防ぐとき。
どんな時に出るか
「認可漏れで他人のデータが見えてしまう」「認可ロジックを共通化」「認可は認証と別物」といった場面で登場します。
具体例
- 認可漏れで、他のユーザーの個人情報が取得できてしまう脆弱性を修正した。
- 認可ロジックは共通モジュールに集約して、ハンドラ毎に再実装しないようにした。
別名・略称
authorization(おーそらいぜーしょん)authz(おーすぜっと)
関連語
間違えやすい語
初心者向けメモ
ホテルでのチェックイン(認証)の後、ルームキー(認可情報)でアクセスできる部屋が決まるイメージです。「この人は誰か」確認した後、「この人は何をしてよいか」を判断するのが認可です。