• WordPressに認証をつけるには

    Date: 2011.03.20 | Category: WordPressの設定 | Tags:

    WordPressに認証をつけるには、.htaccessでBasic認証をつける方法と、プラグインで実装する方法、記事自体を見えなくする方法の3つがあります。

    .htaccessで認証

    WordPressの管理画面(ダッシュボード)には、認証が必要ですが、ブログ自体に認証をつける最も簡単な方法は、.htaccessでBasic認証をする方法です。
    たとえば、特定の人にしかブログを見られたくない。とか、誰にも見られたくない。なんて場合は、この認証が簡単です。
    ただし、このやり方は Windows Live Writer のようなアプリを使ってブログを更新している場合は、投稿ができなくなるので注意が必要です。

    その場合は、プラグインによる認証がお勧めです。

    WordPressでは、ディレクトリ上に「.htaccess」というURLを打ち込んでも見えない設定ファイルが作られます。
    FTPなどでディレクトリを参照してやると見つかるはずです。
    このファイルの最初の方に、以下を付け加えます。

    AuthUserFile  /home/xxxx/xxxxx/xxxx/.htpasswd
    AuthName  “Input Your Name And Password”
    AuthType  Basic
    order deny,allow
    deny from all
    allow from .jp
    require valid-user

    /home/xxxx/xxxxx/xxxx/.htpasswd は、暗号化されたパスワードが記述されているファイルへのフルパスで、慣用的に「.htpasswd」というファイル名が使われます(この名前でなくてもかまいません)。
    大事なことは、ファイル名の一番最初の文字が「.(ドット)」であることで、こうすることによって外部からは中身が見えなくなります。(暗号化されているので、見られてもよほどのことがない限り、パスワードはわからないと思いますが。実際には .ht で始まるファイル名だと、外部から見えなくなる)
    また、ファイルへのパスは、フルパスになります。
    レンタルサーバーを変えた場合にフルパスが変更になった場合、必ず変更しておいてください。

    認証画面 AuthName  “Input Your Name And Password” は、パスワード認証時に左の画像の、■色で囲った部分に表示される文章です。
    スペースを空ける場合は「 “ 」で囲みます。
    日本語でも可能ですが、文字化けする場合もあるので半角英数字で。

    AuthType  Basic は、左のような画像のダイアログが表示される認証方式で、基本的には認証というとBasicになります。
    もう一つ、セキュリティーがアップした「 Digest 」もあるんですけれど、サーバーが対応していない場合があるので、Basicでいいと思います。

    order deny,allow
    deny from all
    allow from .jp
    これは、アクセス制限です。
    日本からのアクセス(ホスト名がjpでおわるもの)のみ、許可させる。という場合の設定です。
    外国からのアクセスは、意外とクラッキング攻撃を受ける可能性があるので、認証が必要な場合は、日本からのみアクセスを許可させた方がいいかもしれません。
    この部分は、認証とは関係ありません。

    require valid-user 意外とハマったのがこれ。
    これを記述しないとどうもうまく認証してくれない。

    この意味は、暗号化されたパスワードファイル(.htpasswd)は、

    ユーザー1 : 暗号化されたパスワード1
    ユーザー2 : 暗号化されたパスワード2

    のように、ユーザー名と暗号化されたパスワードが1行に記述され(ユーザー名との間は、: (ダブルコロン)で区切られる)、複数のユーザーがいる場合は、1行1行別けて記述されるんですけれど、ユーザー名とパスワードの組み合わせが正しければ、記述されているユーザーすべてがログインできる場合は、「 valid-user 」を指定します。
    これに対して、記述されたユーザーのうち、特定のユーザーしかログインさせない場合は、「 require user ユーザー名 」のように記入。

    基本的には、この一文はなくても認証が動作するんですけれど、なぜか私の環境ではこの1行の記述がないと認証画面になってくれない(すべて許可してしまう)・・・。

    なので、どうしても認証がうまくできない。というのであれば、この行を追加してください。

    .htaccessファイルの作成の仕方

    さて、さっそく.htaccessファイルを作りたいとこですが、Windowsでは、ファイル名が「. (ドット)」で始まるファイルは、メモ帳では作れません。
    なので、上記の内容を記したファイルをメモ帳で作成し、「 aaa.txt 」で保存します。

    FTPでアップロード続いて、FTPでサーバーにアップロードします。
    アップロード先は、一番上のディレクトリでかまいませんが、一番上に配置すると、その下のディレクトリすべてが対象になってしまいます。
    なので、もし、特定のディレクトリだけに該当させた場合は、該当ディレクトリにアップロードします。

    アップロードが完了したら、FTP上で「 aaa.txt 」を右クリックし、左の画像のように「名前の変更」を選択します。
    そして、

    .htaccess

    というファイル名に変更してください。

    注意点

    表示・編集を選択 WordPressでは、最初からサーバー上に.htaccessが作成されています。
    なので、実際にはFTPで.htaccessファイルを右クリックし、表示されたメニューの「表示/編集」を選択して、認証用の命令を追加してください。

    誤ってすでにある.htaccessを上書きしてしまうと、アクセスできなくなる場合もあるので注意してください。

    httpd.confで認証

    自宅サーバーや、専用サーバーで運営している人は、httpd.confをいじれる人もいるかもしれません。
    その場合は、http.confで設定した方が混乱しないかも(サイトを複数もっている場合、どれに認証をかけたかわからなくなったり・・・など)。
    httpd.confで認証をする場合も、.htaccessと変わりありませんが、以下はファイル単位で認証をかける場合の例。

    <Files ~ “example.php”>
    AuthType Basic
    AuthUserFile  /home/xxxx/xxxxx/xxxx/.htpasswd
    require valid-user
    </Files>

    <Files ~ “example.php”></Files> は、○○というファイルだったら、以下を実行する。の意味で、例では「 example.php 」というファイル名のファイルにアクセスがあったら、Basic認証を行う。ということになります。

    プラグインによる認証

    プラグインによる認証20110322182334
    上の左の画像のように、WordPressのブログにアクセスしようとすると認証画面が表示されるようにするには、プラグインを使用します。
    プラグインによる認証方法も簡単に実装することができます。
    なおかつ、パスワードをクッキーで記憶させたり、パスワードを忘れた場合でも対応できたりと、 なかなかクールな認証方法を提供したい場合は、この手法がベストです。

    右の画面は、パスワードを忘れた場合。
    登録してあるメールアドレスにパスワードをリセットするためのページへ行くURLが記載されている。

    プラグインの入手

    WordpressPassword さて、こんなすばらしいプラグインですが、WordPress Plugins/JSeriesのサイトで入手できます。

    ちょっと日付は古いですが、WordPress3.1でも動作しました。
    上のリンクをクリックし、「WordpressPassword-Japanese ver0.1 最新版」をクリックします。

    WordPressPassword-ja-0.1.zipというファイルがダウンロードできるので、適当な場所にダウンロードします。

    プラグイン 続いて、ダウンロードした「WordpressPassword-ja-0.1.zip」を右クリックし、「エクスプローラ」を選択。
    すると、左のような2つファイルが入っています。
    このうちの WordPressPassword-ja.mo という方が必要になってきます。

    FTPでディレクトリを作る

    続いて、FTPで「wp-content」の中の「plugins」の中に

    wp-password

    というディレクトリを作成し、先ほどの「 WordPressPassword-ja.mo 」をその中にアップロードします。

    プラグインによる認証アップロードが完了したら、さっそくアクセスしてみましょう。
    左のようにダッシュボードにログインする時と同じログイン画面になるはずです。
    パスワードは、ダッシュボードログイン用のものと同じになります。

    このプラグインによる認証は、ユーザー名とパスワードを教えてしまうと、ダッシュボードにもログインできてしまうのが弱点といえば弱点。
    ただ、誰にも見られたくない日記や、私の場合はメモ書きなんかにWordPressを使っているので、認証機能は非常に便利。
    会社にいても家にいても、そしてスマートフォンからもユーザー名とパスワードさえわかっていれば、参照、編集が可能なので、ブログ=日記 ではなく、最近はやりのクラウド的な使い方としてもWordPressは本領を発揮すると思います。

    記事自体にパスワードをつける

    最後に紹介する方法は、記事自体に認証をつける方法。
    WordPress3では、記事自体にパスワードをつけることが出来るようになりました。パスワードを入力あ記事の投稿画面の公開設定(右上の部分)にある、「公開状態」をクリックすると、「一般公開」「パスワード保護」「非公開」の3つから公開状態を選べるようになりました。

    「パスワード保護」を選択すると、パスワード入力欄が表示されるので、パスワードを入力します。
    この状態で公開すると、他の記事は他人に見せることが出来ても、パスワードを設定した記事は、閲覧するのにパスワードが必要になってきます。

    他の記事は見せたいけれど、見せたくない記事もいくつか投稿したい場合なんかは、このやり方が一番スマートかもしれません。