security.yml 設定ファイル
~security.yml
~ 設定ファイルでは、symfony アプリケーションの認証 (authentication) と承認 (authorization) を記述します。
security.yml
ファイルからのコンフィギュレーション情報はuser
ファクトリクラス (デフォルトはsfBasicSecurityUser
) によって使われます。認証と承認の実行はsecurity
フィルタによって行われます。
アプリケーションが作られるとき、symfony はデフォルトの security.yml
ファイルをアプリケーションの config/
ディレクトリに生成します。このファイルでは、アプリケーション全体のセキュリティを記述します (default
キーの下):
---
default:
is_secure: off
設定ファイルの原則の章で説明したように、security.yml
ファイルでは、コンフィギュレーションカスケードのメカニズムがはたらき、定数を定義することができます。
アプリケーションのデフォルトコンフィギュレーションをオーバーライドするには、モジュールの config/
ディレクトリのなかで security.yml
ファイルを作ります。メインキーはアクションの名前で、プレフィックスの execute
はつけません (たとえば executeIndex
メソッドであれば index
)。
アクションがセキュアであるかどうかを判断するために、symfony は次の順序で情報を探します:
-
存在しているのであれば、モジュール設定ファイルでの特定のアクションのコンフィギュレーション;
-
存在しているのであれば、モジュール設定ファイルでのモジュール全体のコンフィギュレーション (
all
キーの下); -
アプリケーションのデフォルトコンフィギュレーション (
default
キーの下)。
アクションにアクセスする際に必要なクレデンシャルを決めるのに同じ優先ルールが適用されます。
security.yml
設定ファイルは PHP ファイルとしてキャッシュできます。処理は ~sfSecurityConfigHandler
~ クラスによって自動管理されます。
~認証~
security.yml
のコンフィギュレーションはアプリケーションごとにインストールされ、デフォルトでは、すべてのユーザーのアクセスが許可されます:
---
default:
is_secure: false
アプリケーション全体ですべてのユーザーの認証が必須にするには、アプリケーションの ~security.yml
~ ファイルのなかで、is_secure
キーを true
にセットします。
認証されていないユーザーがセキュアなアクションにアクセスしようとすると、symfony はリクエストを
settings.yml
で指定されているlogin
アクションに転送します。
モジュールの認証要件を修正するには、config/
ディレクトリのなかで security.yml
を作り、all
キーを定義します:
---
all:
is_secure: true
モジュールの単独のアクションの認証要件を修正するには、モジュールの config/
ディレクトリのなかで security.yml
ファイルを作り、アクションの名前の下側でキーを定義します:
---
index:
is_secure: false
login アクションをセキュアにすることはできません。これは無限ループを避けるためです。
~承認~
ユーザーが認証されているとき、~クレデンシャル~を定義することで、一部のアクションへのアクセスを細かく制限できます。クレデンシャルが定義されているとき、ユーザーはアクションにアクセスするための必須クレデンシャルをもたなければなりません:
---
all:
is_secure: true
credentials: admin
symfony のクレデンシャルシステムはシンプルで強力です。クレデンシャルはアプリケーションのセキュリティモデルを記述するために必要なものを表現できる文字列です (グループもしくはパーミッションのようなもの)。
複雑なクレデンシャル要件を記述できるようにするために、credentials
キーは配列記法を使ったブール演算をサポートします。
ユーザーがクレデンシャル A かつクレデンシャル B をもたなければならない場合、これらのクレデンシャルを角かっこで囲みます:
---
index:
credentials: [A, B]
ユーザーがクレデンシャル A またはクレデンシャル B をもたなければならないとき、これらのクレデンシャルを2つのペアの角かっこで囲みます:
---
index:
credentials: [[A, B]]
任意の数のクレデンシャルによって任意の種類のブール式を表すために、複数のかっこを混ぜることもできます。
インデックス
Document Index
関連ページリスト
Related Pages
日本語ドキュメント
Japanese Documents
- 2011/01/18 Chapter 17 - Extending Symfony
- 2011/01/18 The generator.yml Configuration File
- 2011/01/18 Les tâches
- 2011/01/18 Emails
- 2010/11/26 blogチュートリアル(8) ビューの作成
リリース情報
Release Information
- 2.0 : 2.0.15(2011/05/30)
Symfony2日本語ドキュメント - 1.4 : 1.4.18(2012/05/30)
Changelog