/mod_auth_httprequest

Authentication module for apache/2.2, with HTTP request.

Primary LanguageC

mod_auth_httprequest
  Copyright 2010, Toshiyuki Suzumura, under Apache License, Version 2.0
      http://github.com/suzumura-ss/mod_auth_httprequest
      http://www.apache.org/licenses/LICENSE-2.0

指定URLをHTTP-HEADリクエストして認証します。

(1) 元リクエストの全てのリクエストヘッダと以下のリクエストヘッダにてリクエストします。
    X-AuthHttpRequest-URL:    このリクエストのURL
    X-AuthHttpRequest-Method: このリクエストのメソッド
    X-AuthHttpRequest-Secret: 再帰的なHTTPリクエストを防止する文字列
    例:
      X-AuthHttpRequest-URL: /index.html
      X-AuthHttpRequest-Method: GET
      X-AuthHttpRequest-Secret: b41d38160ff124d7ecfe717e657846db 

(2a) "OK", "Created", "Accepted" の場合は認証されリクエストが継続されます。
    ENV["AUTH_TYPE"], ENV["REMOTE_USER"] がApacheにより追加されます。


(2b) "Unauthorized", "Forbidden" 等その他の場合は認証失敗となりリクエストが中断されます。
    HEADリクエストのレスポンスヘッダが元リクエストのレスポンスヘッダにコピーされます。


= モジュールのロード
  LoadModule auth_httprequest_module /usr/lib/httpd/modules/mod_auth_httprequest.so


= 認証ディレクティブ
  Require   valid-request
  AuthType  AuthHttpRequest
  AuthName  X-Auth-HttpRequest  (無視されます)


= コンフィギュレーション
  HttpRequestAuth-RequestURL    "url"
    実際に認証をするHTTPリクエストのURLを指定します。
    文字列中に %s を指定すると、元リクエストのパスに置換されます。
    デフォルトは "locaslhost%s" で、同じURLにHEADリクエストします。
    例:
      HttpRequestAuth-RequestURL  "localhost:8080/cgi-bin/auth.cgi"
      - 8080の/cgi-bin/auth.cgiにHEADリクエストします。
      HttpRequestAuth-RequestURL  "localhost:8080%s"
      - 8080の同じURLにHEADリクエストします。

  HttpRequestAuth-Secret        "filename"
    再帰的なリクエストを検出するための文字列(secret)を生成する元ファイルを指定します。
    デフォルトでは再帰的リクエストを検出しません。
    セキュリティ上の理由から、外部サービスを提供する場合はデフォルトで利用することを強く奨励します。
    例:
      HttpRequestAuth-Secret  "/dev/random"
      - 乱数を使用します。
        この場合httpdのインスタンス毎に異なるsecretになり再帰的なリクエストの検出が困難
        になります。再帰的な呼び出しにならないように VirtualHost などを利用してください。


  HttpRequestAuth-ErrorDocument "string"
    カスタムエラードキュメントを指定します。
    文字列中に %d を指定すると、レスポンスコードに置換されます。
    指定しない場合はApacheの設定に従います。
    例: 
      HttpRequestAuth-ErrorDocument   "Error %d"
      - 401エラーのとき "Error 401" がレスポンスボディになります。