2015-03-24 73 views
11

我會誠實的。現在我已經有了一段時間的開發人員,但是我第一次聽說JACC和JASPIC。我知道他們是授權提供商使用的標準,但他們與JAAS有何不同?我們什麼時候可以使用一個呢?最簡單的說,任何人都可以向我解釋JAAS,JACC和JASPIC之間的區別嗎?

我做了一些初步的研究,不是我懶得去做。它只是閱讀關於JACC和JASPIC的文章有點讓我感到困惑,我需要在短時間內瞭解這一點,因爲我需要在即將到來的項目之一中實現這一點。只是在我的理解上尋找一個跳躍開始。

回答

20

JAAS包含在Java SE中,主要用於Java SE。這是關於代碼級別的安全性(你相信代碼)。

它對於Java EE來說並不直接有用,它與用戶級別的安全性有關(你信任用戶)。

某些Java EE服務器可以使用基於JAAS LoginModules進行認證的東西,但這種JAAS的使用是非標準的,並且與Java SE中的相比非常淺薄。出於某種原因或其他原因,因爲這個人認爲Java EE中的安全性被稱爲JAAS,但它完全是相反的。

JASPIC是Java EE 6+服務器必須創建和插入附加身份驗證機制的擴展點。你可以用它來創建OAuth,OpenID等機制。 JASPIC是關於與用戶的交互。它沒有提到從LDAP或數據庫等東西獲取用戶數據。您可以使用自己的代碼或通過調用JAAS LoginModule來完成此操作。 JASPIC確實定義了JAAS LoginModules如何以更標準的方式連接到您的定製機制。太糟糕了,它還不是100%的標準,但至少更好。

JACC是另一個擴展點,但授權機制。您可以用它以不同的方式進行授權,或僅僅審覈授權。 JACC還會將您在web.xml中定義的所有安全約束提供給您的代碼。您可以使用它來事先檢查用戶是否有權訪問頁面。與JASPIC不同,JACC在您的應用程序中非常難以真正激活。你需要弄亂JVM參數等。

+0

感謝您的回答。 – 2015-03-27 01:59:48

+0

非常感謝 - 這是直截了當的!我正在使用JACC附帶的JBoss,這個應該需要授權。但是身份驗證怎麼樣 - 我還應該使用JAAS LoginModules進行身份驗證還是還有其他一些內容?謝謝! – 2016-08-11 07:08:37

+1

@MatthewCachia就便攜式身份驗證而言,您只需實現一個'javax.security.auth.message.module.ServerAuthModule'(SAM)。但是,如果你也打算以便攜的方式將你的SAM和JBoss集成在一起,你還需要實現一個'AuthConfigProvider'(加上一個'ServletContextInitializer'作爲前者的註冊者,容器提供'AuthConfigFactory'),一個' ServerAuthConfig'和一個'ServerAuthContext'。對於保護單個應用程序的單個SAM的普遍使用情況,這對於作者來說是相對無痛的。 – Uux 2016-08-13 16:58:19

相關問題