# 08ex. Coding ex2 Api Authorization ________________________________________ Code Patterns for API Authorization: Designing for Security https://research.nccgroup.com/2020/04/21/code-patterns-for-api-authorization-designing-for-security/ Well-tested Authorization Design Patterns https://www.praetorian.com/blog/well-tested-authorization-design-patterns/ ________________________________________ ## 1. 要約 ________________________________________ 大前提 1. 垂直権限(管理者/一般)、水平コンテキスト(自分/他人のリソース)を整理する 2. アクセス制御をどういうモデルにするか決める(例:権限、権限グループ、コンテキスト) 3. クライアントデータは信用しない 4. デフォルトは拒否する 5. 一元管理する 6. 認可判定成功もロギングする 4種類のパターン 1. アドホック(非推奨) - 各アクション内で任意の処理を実装する 2. ミドルウェア & アノテーション - 各アクション定義にアノテーションで必要な権限を記載し、ミドルウェアが判定 - アノテーション未指定(=デフォルト)は拒否すること - 権限は判断が容易だが、コンテキストや水平方向の判断実装が困難 3. 一元化 - アドホックに直接実装する代わりに、全ての認可チェックを記載した共通メソッドを呼び出す - 開始チェック(垂直権限)と終了チェック(水平コンテキスト)でダブルチェックを行う 4. オブジェクト単位/トランザクションスクリプト単位 - 一元化では複雑すぎる場合に、適当な単位で分割する