Auth パッケージ

Auth パッケージは Fuel における標準化された認証インターフェイスを提供します。 これにより、ユーザは自分自身で新しいドライバを書くことができ、 基本的なメソッドを保つことで、古いコードに新しいドライバを簡単に統合することもできます。

はじめに

誰もが満足するかすべて実装されている Auth パッケージを作成することは不可能です。 フレームワークとして 我々はあなたが認証を行う方法を強制したくありませんが、あなた自身で作成したり他人の作品を使用することを 手助けしたい。 ここで Auth パッケージの出番です。

インターフェースには 3 つのタイプのドライバが含まれています (それ以上のタイプに拡張することもできる): login, group そして ACL です。 login ドライバは、ユーザのログインを処理し同時に複数の login ドライバを扱うことができます。 たとえば、 1 ユーザが 2 つの login ドライバを使用して、同時に Twitter と独自のネイティブのユーザからログインすること が可能です。

次のステップとして、あなたが使用しているログインの種類を気にせず group ドライバを使用し、 2 つのタイプのログインを グループ化することができる。 そして大事なことを言い忘れていましたが、あなたはそれらのグループに特定の権限を付与する ACL ドライバを 使用できます。

上記は使い方の 1 つの例にすぎませんし、それを使う必要もありません。 どのメソッドが 汎用インタフェースの一部であるかとドライバの仕様を理解するために次のセクションを 読んで下さい: ドライバを書く.

含まれているドライバ

Auth パッケージはローカルアクセスを提供する2つのドライバが含まれ、1つ以上のデータベースのテーブルを使用しています。

Simpleauth

名前の通り、これは基本的なドライバセットです。ユーザの情報を収納するのにデータベーステーブルを使い、 グループ、ロール、 ACL に関しては設定ファイルに収納します。ユーザレコード内のシリアライズされた配列にユーザメタデータは 格納されます。それは多くの機能を持っていませんが、ほとんどのアプリケーションでは仕事をすることができます。 Simpleauth についてはここに記載されています。

Ormauth

このドライバセットは Simpleauth ドライバと同様の機能を提供しますが、ユーザ、グループ、ロール、 および権限に関するすべての情報をデータベースに収納し、この情報にアクセスするために ORM モデルを使用しています。 加えて、配列にユーザメタデータは収納しないですが、別のテーブルで ORM の EAV コンテナ機能を使いアクセスします。 API は Simpleauth とほとんど互換性がありますが、ユーザ、グループ、もしくはロールデータを返す関数は ORM オブジェクトインスタンスの配列を返すように違いがあります。 Ormauth についてはここに記載されています。

Auth パッケージは、これらのドライバに必要なテーブル構造を作成するためのマイグレーションファイルが含まれています。 それは作成すべきかを Auth 設定ファイルによって決めているので、最初に設定をする必要があります。

サポートクラス

完全なドライバセットに加え、Auth パッケージには、ドライバのいずれかまたはすべてに追加機能を提供するクラス、 サポートクラスが含まれています。

Opauth

Opauth は、PHP 用のマルチプロバイダ認証フレームワークで、composer パッケージとしてインストールされます。 これは、OAuth または OpenID プロトコルを使用して汎用的な認証を提供し、Facebook や Twitter 、 GitHub などのような人気のある OAuth プラットフォームに対する認証のための出来合いの Strategy の十分なリストを持っています。

Opauth ドライバは Auth パッケージに含まれており、 Opauth と (現在のところ) Simpleauth または Ormauth いずれかとの間のインタフェースになります。 OAuth アカウントをローカルの ACL に使用するなど、ローカルアカウントに OAuth のアカウントをリンクできます。 Opauth についてはここに記載されています。

インストール

Auth パッケージは Fuel の配布物に含まれています。 設定で有効にするだけで利用できます。

'always_load' => array(
	'packages' => array(
		'auth',
	),
),

設定

Auth は config/auth.php ファイルに、下記のキーで設定できます:

パラメータ デフォルト 説明
driver 文字列 | 配列
array('Simpleauth')
ロードする Login ドライバ、最初のドライバが Auth::instance() のデフォルト返り値にもなります。
verify_multiple_logins 論理型
false
ひとつのドライバでログインの成功を確認したあとにも、継続してログインのチェックを行うかどうか。 これにより複数の方法でログインすることが可能。
salt 文字列
'put_your_salt_here'
パスワードのハッシュ化のためにソルトは使用されます。
iterations integer
10000
パスワードのハッシュ化処理で行われた繰り返し回数 (パスワード作成時の"暗号化"の回数) (Auth は PBKDF2 を使用)。 より多く繰り返す方がパスワードは安全になりますが、より多く時間がかかります。あまりに多く繰り返すとサーバーがクラッシュすることがあります!

'verify_multiple_logins' はドライバレベルの設定であることに注意。 Login ドライバ そのものを意味していないし、「ユーザに多重ログインすることを許可する」ということではありません!

auth.php ファイルはこのようになります:

<?php

return array(
	// ドライバ
	'driver' => array('Simpleauth'),

	// 複数ログインを有効にする場合、 true
	'verify_multiple_logins' => true,

	// セキュリティのために、ソルトを設定しましょう
	'salt' => 'Th1s=mY0Wn_$@|+',
);