バックエンド・API・データ · 中級

認証と認可:あなたが誰で何が許可されているか

一行でいうと: アイデンティティと認可は二つの別々の質問であり、ほとんどの違反はインターフェースでチェックされ、サーバーでチェックされないことから来る。

分離

認証はユーザーが誰かに答える。認可はリソースに対してアクションを実行する権限があるかに答える。インターフェースでボタンを隠すことは認可ではない——どのリクエストも直接送れる。

ルール:すべてのルートはユーザーがログインしているだけでなく、特定のリソースに対して認可をチェックする。

実践的なモデル

ロールによって——シンプルで、ほとんどのシステムに十分。所有権と帰属によって——ユーザーが自分の組織のデータのみ見るとき必要。詳細なポリシーによって——強力でメンテナンスコストが高い、本当に必要なときのみ。

シンプルに始めて、コードの一箇所にルールを文書化する、二十のチェックに散らばせるのではなく。

トークン

アクセストークンの短い有効期限、取り消せるリフレッシュトークン、ログアウトイベントの拒否リスト。アクセスを即時に取り消せるだけのものをサーバー側に保持する——ちょうど構築する時間がない日に必要になる能力だ。

さらに深く

最も一般的な危険は識別子によるリソースへの直接アクセスだ:別のユーザーのデータを返すアドレスの数値を交換する。識別子を受け取るすべてのルートで体系的にこれをチェックし、ユーザー間でアクセスを試みる自動テストを追加する。