2

Tomcat 6.xxxで2つの認証方法を並べて使用することは可能ですか?

ストーリー:現在、私のアプリはポート80と443で実行されています。443コネクタにはclientAuth="want"パラメータがあります。クライアントが80を超える場合、証明書は必要ありません。ただし、クライアントが443を超えて、クライアントのリーダーにスマートカードがある場合、クライアントがログインしたくない場合でも、証明書は自動的に要求されます。

user-certでログインする場合、FormFallBackオーセンティケーターがあります。つまり、クライアントが証明書を送信しない場合(リーダーにスマートカードがない場合)、またはオーセンティケーターで認証に失敗した場合、オーセンティケーターはフォームに転送し、パスワードとユーザー名でログインできます。 。私の英語はあまり上手ではないので、同様のシステムの概要を以下に示します:http ://wiki.apache.org/tomcat/SSLWithFORMFallback

しかし、ブラウザが何度も証明書を要求する場合、ユーザーがログインにスマートカードを使用したくない場合(ただし、リーダーにスマートカードを持っている場合)、user-certを要求するプロセスは、ユーザーにとって煩わしいものです。代わりに、ユーザー名とパスワードを使用してログインします。

したがって、次のオプションがあります。ユーザー名とパスワードのフィールドとログインボタンがあるログインページがあります。ユーザーがログインボタンを押すと、ユーザー名とパスワードでログインします(認証者を形成するように指示されます)。

ただし、同じページに「スマートカードでログイン」ボタンがあります。彼がこのボタンを押すと、サーバーはユーザー証明書を要求し、それをオーセンティケーターに渡します。

あなたが問題を理解することを望みます。

4

3 に答える 3

1

これらの要件を理解する独自のTomcatオーセンティケーターを作成する必要があると思います。

ユーザーごとにSSLコネクタの動作を再構成できるように要求しているAFAICTと、SSLネゴシエーションが行われる前にユーザーのコネクタを構成できないため、実際には不可能な場合があります。

于 2012-05-30T14:50:56.937 に答える
1

サーブレット セッションで認証済みの状態を維持する場合は、2 つの異なるボタン (またはリンク) を実際に提供することで、フォームまたはクライアント証明書のいずれかを介してログオンすることを提案できます。

/login/formここでは、フォームや/login/certクライアント証明書を介した認証などのパスを持つことができると想定しています。

/login/certSSL/TLS 再ネゴシエーションを使用してアクセスするときに、オンデマンドでクライアント証明書認証をトリガーできます。これを行うclientAuth="false"には、コネクタ構成で を使用しますが、 を使用して Web アプリケーションのそのパスにセキュリティ制約を設定します<auth-method>CLIENT-CERT</auth-method>。これにより、必要に応じて再ネゴシエーションがトリガーされます。

これが機能するには、 RFC 5746 (Oracle Java 6 r22 以降)をサポートする JRE のバージョンが必要であり、クライアントもそれをサポートする必要があります。ブラウザー/OS の最新バージョンは、これをサポートする必要があります。

于 2012-05-30T15:07:16.310 に答える
0

GoogleCodeのAuthenticRoastプロジェクトを参照してください。それはまさにこれ以上のことをします。

于 2012-05-30T22:03:22.497 に答える