Skip to content

デフォルトセキュリティ定義を NeoShowcaseAuth のみに制限し、一般ユーザー向けエンドポイントの認証を個別定義化 #49

@reiroop

Description

@reiroop

デフォルトセキュリティ定義を NeoShowcaseAuth のみに制限し、一般ユーザー向けエンドポイントの認証を個別定義化

解決したい課題と設計意図

  • 課題: 現在の openapi.yaml のルートレベル(グローバル)セキュリティ定義は、一般の認証Cookie(EmailVerifiedSession)と認証プロキシ経由の信頼済みユーザー認証(NeoShowcaseAuth)の双方が許容されています。これにより、新設されたAPIエンドポイントが個別の security 定義を忘れた場合、自動的に最も緩い認証レベル(一般の認証Cookie)が継承されてしまうリスクがあります。
  • 設計意図:
    • 設計思想としての「Secure by Default(デフォルトで安全)」を徹底するため、最も制約の厳しい NeoShowcaseAuth(認証プロキシ経由のアクセス)のみをルートレベルのセキュリティ定義とし、デフォルトで最高のセキュリティ境界を強制します。
    • 一方で、一般の認証Cookie(EmailVerifiedSession)のアクセスを正しく許容すべきエンドポイントについては、個別にローカル security 定義でオーバーライドし、明示的かつ厳格に管理するアプローチへとリファクタリングします。

達成したい要件

  1. グローバルデフォルトセキュリティの制限:
    • openapi.yaml のルートレベルの security 定義から EmailVerifiedSession を削除し、NeoShowcaseAuth(および CsrfTokenHeader)のみを要求するように修正します。
  2. 一般ユーザー向け状態変更エンドポイントのセキュリティ個別定義(オーバーライド):
    • 既存でデフォルトのセキュリティをそのまま継承している一般ユーザー向け状態変更エンドポイントに対し、個別に EmailVerifiedSession または NeoShowcaseAuth(それぞれに CsrfTokenHeader を付与)の双方を許容する security 定義を追加します。
      • POST /me/customer
      • PATCH /me/customer
      • POST /me/invoices
  3. 全エンドポイントのセキュリティ適合性検証:
    • グローバルセキュリティの変更後、openapi.yaml 内に存在するすべてのエンドポイントsecurity 設定が本来の仕様通りに機能しているか(意図しないアクセス拒否や過剰な権限付与が発生していないか)を一つずつ精査・検証し、完全な整合性を保証します。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions