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.