Opauth - はじめに

Opauth は OAuth または OpenID プロバイダに対する認証のためのサポートを提供するマルチプロバイダ認証フレームワークです。 アプリケーションで Opauth を使用することにより、一連の新たな認証情報を作り、新しいパスワードを覚えておくことの代わりに、OAuth を使うメジャーなウェブアプリケーションの一つからユーザーが既存の認証情報を利用することができます。 OAuth をサポートしているWebアプリケーションには、 Facebook 、 Twitter 、 Google 、 Instagram 、 Paypal 、 LinkedIn 、 Vimeo 、 Foursquare や Flickr が含まれています。

これらの OAuth プロバイダのいずれかから、 OAuth のサービスを使用するだけでなく、シングルサインオンも同様に提供しています。 これらのサービスのいずれか (例えば、 Facebook) のウェブサイトにユーザが既にログインしている場合に、あなたのウェブサイトに来て Facebook のアカウントを使用しログインをしようとすると Opauth は既にログインしていることを検出するため、認証情報の入力をユーザーに求めることはありません。 その代わりに、ユーザーが意識することなくアプリケーションへログインされます。

統合

Auth パッケージは、アプリケーションで簡単に使用できるような Opauth ライブラリのラッパークラスを提供し、 Simpleauth と Ormauth ドライバセットの両方とのシームレスな統合を提供します。

The complete integration means that when a user visits your application for the first time and chooses an OAuth provider as the means to login, the Opauth integration class will transparently create a local user account, and logs the user in using that local account. This means that all functionality of the Auth driver set you have selected (such as group assignments or ACL's) will also work for users logging in through Opauth.

You can also enable multiple provider support. This allows a user to link additional OAuth providers to an existing account, whether it is an account transparently created, or an account created manually. So whether they want to use their Facebook, Twitter or Google credentials, your application sees the same user account, and ACL's can be applied without having to worry about a user being in your system multiple times, which would be more difficult to manage.

インストールと設定

もしこれが Auth パッケージとの最初の出会いならば、最初に SimpleauthOrmauth のセクションを確認し、どちらを利用するか決定し、指示に従ってインストールしてください。 一旦それをしたならば、ここに戻り読み進めてください。

Opauth を使用できるようにするには、最初に Composer から Opauth ライブラリをインストールする必要があります。 FuelPHP をインストールしたルートで composer.json ファイルに Opauth ライブラリを追加します:

"require": {
	"php": ">=5.3.3",
	"monolog/monolog": "1.5.*",
	"opauth/opauth": "0.4.*",
	"fuelphp/upload": "2.0"
},

Opauth ライブラリ自体に加え、OAuth のプロバイダごとにアプリケーションでサポートしたいストラテジーのパッケージをインストールする必要があります。 Composer パッケージとして何がすぐに利用できるかどうかは Packagist のウェブサイトを確認してください。 私たちはあなたが Facebook 、 Google と Github を使いたいとしましょう。 あなたの composer.json はこのようになります:

"require": {
	"php": ">=5.3.3",
	"monolog/monolog": "1.5.*",
	"opauth/opauth": "0.4.*",
	"opauth/facebook": "dev-master",
	"opauth/google": "dev-master",
	"opauth/github": "dev-master",
	"fuelphp/upload": "2.0"
},

この後、すべてをインストールするには Composer を実行します:

$ cd /data/www/myfuelwebsite
$ php composer.phar update

Opauth は OAuth の認証情報およびローカルユーザアカウントの関係が格納されているデータベーステーブルを必要とします。 Simpleauth または Ormauth のいずれかをインストールしている場合にはテーブルは自動的に作成されます。

設定

Opauth ラッパー認証システムは、設定ファイルを使用して構成されており、予想通り opauth.php を呼び出している。 デフォルトファイルは Auth パッケージで与えられている。 任意の変更を加える前には、app/config フォルダにこのファイルをコピーする必要があります。

下記の設定値が定義されています:

パラメータ デフォルト 説明
link_multiple_providers boolean
true
単一のローカルアカウントへの複数の OAuth プロバイダのリンクをサポートするかどうか。 false に設定されていて、かつプロバイダが既にリンクされている場合に、 2つ目のプロバイダを使用した場合、ユーザへはエラーメッセージが表示されログインが拒否されます。
default_group int
1
ユーザーが初めて OAuth プロバイダを利用する時に、ユーザーが意識することなく作成された新しいローカルアカウントに割り当てられるグループ ID 。 デフォルトでは、 Simpleauth での 'users' グループの ID です。
debug boolean
false
true の場合には Opauth ライブラリとストラテジークラス内のデバッグメッセージを有効にします。 プロダクションサイトではこれを有効にしないでください!
security_salt string
null
認証応答の署名鍵のソルトに利用されるランダムな文字列。 定義を必要としており、十分に長く、そして十分にランダムであることを確かめてください!
security_iteration int
300
署名のハッシュを生成するときに使用する繰り返し回数。回数が多いほどより安全な署名鍵となりますが、 しかし、ログイン処理も同様に遅くなります。これは無難なデフォルト値であると思われます。
security_timeout string
'2 minutes'
認証応答が有効と見なされる時間を制限することを許可。 Starting from auth response generation (ie. the time when callback is first requested) to the time when auth response is received and attempts validation. strtotime() と互換性のある任意の値を使用します。
Strategy array
array()
アプリケーションでサポートしているストラテジーのリストには、ストラテジー毎にあなたのアプリケーション ID およびアプリケーションシークレット (として OAuth プロバイダからあなたに割り当てられた) 、そして、その他オプションの設定項目が含まれているでしょう。 これは同じプロバイダに対して複数のストラテジーを定義することができます。 詳細については、このページ を参照してください。

コールバックが来るときの OpAuth 認証ドライバの違いに注意をしてください。例えば、 Facebook は、コールバック (リダイレクト) URL を定義する必要はありませんが、 Twitter は、 http://example.com/<controller>/callback/ のような形で必要となり、 そして、 Google ではこのように: http://example.com/<controller>/<method>/google/oauth2callback ("method" は、インスタンス化している Auth_Opauth ドライバのコントローラの中でのメソッド名) なります。

Pay very close attention to the value of default_group. For Ormauth, group id's are not fixed as they are autoincrement in your database table. You don't want to define the wrong one, and ending up giving every OAuth user administrator access!!!