2010-06-18 18 views

Odpowiedz

7

Tak.

Proponuję jednak, aby zrobić to za pomocą filtrów serwletów, a nie serwletu.

http://brendangraetz.wordpress.com/2010/06/17/use-servlet-filters-for-user-authentication/

Wykonaj kroki opisane w tym poście, i zastąpić metodę isAuth() taki sposób, że spełnia ona jednak uwierzytelniania w wielu trybach chcesz. W (bardzo szorstki, niesprawdzonych) Kod:

@Override protected boolean isAuth() 
{ 
    String authMode = (String)(getSession(true).getAttribute("authMode")); 
    if (authMode == null) { return false; } 
    if (authMode.equals("open id") { 
     //do open id authentication steps here 
     //return true if authentication passes 
    } 
    else if (authMode.equals("some other authentication") { 
     //do some other authentication steps here 
     //return true if authentication passes 
    } 
    ... 
    return false;  
} 

jestem zakładając oczywiście, że wiesz już, jak zaimplementować kroki uwierzytelniania w każdym trybie indywidualnym.

"Sztuczka" polega na przechowywaniu wartości w sesji HTTP natychmiast po przeprowadzeniu przez użytkownika uwierzytelniania podczas sesji HTTP. Na podstawie tej wartości filtr będzie wiedział, co powinien sprawdzić lub zapytać o cokolwiek, co określisz przed załadowaniem serwletu.

+0

Fantastyczny, dokładnie tego szukałem! Chciałbym mieć wystarczająco dużo przedstawiciela, żeby to głosować! – KPthunder

+0

@KPthunder: Bez obaw, cieszę się, że to działa! – bguiz

+0

Nieważne, mam już przedstawiciela! – KPthunder

0

Tak, jest to możliwe, ale jest nieco trudne do wdrożenia.

Na przykład, gotowe do użycia oprogramowanie SpringSecurity obsługuje lokalne uwierzytelnianie, OpenId, X509 i inne schematy, ale łączenie ich w taki sposób, aby użytkownik miał alternatywne sposoby logowania, wymaga niestandardowych klas i niestandardowego okablowania.

1

Innym sposobem wykonywania wielu uwierzytelnień jest JAAS, usługa uwierzytelniania i autoryzacji Java. Korzystając z JAAS, możesz zestawiać różne moduły uwierzytelniające jeden na drugim i możesz skonfigurować, który moduł uwierzytelniania ma zostać uruchomiony, a który nie. Nazywa się to PAM (pluggable authentication module). Wyszukaj "J2SE JAAS" w Google lub spójrz na http://server.pramati.com/docstore/1270002/index.htm. Powinny one pomóc Ci zacząć, jeśli zdecydujesz się na tę trasę.

Powiązane problemy