2011-01-28 9 views
3

Hey all、 私はTomcat 6.0.14を使用しており、ユーザーにmysite.com?token = 12345678912334333(long string continue)というリンクを送信できるようにするシステムを実装したいと考えています)しかしそれはユーザーが自動的にログインできるようになります。Tomcatでカスタム認証を実装する

答えて

3

Tomcat固有の理由がない場合や、Webアプリケーションを変更できない場合は、カスタムフィルタを使用して認証(JAASなど)を行うのが最も簡単な場合があります。例:カスタムフィルタ付き

、あなたは比較的簡単な方法でしたかったどのような方法で認証を行うことができます。

public void doFilter(ServletRequest request, 
        ServletResponse response, 
        FilterChain chain) 
    throws IOException, ServletException { 

    String token = request.getParameter("token"); 
    if (token != null) { 
     doAuthentication(token); 
    } 

    chain.doFilter(request, wrapper); 
} 

JAASでタグ付けしました。それは単純なトークンで認証するだけではありませんが、それがあなたが探しているものなら、TomcatのJAASRealmに精通していますか?あなたはトークンを認証するためにあなた自身のLoginModuleを書かなければならないでしょう。

これはおそらく、E-mailにてトークンベースのログインを使用することは本質的に安全で、かつので、アプリケーションのすべてのタイプのために適切ではないことは言うまでもないです。

+0

に役立ちますが、それを私はrequest.getRemoteUserを設定するかどうかはわかりません。このSecurityfilter.orgソリューションはどうやってそれを行うように見えますか?私はrequest.getPrincipalを使用するように私たちのサイト認証をかなり簡単に変更することができました。 request.getRemoteUser()を書いている簡単な方法があるのだろうかと思います。 –

+0

request.getRemoteUserは、コンテナ(Tomcat)が提供する認証を取得するためのものです。 JAASは異なります。 getRemoteUserを使用できるように、プログラムでJAAS認証ユーザー/プリンシパル/サブジェクトをコンテナにフィードするのは困難です。 Tomcatではカスタムバルブやその他の低レベルのフックを書く必要があると思います。 getRemoteUserが本当に必要な場合を除いて、セッションにユーザー/プリンシパル/サブジェクトを格納し、サーブレットコードに必要な場合はセッションから直接取得する方が簡単かもしれません。 – kaliatech

0

あなた自身でロジックを実装する必要があると思います。つまり、リンクはユーザーをサーブレットに誘導するか、そのリンクを認識してユーザーに参加させ、セッションオブジェクトを作成してユーザーをアプリケーション内にリダイレクトします。

ホープこれは私が実際にJAASRealmを見ていた

関連する問題