security.yml
設定ファイルにsymfonyアプリケーション用の認証と認可を記述します。
アプリケーションが作成されるとき、symfonyはアプリケーションのconfig/
ディレクトリにデフォルトのsecurity.yml
ファイルを生成します。
ここにはアプリケーション全体のセキュリティを記述します(default
キーの下):
default: is_secure: off
はじめの章で説明したように、security.yml
ファイルはコンフィギュレーションカスケードのメカニズムが有効になり、定数を格納することができます。
アプリケーションのデフォルトコンフィギュレーションはモジュールのconfig/
ディレクトリでsecurity.yml
ファイルを作成することでオーバーライドできます。
メインキーはプレフィックスのexecute
を伴わないアクションの名前です(たとえばindex
キーはexecuteIndex
メソッドの設定)。
アクションがセキュアかどうかを判断するために、symfonyは次の順序で情報を探します:
存在するのであればモジュール設定ファイルの固有のアクションのための設定;
存在するのであればモジュール設定ファイルのモジュール全体のための設定(
all
キーの下);アプリケーションのデフォルト設定(
default
キーの下)。
アクションにアクセスするために必要なクレデンシャルを決定するために同じ優先ルールが使われます。
note
security.yml
設定ファイルはPHPファイルとしてキャッシュできます;
処理はsfSecurityConfigHandler
クラスによって自動的に管理されます。
認証
security.yml
のデフォルト設定は、それぞれのアプリケーションごとにインストールされ、だれでもアクセスを許可します:
default: is_secure: off
アプリケーションのsecurity.yml
ファイルでis_secure
キーをon
にセットすることで、アプリケーション全体ですべてのユーザーの認証が必須になります。
note
認証されていないユーザーがセキュアなアクションにアクセスしようとすると、symfonyはリクエストをsettings.yml
で設定されたlogin
アクションに転送します。
モジュールの認証要件を修正するには、config/
ディレクトリでsecurity.yml
を作成しall
キーを定義します:
all: is_secure: on
モジュールの単独のアクションの認証要件を修正するには、モジュールのconfig/
ディレクトリでsecurity.yml
ファイルを作成し、アクションの名前の後にキーを定義します:
index: is_secure: off
tip
loginアクションをセキュアにすることはできません。 これは無限ループを避けるためです。
認可
ユーザーが認証されるとき、クレデンシャルを定義することで一部のアクションへのアクセスをさらに制限できます。 クレデンシャルが定義されたとき、ユーザーはアクションにアクセスする必須クレデンシャルを持たなければなりません:
all: is_secure: on credentials: admin
symfonyのクレデンシャルのシステムはシンプルで強力です。 クレデンシャルはアプリケーションのセキュリティモデルを記述するために必要なものを表現できる文字列です(グループもしくはパーミッションのようなもの)。
credentials
キーは配列記法を使用することで複雑なクレデンシャル要件を記述するためのブール演算をサポートします。
ユーザーがクレデンシャルAかつクレデンシャルBを持たなければならない場合、角かっこでクレデンシャルを囲みます:
index: credentials: [A, B]
ユーザーがクレデンシャルAまたはクレデンシャルBを持たなければならないとき、2つのペアの角かっこでこれらを囲みます:
index: credentials: [[A, B]]
任意の数のクレデンシャルで任意の種類のブール式を記述するためにかっこを混ぜることもできます。
This work is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License license.