2012-10-13 7 views
5

Po raz pierwszy odtwarzam z uwierzytelnianiem OpenID w mojej aplikacji. Mogę pomyślnie uwierzytelnić użytkownika przed wybranym dostawcą, ale nie wiem, jak poprawnie zalogować użytkownika na serwerze Java EE, aby wyglądało na to, że użytkownik był zalogowany przez np. logowanie oparte na formularzach. Mógłbym używać Servlet 3.0 login, ale wymaga to nazwy użytkownika/hasła i nie mam haseł podczas używania OpenID.OpenID w aplikacji Java EE 6 - jak uzyskać główny obiekt dla użytkownika

Chciałbym móc uzyskać obiekt Principal i użyć metody isUserInRole itd. Czy brakuje mi czegoś? Używam tej aplikacji na JBoss 7.1, ale przypuszczam, że powinien to być typowy sposób na zrobienie tego. A może brakuje mi czegoś, a wszystkie te rzeczy z Principal i rolami użytkowników robi się inaczej podczas korzystania z OpenID?

+0

Dowolny komentarz, odpowiedź Proszę? – grafthez

Odpowiedz

1

Przypuszczam, że powinien istnieć wspólny sposób na zrobienie tego.

Rzeczywiście jest. Musisz utworzyć tak zwany moduł uwierzytelniania JASPIC. Tam już jest dostępny dla OpenID, patrz:

mogę użyć Servlet 3.0 logowanie ale ma nazwę użytkownika/hasło parę i nie mam kiedy haseł przy użyciu OpenID.

Zgadza się. Dlatego należy wywołać metodę Servlet 3.0 authenticate. Ponieważ login jest silnie związany z nazwą użytkownika/hasłem, nawet rzuci wyjątek w Java EE 7, gdy zdefiniujesz własny moduł auth! (w Java EE 6 nie jest zdefiniowane, co się dzieje, ale zazwyczaj po prostu nie działa).

Aby uzyskać więcej przykładów tworzenia modułów autorskich typu OpenID w Java EE, zobacz mój własny projekt OmniSecurity i an actual application korzystając z wcześniejszej wersji tego projektu. (Niestety kod jest trochę trudny do wykonania, ponieważ wymagał bardzo skomplikowanego i zawiłego rozwiązania, aby CDI działało z JASPIC SAM, ale mam nadzieję, że nadal pozwala zobaczyć ogólny wzór)

Powiązane problemy