Caution: You are browsing the legacy symfony 1.x part of this website.
SymfonyWorld Online 2020
100% online
30+ talks + workshops
Live + Replay watch talks later

security.yml 設定ファイル

1.4
Symfony version
1.2
Language

アプリケーションの認証 (authentication) と承認 (authorization) の要件は security.yml ファイルに記述します。

tip

security.yml ファイルのコンフィギュレーションは user ファクトリクラスによって使われます (デフォルトは sfBasicSecurityUser)。認証と承認の実行は security フィルタが担います。

デフォルトでは、security.yml ファイルはアプリケーションの config/ ディレクトリに配置されています。アプリケーション全体のセキュリティ要件はこのファイルに記述します (default キーの下)。

default:
  is_secure: false

コンフィギュレーションカスケードで述べたように、security.yml ファイルでは、コンフィギュレーションカスケードのメカニズムがはたらいており、定数を定義することができます。

アプリケーションのデフォルトコンフィギュレーションをオーバーライドするには、 security.yml ファイルをモジュールの config/ ディレクトリに配置します。メインキーはアクションの名前で、プレフィックスの execute はつけません (たとえば executeIndex メソッドであれば index)。

アクションにアクセス制限がかけられているかどうかを判断するために、symfony は次の順序で情報を探します。

  • モジュールの設定ファイルに存在しているのであれば、特定のアクションのコンフィギュレーション。

  • モジュールの設定ファイルに存在しているのであれば、モジュール全体のコンフィギュレーション (all キーの下)。

  • アプリケーションのデフォルトコンフィギュレーション (default キーの下)。

アクションにアクセスする際に必要なクレデンシャルを決めるのに同じ優先ルールが適用されます。

note

security.yml ファイルは PHP ファイルとしてキャッシュされます。処理は sfSecurityConfigHandler クラスにゆだねられます。

認証

security.yml ファイルのコンフィギュレーションはアプリケーションごとにインストールされ、デフォルトでは、すべてのユーザーのアクセスが許可されています。

default:
  is_secure: false

すべてのユーザーの認証をアプリケーション全体で必須にするには、アプリケーションの security.yml ファイルにおいて、is_secure キーに true をセットします。

note

アクセス制限がかけられたアクションに認証されていないユーザーがアクセスしようとすると、リクエストは settings.yml ファイルで指定されている login アクションに転送されます。

モジュールの認証要件を修正するには、 security.yml ファイルを config/ ディレクトリに配置し、all キーを定義します。

all:
  is_secure: true

個別のアクションの認証要件を修正するには、security.yml ファイルをモジュールの config/ ディレクトリに配置し、アクションの名前の下側でキーを定義します。

index:
  is_secure: false

tip

無限ループに陥らないようにするため、login アクションにアクセス制限をかけられないようになっています。

承認

クレデンシャルを定義することで、一部のアクションにアクセスできる認証済みユーザーを細かく指定できます。クレデンシャルが定義されている場合、ユーザーはアクションへのアクセスに必須のクレデンシャルをもっていなければなりません。

all:
  is_secure:   true
  credentials: admin

symfony のクレデンシャルシステムはシンプルで強力です。クレデンシャルはアプリケーションのセキュリティモデルをあらわす文字列です (グループもしくはパーミッションのようなもの)。

複雑なクレデンシャル要件をわかりやすく示すことができるようにするために、credentials キーの設定のなかで配列記法を使ったブール演算がサポートされています。

ユーザーがクレデンシャル A かつクレデンシャル B をもっていなければならないことを示すには、これらのクレデンシャルを角かっこで囲みます。

index:
  credentials: [A, B]

ユーザーがクレデンシャル A またはクレデンシャル B をもっていなければならないことを示すには、これらのクレデンシャルを2つのペアの角かっこで囲みます。

index:
  credentials: [[A, B]]

任意の数のクレデンシャルによって任意の種類のブール式を示すために、複数のかっこを組み合わせることもできます。