- PR -

BASIC認証の認証ダイアログを表示せずにログインする方法

投稿者投稿内容
らいす
会議室デビュー日: 2005/01/31
投稿数: 6
投稿日時: 2005-01-31 01:13
はじめまして、”らいす”と申します。

現在、TomcatのBASIC認証(レルム認証)を認証ダイアログを表示させずに、
ユーザIDとパスワードをパラメータで渡すなどの方法で
ログインする方法を調べています。
満たしたい仕様は以下のとおりです。

@あるページから、BASIC認証のページにユーザ、パスワードを渡して遷移する。
ABASIC認証のページでは、ダイアログを表示せずにログインする。

シングルサインオン(と言うのが適切かどうかはわかりませんが)の
ような機能を実現する方法はないのでしょうか?

もし、方法があれば、お教えください。

<環境>
 RedHat Linux 9
 Apache 1.3.31
 Tomcat 4.1.29
 jk 1.2.6
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-01-31 11:17
セキュリティ上好ましくないですが、
http://username:password@host/path/
といった形でリクエストさせれば認証ダイアログは出ません。
未記入
ぬし
会議室デビュー日: 2004/09/17
投稿数: 667
投稿日時: 2005-01-31 12:37
引用:

http://username:password@host/path/
といった形でリクエストさせれば認証ダイアログは出ません。


これって HTTP の仕様なんでしょうか。探した限りでは RFC で確認することはできませんでした。もしかして、特定のブラウザに実装された便利機能なのかな? 内部で、
Authorization ヘッダを自動生成して HTTP サーバーに投げてくれているだけとか。
(そういえば、IE では上記のリクエスト記述が禁止されたんじゃなかった?)

もし、特定のブラウザの機能ということであれば…。ブラウザの自動再送機能に期待する、という方法でもいいと思う。IE なんかだと一度 ユーザー確認後に Authorization ヘッダを送ると、同一ホスト? にアクセスする場合は ユーザーに確認せずに自動的に Authorization ヘッダ送ってますよね? 違う?

もし、ブラウザの機能に頼らずにやろうと思ったら…。サーバー側でセッション管理を行って 認証済みクライアントの場合は、ステータス 401 の送信を控えるようにサーバー側を実装するとか。
コナン
ベテラン
会議室デビュー日: 2005/01/31
投稿数: 98
投稿日時: 2005-01-31 13:11
はじめまして。コナンと申します。

apacheのモジュールでmod_auth_cookieというのがあるんですけど、
どうですかね。
クッキーでBASIC認証するのでダイアログが出ないんですよ。

クッキーなのでクロスサイトスクリプティングみたいのに注意する必要があるけど、
とても便利ですよ。
らいす
会議室デビュー日: 2005/01/31
投稿数: 6
投稿日時: 2005-02-01 14:26
こんにちは、らいすです。

インギ様、未記入様、コナン様、早速の回答ありがとうございました。
また、返事が遅くなりまして、申し訳ございませんでした。
皆さんの案を元に、試してみたいと思います。

また、確認が取れ次第、ご報告させていただきます。
びしばし
大ベテラン
会議室デビュー日: 2002/03/13
投稿数: 181
投稿日時: 2005-02-01 14:59
http://username:password@host/path/ など、URL については RFC1738 で言及されてますね。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2005-02-01 15:09
引用:

びしばしさんの書き込み (2005-02-01 14:59) より:
http://username:password@host/path/ など、URL については RFC1738 で言及されてますね。


そうなんですが、これは「一般的なインターネットスキームの構文」であって、HTTPにおける
URLの構文ということではないんですね。これに適応する、と書かれているのはFTPとTELNET
だけです。
未記入
ぬし
会議室デビュー日: 2004/09/17
投稿数: 667
投稿日時: 2005-02-01 15:19
http://username:password@host/path/ という形式を受け付けるブラウザって中でなにやってるんだろうね。ウェブサーバーが上記形式を受理することを期待して、そのまま投げているのか。それとも分解して、Authorization ヘッダを付加しているのか。

なんの根拠もなく、確認もせず、私は後者だと思っていたのだけど…。前者だとしたら、うちで開発しているプロキシサーバーも上記形式をパースできるように変更しないといけないなあ…。

スキルアップ/キャリアアップ(JOB@IT)