2011-01-28 5 views
3

안녕하세요, Tomcat 6.0.14를 사용하고 있습니다. 사용자에게 mysite.com?token=12345678912334333(long string continued)이라는 링크를 보낼 수있는 시스템을 구현하고 싶습니다.)하지만 사용자가 자동으로 로그인 할 수 있습니다.Tomcat을 사용한 사용자 정의 인증 구현

답변

3

Tomcat과 관련된 다른 이유가 없거나 웹 응용 프로그램을 수정할 수없는 경우가 아니면 사용자 정의 필터를 사용하여 인증을 수행하는 것이 가장 쉽습니다 (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 메일을 통해 토큰 기반 로그인을 사용하는 것은 그래서 본질적으로 안전하지, 그 말없이 http://tomcat.apache.org/tomcat-7.0-doc/realm-howto.html#JAASRealm

그것은 아마 간다

  • 는 모든 유형의 애플리케이션에 적합하지 않습니다.

+0

도움이되지만 그와 나는 request.getRemoteUser을 설정하는 방법을 모르겠어요. 이 Securityfilter.org 솔루션이 어떻게 작동하는지 나타납니다. 나는 request.getPrincipal을 꽤 쉽게 사용하도록 우리의 사이트 인증을 변경할 수있다. request.getRemoteUser()를 작성하는 쉬운 방법이 있는지 궁금하다. –

+0

request.getRemoteUser는 컨테이너 (Tomcat)가 제공 한 인증을 검색하기위한 것이었다. JAAS는 다릅니다. getRemoteUser를 사용할 수 있도록 프로그래밍 방식으로 JAAS 인증 사용자/주체/주체를 컨테이너에 다시 공급하는 것은 어렵습니다. Tomcat에서는 사용자 정의 밸브 나 다른 저수준 훅을 작성해야한다고 생각합니다. getRemoteUser가 정말로 필요한 경우를 제외하고는, 사용자/주체/주체를 세션에 직접 저장하고 서블릿 코드에 필요한 세션에서 직접 검색하는 것이 더 쉽습니다. – kaliatech

0

당신이 직접 로직을 구현해야한다고 생각합니다. 즉, 링크가 사용자를 서블릿 또는 그 링크를 인식하는 것과 같은 가이드로 안내하고, 사용자와 합류하고, 세션 객체를 만들고, 앱 내에서 사용자를 리디렉션합니다 .

희망이 실제로 JAASRealm보고 있었다

관련 문제