2009-11-13 23 views
6

自分のウェブサイトのアカウント作成ページを指すようにErrorDocument 401を設定しましたが、すべてのブラウザがこのリダイレクト(Safari)を尊重しているとは限りません。Apache認証:障害発生時に確実にリダイレクトしますか?

また、他のブラウザ(Firefox、Chrome)では、パスワードを尋ねずにErrorDocumentを表示することはありません。これにより、多くのユーザーが、アカウント作成ページを見ずに多くのパスワードを試行した後で試してみることをあきらめてしまいます。

リダイレクトをより信頼できるものにする方法はありますか?基本認証を完全に破棄しないでください。

答えて

15

あなたの質問に対する簡単な答えはいいえです。カスタム認証を実装せずにこれをより信頼できるものにすることはできません。

ErrorDocument 401指示文で指定したページがFirefoxとChromeで表示される唯一の方法は、キャンセルボタンをクリックすることです。また、401 HTTPコードで送信されたリダイレクトはありません。むしろ、ErrorDocument 401ディレクティブで指定されたドキュメントの内容です。あなたは、HTMLのmetaタグを使用してリダイレクト行うことができますあなたの問題へ

<Location "/protected"> 
    AuthUserFile /path/to/users 
    AuthName "This is protected area" 
    AuthGroupFile /dev/null 
    AuthType Basic 
    Require valid-user 

    #ErrorDocument 401 /register.html 
    ErrorDocument 401 "<html><meta http-equiv=\"refresh\" content=\"0;url=/register.html\"></html>" 
</Location> 

可能な解決策を基本的なHTTP認証のフックをサポートするPHPのようなカスタムの基本的なHTTP認証モジュールを作成したり、言語を使用するようにしている

http://php.net/manual/en/features.http-auth.php

+0

Apacheの基本認証は十分に確立されているので、誰かがすでにそのようなカスタムモジュールを作成してリリースしていたことを期待していました。 – bukzor

+0

http://modules.apache.org/を確認できます。 mod_auth_timeoutを見てください。それは何か類似しているかもしれません。 – Boris

+2

['mod_auth_form'](http://httpd.apache.org/docs/trunk/mod/mod_auth_form.html)はApache 2.4で登場しました。これにより、標準的なApacheの方法でこれを簡単に設定できます。あなたのフォームが実際にログインを処理するためには、 'form_handler'(ある言語で)が必要です。 –

-2

私はあなたのfirefoxとsafariユーザーがユーザー名の前、つまりMYDOMAIN \ USERNAMEにドメインを入力していないと思われます。ファイアウォールには、パススルー認証を可能にするいくつかの設定があります。私はサファリについて知りません。

+0

この問題はログイン後のリダイレクト*失敗*が確実に機能することです。だから私は彼らが何を入力するかが分かりません。 – bukzor