CGI版のPHPでAPIへのアクセス時に認証を行うには?
PHPで作られたAPIがあり、CGI版のPHP5.4が動作するサーバー上で動かそうとしています。
無断でAPIを利用されないようにするために何らかの認証を持たせたいのですが、
DIGEST認証やBASIC認証はモジュール版で無ければ動かないようで、正しいパスワードを入力しても再入力を求められてしまいます。(検証した方法: 『PHPによるHTTP認証』)
そのためタイムベースのワンタイムパスワードなどの別の手段で代替しようと考えていますが、このようなケースでは一般的にどのような認証方法を用いるのが最適なのでしょうか?
条件:
- 認証に必要な情報はhtpasswdではなくPHPファイルから読み込まれます。
- APIサーバーもクライアントも自分で管理しているサーバーで、ある程度自由に変更できます。
- データベースを扱うAPIサーバーから取得した情報を、別のサーバーにある複数のサイト上で表示するのが目的です。
- サーバーとクライアント間の通信は暗号化されていません。(非SSL)
- 認証は curl の POST で行う予定です。
具体的な実装方法というよりも方式や流れを知りたいと思っています。よろしくお願いします。
追記:
.htaccessに下記を追加する方法も試しましたが、特定のサーバー(さくら)では機能したものの目的のサーバー(heteml)では機能しませんでした。
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]