2012-03-15 18 views
0

私はJSPで安全なログインを設計しています。フォーム認可を使用してWebsphere上のアプリケーションにアクセスする予定です。基本的な考え方は、ドメイン内の認証された内部のユーザーがページにアクセスすると、通常どおりになります。ただし、外部ユーザーがアクセスしようとすると、ログインページ、Active Directoryとのインターフェイス、および正しい認証時にページにリダイレクトされます。JSPとWebsphereによる安全なログイン

私は動作させるために、組み込みの "j_security_check"サーブレットでフォーム認証を許可するようにWeb.xmlを変更しようとしました。ログインすると、ユーザーに「こんにちは!」と挨拶します。単純な関数を使用してください。<%request.getRemoteUser()%>または<%request.getUserPrincipal()。getName()%>

examples found hereに基づいて、私は以下のように私のWeb.xmlの詳細を変更:私のlogin.jspの下

<welcome-file-list> 
    <welcome-file>/protected/index.jsp</welcome-file> 
</welcome-file-list> 

<security-constraint> 
    <web-resource-collection> 
     <url-pattern>/protected/*</url-pattern> 
     <http-method>GET</http-method> 
     <http-method>POST</http-method> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>admin</role-name> 
     <role-name>users</role-name> 
    </auth-constraint> 
</security-constraint> 

<login-config> 
    <auth-method>FORM</auth-method> 
    <form-login-config> 
     <form-login-page>/login.jsp</form-login-page> 
     <form-error-page>/error.jsp</form-error-page> 
    </form-login-config> 
</login-config> 

<security-role> 
    <description>Administrator</description> 
    <role-name>admin</role-name> 
</security-role> 
<security-role> 
    <description>Users</description> 
    <role-name>users</role-name> 
</security-role> 

、私はで伐採を行う簡単なフォームを持っている

​​

。私のindex.jspの下では、単純なリクエストでユーザに挨拶します。

<body> 
    Hello, <% request.getRemoteUser(); %> 
    Hello, <% request.getUserPrincipal().getName(); %> 
</body> 

私はここで3つの問題に直面しています。重要度はそのままランク付けされています。

1)エラー403 リダイレクトとログインページが機能します。 index.jspにアクセスしようとすると、login.jspにリダイレクトされます。誤ったuid:pwdのペアを入力すると、error.jspが表示されます。私が正しくログインすると、私はindex.jspにリダイレクトされますが、で迎えられます。エラー403:ウェブサイトにログインする必要があります。以前は組み込みのスヌープページにアクセスできなかったのでログインしていると確信していますが、ログイン後は可能です。私はそれが私のweb.xmlにいくつかの設定

2)であっても、web.xmlのすべての保護を無効にしたindex.jspにアクセスする際、ユーザーのID を取得している疑いがある、私はヌル」こんにちは、で迎えています! 「こんにちは、ユーザー!」の代わりに「」と入力してください。 index.jspに示されているコードは、インターネット上にあるsnoopサンプルコードからコピーしたものです。 request.getRemoteUser()は私のindex.jspでは動作しませんが、スヌープページで動作します。リクエストを実行する前に私が電話していないものがなければなりませんか?

3)セキュリティ(重要ではない) このj_security_checkはSpring Securityの下にあると思います。私は、トランスポートチャネルと同様に、送信側と受信側の両方を暗号化しようとしています。これは、認証のために、パスワードをクリアテキストで送信または保存しないでください。私はsome information hereを見つけたので、この認証プロセスを保護しようとしました。

私が直面しているトップ3の問題に関して、いくつかのガイダンスと助けに感謝します。私は事を終わらせることに近いと感じていますが、それはとても近いですが、これまでのところです。

答えて

2

誰かが疑問を持っている場合は、設定で簡単に問題を解決できました。

1)Web.xmlで管理者とユーザーの役割を割り当てる場合、Websphere>に移動する必要があります。war]> [Roles and Users]を選択し、Active Directoryで指定されている役割にAdminロールとUserロールを物理的に割り当てます。これにより、ユーザーはページにアクセスできます。

2)SPNEGO構成のWebsphere構成でも、リスト "|"に追加する必要があります。そのように要求を有効にします。その後、ドメイン内の認証されたユーザーはすぐにアイテムにアクセスし、外部ユーザーはログインページにリダイレクトされます。 request.getPrincipalUser()が動作するようになりました。

3)動作するSpring Securityサンプルがあります。唯一の問題は、Active DirectoryではなくApplicationContextSecurity.xml内のローカル認証プロバイダにアクセスすることです。チャネルを保護するには、<transport-guarantee>NONE</transport-guarantee>の下にNONEをCONFIDENTIALに置き換える必要があります。

関連する問題