2011-01-28 3 views
3

Привет всем, Я использую Tomcat 6.0.14 и хотел бы знать, чтобы реализовать систему, которая позволит нам отправлять пользователям ссылку: mysite.com?token=12345678912334333(long string continue), но это позволит пользователю автоматически регистрироваться.Внедрение пользовательской аутентификации с помощью 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. Это отличается от простого аутентификации простым маркером, но если это то, что вы ищете, вы знакомы с JAASRealm от Tomcat? Вам просто нужно написать свой собственный LoginModule для аутентификации токена.

Это, вероятно, само собой разумеется, что, используя логин на основе токенов по электронной почте небезопасно, и поэтому не подходит для всех типов приложений.

+0

я на самом деле смотрел на JAASRealm, но с этим я не уверен, как установить request.getRemoteUser. Похоже, что это решение Securityfilter.org каким-то образом. Я могу изменить аутентификацию наших сайтов, чтобы использовать request.getPrincipal довольно легко. Просто интересно, есть ли простой способ написания request.getRemoteUser() Я думаю, –

+0

Request.getRemoteUser предназначался для получения аутентификации, предоставляемой контейнером (Tomcat). JAAS отличается. Трудно программно подавать аутентифицированный пользователь/главный/субъект JAAS обратно в контейнер, чтобы использовать getRemoteUser. В Tomcat, я думаю, для этого требуется написание специального клапана или другого крючка низкого уровня. Если вам действительно не нужен getRemoteUser, может быть проще сохранить пользователя/участника/тему в сеансе самостоятельно и получить его непосредственно из сеанса, где это необходимо в вашем коде сервлета. – kaliatech

0

Я думаю, вам нужно реализовать логику самостоятельно, то есть ссылку направлять пользователя к сервлету или что-то вроде этого, которое распознает эту ссылку, присоединяется к ней с пользователем, создает объект сеанса и перенаправляет пользователя внутри вашего приложения ,

Надеется, что это помогает

Смежные вопросы