2012-10-13 39 views
5

我第一次在我的應用程序中使用OpenID身份驗證。 我可以通過選擇提供程序成功驗證用戶身份,但我不知道如何在Java EE服務器上正確登錄用戶,以便它看起來像用戶使用例如以下方式登錄:基於表單的登錄。我可以使用Servlet 3.0 login,但它使用用戶名/密碼對,而我在使用OpenID時沒有密碼。Java EE 6應用程序中的OpenID - 如何獲取用戶的主體對象

我希望能夠得到一個Principal對象和使用isUserInRole方法等我錯過了什麼嗎?我在JBoss 7.1上運行這個應用程序,但我想應該有一個通用的方法來做到這一點。或者,也許我錯過了一些東西,所有這些與Principal和用戶角色使用OpenID時做不同的事情?

+0

任何評論,回答請? – grafthez

回答

1

我想應該有一個共同的方法來做到這一點。

確實有。您需要創建一個所謂的JASPIC認證模塊。已經有一個可用的OpenID的,請參閱:

我可以使用的Servlet 3.0登錄,但它需要用戶名/密碼對,我沒有密碼時使用OpenID。

這是正確的。您需要調用Servlet 3.0 authenticate方法。由於login與用戶名/密碼緊密相關,因此當您定義自己的驗證模塊時,它甚至會在Java EE 7中引發異常! (在Java EE 6中,未定義會發生什麼,但通常不起作用)。

有關如何在Java EE中創建類似OpenID的驗證模塊的更多示例,請參閱我自己的項目OmniSecurityan actual application使用該項目的早期版本。 (不幸的是,代碼有點難以遵循,因爲它需要一個非常複雜和複雜的解決方法來讓CDI與JASPIC SAM一起工作,但希望它仍然允許您看到一般模式)

相關問題