[FuelPHP]独自オリジナル認証ドライバをsimpleauthを参考に実装する1
認証ドライバの作成方法についてメモ
FuelPHPで認証用に用意されているAuthパッケージがある。Authパッケージを既に実装しているsimpleauthドライバを使用すると簡単に認証機能を実装できる。しかし、simpleauthの仕様にあわせてテーブルカラムを用意しなければならなそう?なので、中で何をやっているか解析しつつ独自にドライバを作成。
※simpleauth仕様:
http://press.nekoget.com/fuelphp_doc_1.2/packages/auth/simpleauth/intro.html#/database
■参考
•公式サイト
http://press.nekoget.com/fuelphp_doc_1.2/packages/auth/drivers.html
※情報が少なく全然役に立たない
•公式ドキュメント
http://press.nekoget.com/fuelphp_doc_1.2/packages/auth/simpleauth/login.html
http://press.nekoget.com/fuelphp_doc_1.2/packages/auth/simpleauth/groups.html
http://press.nekoget.com/fuelphp_doc_1.2/packages/auth/simpleauth/acl.html
※英語だがAPIマニュアルとして多少役立つ
•simpleauth[packages/auth/classes/auth/配下]の実装
•親クラスdriver.php[packages/auth/classes/auth/配下]の実装
※取り込み元のコードなのでほとんどこれらを参考
実装要件
今回はドライバ名は「baseauth」にします
そしてuserテーブル構成は以下のようにします
CREATE TABLE `tb_users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL, `password` varchar(255) NOT NULL, `group` int(11) NOT NULL DEFAULT '1', `email` varchar(255) NOT NULL, `last_login` int(11) NOT NULL, `auth_type` int(11) NOT NULL DEFAULT '1', `salt` varchar(255) NOT NULL, `dlt_flg` tinyint(1) NOT NULL, `created_at` int(11) NOT NULL, `updated_at` int(11) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `username_email` (`username`,`email`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
auth_typeはログイン画面のbasic認証か各SNS(Twitter,Facebook etc)認証かのタイプを格納するつもり(とりあえず)。ここではbasic認証のみのため、常に1で良い。dlt_flgは削除されたときに物理削除をさけるため、論理削除とするため。groupは今回は管理者adminと一般ユーザのuserのみとする。
ドライバの準備
まずは下記3点を準備する。
•Login (Auth_Login_Driver).
•Group (Auth_Group_Driver).
•Acl (Auth_Acl_Driver).
公式サイト:http://press.nekoget.com/fuelphp_doc_1.2/packages/auth/drivers.html
つまり
fuel/app/classes/authフォルダへ以下3つのフォルダを用意し、それぞれにドライバ名をつけたphpファイル「baseauth.php」を用意する。
fuel/app/classes/auth/login
fuel/app/classes/auth/group
fuel/app/classes/auth/acl
親クラスdriver.php内で抽象メソッドとして宣言しているものをとりあえずbaseauth.phpへすべて実装しておきます。
abstract protected function perform_check(); abstract public function validate_user(); abstract public function login(); abstract public function logout(); abstract public function get_user_id(); abstract public function get_groups(); abstract public function get_email(); abstract public function get_screen_name();
abstract public function member($group, $user = null); abstract public function get_name($group);
abstract public function has_access($condition, Array $entity);
これら各メソッドの処理を実装したらドライバができるはずです。それぞれメソッドでなにをやるかはsimpleauthの実装を見ながらゆっくり考えていこうと思います。
configファイル準備
simpleauthのconfigファイルもそのまま流用。
「fuel/packages/auth/config」フォルダにあるsimpleauth.phpを「fuel/app/config」フォルダにbaseauth.phpとしてコピー。
設定情報を下記のように変更。ついでに不要なものは削除。
login_hash_saltはログイン認証後にSessionの認証をするために使用する文字列。ある程度の文字列にするとセキュリティ的に有効。simpleauthの仕様と同様に固定指定とする。
return array( 'login_hash_salt' => 'ZegakljelktPm16AA$Y/dlgadkjjelijmaaZe', 'groups' => array( 1 => array('name' => 'Users', 'roles' => array('user')), 100 => array('name' => 'Administrators', 'roles' => array('admin')), ), 'auth_type' => array( 1 => array('type' => 'Basic'), 2 => array('type' => 'Twitter'), 3 => array('type' => 'Facebook'), ), );
authファイル準備
「fuel/packages/auth/config」フォルダにあるauth.phpを「fuel/app/config」フォルダにコピー。
そしてBaseAuthをドライバとして登録。
saltは親クラスdrivers.phpでパスワードに付与して暗号化する文字列。ある程度複雑な文字列の方がセキュリティ上よい。ただ固定していのため、ブルートフォースに負ける可能性が高い。別メモ参照
return array( 'driver' => 'BaseAuth', 'verify_multiple_logins' => false, 'salt' => 'b70Ga(Z0s4zu&1!cR#DoXrAgaa7&6aTsM$C/)ZmkZ00bkaz', );
今回はここまで
その他おすすめの備忘録
- [FuelPHP]独自オリジナル認証ドライバをsimpleauthを参考に実装する2
- [FuelPHP]完成?:独自オリジナル認証ドライバをsimpleauthを参考に実装する3
- [FuelPHP]サンプルデモアプリ「BaseDemoプロジェクト」アップ ※オリジナル認証ドライバ込
- [FuelPHP]opauthライブラリでFacebook認証を速攻実装する
- [FuelPHP]opauthライブラリでTwitter認証を速攻実装する
- [FuelPHP]simpleauthのsaltの可変指定について
- [FuelPHP]created_atとupdated_atのUNIXタイムスタンプとdatetime
- [FuelPHP]DB::queryの戻り値をModel型で返す方法
- [FuelPHP]GitHubエラー:fatal: Not a git repository: fuel/core/../../.git/modules/fuel/core
- [FuelPHP]opauthライブラリfacebook認証のアクセストークン有効期限メモ
2 Responses to [FuelPHP]独自オリジナル認証ドライバをsimpleauthを参考に実装する1
コメントを残す コメントをキャンセル
コメントを投稿するにはログインしてください。
coffee-break
Don't write code that useless.
1日5杯はコーヒー、カフェオレ飲みます。狭心症のため安静にします☆松本 雄貴
Kotlinでサービスリリース目指す!
iOSでチャットアプリ作成中。自然言語解析LSIを習得中
Mac / Android・iOS / Rails / Oracle
2017年 Lpic L2取得
2012年 Android技術者資格取得
2010年 OracleMasterGold10g取得
2008年 CCNAQiitaもたまに投稿
https://qiita.com/y-matsumoto東京近郊で常駐開発探してる方はこちらよりご連絡ください
SES企業でパートナー会社を探している企業様はこちらよりご連絡ください
スプリットカメラ iOS / Android
音声認識で聞いた日付から曜日当てアプリ Android
ソーシャルタイマー Android
カテゴリー
- ActiveRecord (2)
- Android (52)
- AndroidStudio (10)
- Ansible (1)
- AWS (1)
- Bash (18)
- Blog (7)
- BootStrap (1)
- CentOS (16)
- Chef (1)
- css (2)
- Eclipse (5)
- error (1)
- Facebook (2)
- Firebase (1)
- FuelPHP (16)
- Git (22)
- GitHub (3)
- Gradle (2)
- GraphAPI (1)
- Grunt (1)
- heroku (2)
- illustrator (1)
- iOS (17)
- Java (4)
- Jenkins (1)
- jQuery (3)
- Kotlin (2)
- Mac (22)
- nginx (1)
- Node.js (3)
- peco (1)
- php (5)
- Python (1)
- Rails (16)
- Ruby (11)
- shell (1)
- SNS (1)
- Swift (2)
- tmux (2)
- Vagrant (6)
- Vim (6)
- windows (2)
- WordPress (3)
- zsh (4)
- フリーランス (1)
- ライブラリ (1)
- 勉強会 (2)
- 宣伝 (1)
- 未分類 (2)
最近の投稿
- [MAC]HighSierraでgitプッシュエラー「Unable to negotiate with xxx.xxx.xxx.xxx port xx: no matching cipher found. Their offer: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se fatal: Could not read from remote repository.」
- [iOS]iOS11からFacebook,Twitter連携(シェアなど)廃止の対応方法
- [iOS]速報2017AppleSpecialEventのiOS11、iPhone8など発表内容について
- [iOS][Firebase]The default Firebase app has not yet been configured. Add `[FIRApp configure];
- [iOS]2017年9月リリースのiOS11で開発者が対応するべきこと
- 今人気の現金化サービスCASH(キャッシュ)を使ったレビュー
- [Pandoc][Mac]pandocでmarkdownからwordファイル作成
- [Android]映画サマーウォーズの聞いた日付(誕生日)から曜日当てをアプリ音声認識で簡単に実現
- [Android]起動しているActivityを取得するadb shell コマンド
- [Android][Kotlin]kotlin学習で参考になるサイト一覧
2023年12月 月 火 水 木 金 土 日 « 5月 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 アーカイブ
- 2018年5月
- 2017年9月
- 2017年8月
- 2017年7月
- 2017年6月
- 2017年5月
- 2017年2月
- 2017年1月
- 2016年12月
- 2016年7月
- 2016年6月
- 2016年1月
- 2015年12月
- 2015年11月
- 2015年10月
- 2015年9月
- 2015年8月
- 2015年7月
- 2015年6月
- 2015年5月
- 2015年4月
- 2015年3月
- 2015年2月
- 2015年1月
- 2014年12月
- 2014年11月
- 2014年6月
- 2014年5月
- 2014年4月
- 2014年3月
- 2014年2月
- 2014年1月
- 2013年12月
- 2013年11月
- 2013年9月
- 2013年8月
- 2013年7月
- 2013年6月
- 2013年5月
- 2013年4月
- 2013年3月
- 2013年2月
- 2013年1月
- 2012年12月
- 2012年10月
- 2012年5月
- 2010年6月
エントリ
[FuelPHP]独自オリジナル認証ドライバをsimpleauthを参考に実装する1 | Memorandum blog – http://to-developer.com/blog…
[FuelPHP]独自オリジナル認証ドライバをsimpleauthを参考に実装する1 | Memorandum blog – http://to-developer.com/blog…