cakeでシンプルにBasic認証を実装できる Cake-simple-http-authをリリースしました

cake-simple-http-authというプラグインをリリースしました

簡単ににBasic認証をCakephpで実装できるPluginです。

https://github.com/webuilder240/cake-simple-http-auth

Basic認証が危ないとかそういう話は置いといて、個人的な需要はあるんで、サクッと作ってみました。

作った理由

大体のBasic認証の方法って、.htaccessとかにBasic認証の設定をカリカリ書いていって、みたいな例があるのですが、 ngnix使ってますし、かと言ってconfファイルにも書きたくないものです。 なので、アプリケーション側で実装しよう。という単純な発想からサクッと作ったCakeプラグインです。

実はngnixのノウハウがあんまりなく、confファイルに書いても404が出てしまってハマり、嫌気が差してcakephp側で実装したということは内緒です。

使用方法

README.mdを確認してもらえればわかると思いますが、日本語で少し詳し目に説明したいと思います。

インストール方法

例によってPackegistに登録されているパッケージなので、Composerを導入している人はComposerでインストールしましょう。

composer.json
1
2
3
4
5
{
  "require": {
    "webuilder240/cake-simple-http-auth": "0.0.1"
  }
}

簡単な使い方

サーバーの環境変数をセットする

ngnix もしくは apacheに環境変数(‘DEVELOP_ENV’)をセットしましょう。

  • ngnixかつphp5-fpmを使用している時の設定例
ngnix.conf
1
fastcgi_param DEVELOP_ENV stg;
  • apacheを使用している時の設定例
apache.conf
1
SetEnv DEVELOP_ENV 'stg'

Cakephp側の設定

  • セットした環境変数用の認証ユーザーとパスワードをセットしましょう。
Config/bootstrap.php
1
2
3
4
5
6
7
8
9
10
11
12
<?php

    CakePlugin::load('SimpleHttpAuth');
  // or
    //CakePlugin::allload();

    Configure::write('SimpleHttpAuth.Config',[
        'stg' => [
            'user' => 'test',
            'password' => 'test',
        ],
    ]);
  • 使用したいControllerでComponentを読み込みましょう。
App/AppController.php
1
2
3
4
5
6
7
8
<?php
    App::uses('Controller','Controller');

    class AppController extends Controller
    {
        public $components = [
            'SimpleHttpAuth.Basic',
        ];

以上で、設定した環境変数(今回の例だと、stg)に応じてBasic認証がかかるようになります。 .htaccessとか触らなくていいんで、 適当にBasic認証をかけたい時にinstallと環境変数1つで実装できるので、 あと、apacheでもngnixでも両方に対応しているんで、書きなおしたりが不要になるし、便利そうな気はしますよね。

今後の展望

  • 複数ユーザーでの認証対応
  • Basic認証だけでなくDigest認証の実装

これくらいはやってみてもいいかなってかんじです。

もう少し設定が柔軟にできるようにもしたいかな。 そうすると、環境変数にこだわることはなくなるのかも。