0

私はWebsphereをj_security_checkと一緒に使用していますが、CONFIDENTIALとSSLの設定で動作するログインフィルタがあります。複雑な要件がいくつかあるため、j_security_checkを実行する前にj_username変数を処理する必要があります。Websphereのj_security_checkへの事前ログイン

answers found hereのいずれかから、この事前ログイン処理ができないと言われました。しかし、Websphereを使用している間、以前の質問者がTomcatを使用していたことに気付きました。私はそこに私の問題のための解決策があることがわかったover here私はログインしようとするたびに、私は "ウェブサイトはページを表示することはできませんが表示されます。

構文が正しいかどうかを確認してトラブルシューティングを試みました。私はできるだけ矛盾を見つけ、修正しました。しかし、私はまだ同じエラーが発生し続けています。

誰かが正しい方向に私を投げてくれますか?私はさらなる情報を提供することができますが、彼らはほとんどが第2のリンクに似ています。唯一の保護されたフォルダは\ protected \にあり、.javaサーブレットは\ WEB-INF \ classesにあります。

ありがとうございます。

+0

WAS 7.0のinfocenterには、infocenterのデフォルトのホームページの代わりに指すことができる特定のリンクがありますか?また、j_security_checkへのアクセスを強制するこの複雑な要件は何か。助けを借りていくつかのjavascriptを使用しますか? – Manglu

+0

[編集リンクはこちら](http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=%2Fcom.ibm.websphere.base.doc%2Finfo%2Faes%2Fae%2Ftsec_servlet .html) 私は彼らのヘルプページに行き、そこから検索を始めました。私は上記のように編集しました。 で終わる構文エラーが見つかったにもかかわらず、このページのコードをベースにしていましたが、ページのコードが信頼できるものではないと信じられていました。 –

+0

HTTPSおよびSSLにもかかわらず、クライアントからサーバーに送信されたパスワードを暗号化するという不幸な要件があります。彼らは、チャネルとデータが両方とも暗号化されていることを維持しながら、プレーンテキストのパスワードをADに保存したいと考えています。私は2つの方法を試して考えています。最初は、クライアント側でパスワードを暗号化してサーバーに送信し、サーバー側で復号化してからADと比較する必要があることを意味します。もう1つの方法は、パスワードクライアント側をハッシュしてサーバーに送信し、サーバーがADからパスワードを取得し、2つを比較する前にハッシュする方法です。 –

答えて

1

誰もが興味を持っている場合、結果はここにある:\ WEB-INF \クラスの場合\ WEB-INF \ web.xmlファイル

<filter id="Filter_1"> 
    <filter-name>LoginFilter</filter-name> 
    <filter-class>com.myloginfilter.MyLoginFilter</filter-class> 
    <description>Performs pre-login operation</description> 
</filter> 
<filter-mapping> 
    <filter-name>LoginFilter</filter-name> 
    <url-pattern>/j_security_check</url-pattern> 
</filter-mapping> 

については

\ COM \ myloginfilter \ MyLoginFilter.class

public class MyLoginFilter implements Filter { 

    protected FilterConfig filterConfig; 

    public void init(FilterConfig filterConfig) throws ServletException { 
     this.filterConfig = filterConfig; 
    } 

    public void destroy() { 
     this.filterConfig = null; 
    } 

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws java.io.IOException, ServletException { 
     chain.doFilter(new MyRequestWrapper((HttpServletRequest) request), response); 
    } 

    public static class MyRequestWrapper extends HttpServletRequestWrapper { 

     public MyRequestWrapper(HttpServletRequest request) { 
      super(request); 
     } 

     @Override 
     public String getParameter(String name) { 
      String username= getRequest().getParameter("j_username"); 

      if ("j_password".equals(name) && "admin".equals(username)) { 
       username = "administrator"; 
       return username; 
      } 
      return super.getParameter(name); 
     } 
    } 
} 

することは、それをコンパイルコマンドであるJavacを使用するには:

javac -cp servlet-api-2.3.jar MyLoginFilter.class 
+0

これは本当に機能しますか?通常、j_security_checkはフィルタが実行される前に実行されます。 –

+0

はい、それは少なくともTomcatとWebSphereのためにあります。 –

関連する問題