WordPressへREST-APIで投稿する際のBasic認証を通すために

WordPressでREST-APIでJSONを使って記事を投稿する場合、認証をしないといけない。

認証はとりあえずBasic認証でOK。
本当に運用するサイトなら、セキュリティー確保のために、もっとしっかりした認証方法を使った方がいい。

でも、今回は実験なのでBasic認証で。

そのためにプラグインを入れておく。
(JSON Basic Authentication)
ただしこのプラグイン、WordPressのプラグインのページからは探せなくて、Githubでダウンロード(https://github.com/WP-API/Basic-Auth)。

で、準備万端だと思ったのだけど、レスポンスが401。
認証が失敗しているみたい。

調べてみると(なかなか参考になる情報が見つからなかったけど)、

HTTPリクエストの中のBasic認証の情報部分をApacheが消してしまう、ということ。
Apacheの先にあるWordPressまで、認証情報が届かないため、401が返されてしまうらしい。

通常、Basic認証といえばApacheに対して行うことだから、Apacheが見たらもう要らないと判断されて、その部分のヘッダを削ってリクエストをWordPressへ送るんだろうね。

ということで、

WordPressの入っているディレクトリの.htaccesファイルに以下の記述を入れると、Basic認証のヘッダ情報を消さずにWordPressまで送ってくれる。

RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]

これで401レスポンスは回避できた。

ただし注意点として、追加する場所を間違えてしまと、WordPressが消してしまうので、「# BEGIN WordPress」の前、.htaccessの先頭に書いておくのがいい。

コメント

タイトルとURLをコピーしました