仔细研究Java Identity API
在深入探討之前,讓我們看一下有關Java Identity API JSR 351的一些快速事實。 這仍在進行中。 。 。
- JSR是什么時候發起的?
該JSR在2011年10月通過了批準投票,隨后在2011年11月成立了專家組。
- 誰負責此規范?
Java Identity API由Ron Monzillo領導。
- 專家組?
專家組由來自Oracle,IBM,RedHat,SAP和GoldmanSachs的代表以及個人組成。
- 規格文件?
這仍處于起草階段,可以通過以下網址獲得: https : //jcp.org/aboutJava/communityprocess/edr/jsr351/index.html
- 參考實施
Nobis是Java Identity API的RI,可以在以下位置訪問: https : //java.net/projects/nobis/pages/Home
介紹
如果必須單行解釋Java Identity API背后的動機,那么它將被定義為Identity Management的Java標準。
總體而言 ,該標準的主要目標是:
- 在Java中定義一個Identity的表示形式。
- 通過定義身份使用者和提供者之間的標準API和交互模型,促進這些“身份”的安全使用(創建,交換,治理) 。
- 提供統一,高級的編程模型,供應用程序與具有異構域模型的身份/屬性存儲庫進行交互。
目前的挑戰
當前,Java平臺不提供用于管理身份的標準接口。 隨著互聯網服務在日常應用中的使用日益增加,SSO的采用和聯合,需要保護網絡身份。 現有的Java對象(例如X509Certificate和KerberosTicket)為封裝身份屬性提供了相似的外觀,但僅限于有限的范圍。 代替具有完全不同且非標準的模型,需要制定一套標準,應用程序或身份框架開發人員可以利用這些標準為網絡身份的傳播和使用提供堅如磐石的支持。
一個簡單的類比
我喜歡將其視為類似于JDBC或JNDI (如果不相同)的API。 這兩個API都可以幫助開發人員通過標準接口以松散耦合的方式與基礎數據源或命名服務進行通信。 它使我們能夠采用可插拔的體系結構,其中可以利用不同的供應商實現方式來連接不同的數據庫(Oracle,MySQL,Sybase DB2 ...我們真的不在乎,除了在我們的類路徑中使用供應商JARS),LDAP服務器( AD,OID,Sun Java,Apache等)。
Java Identity API如何提供幫助?
該API將:
- 允許應用程序以可移植和標準的方式與異構基礎身份存儲庫進行交互。
- 允許供應商使用屬性服務框架開發實現,以與一個或多個存儲庫(如Facebook , Twitter ,通過受支持的協議/ API(如OAUTH , Open ID , FaceBook Connect等) 鏈接的屬性)進行無縫交互。
- 使應用程序還可以充當屬性的提供者–這也是屬性服務框架的一部分。
- 允許最終開發人員在這些實現之上構建應用程序。
- 防止依賴非標準專有實現在應用程序內實現身份服務。
突出特點
下面列出了此API的一些關鍵功能/重點:
- 與Java SE 6和Java EE 6的兼容性
- 與Java安全模型集成
Java安全性模型中的現有對象(例如Principal,Subject,Policy等)將集成在API中:
- 支持編程以及注釋驅動的編程模型
- 利用上下文和依賴注入(CDI)
CDI將通過限定符和生產者提供諸如資源注入,生命周期回調以及身份屬性和引用的依賴注入等服務。
關鍵術語
全新的規范通常可以引入一些術語或表達,這些術語或表達一開始聽起來可能比較模糊或抽象。 這是與Java Identity API緊密相關的關鍵字和概念的列表。 對這些術語有基本的了解很重要。
| 術語 | 描述 |
| 實體 | 除了“屬性 ”的集合外,例如某人可以具有諸如名字,姓氏,SSN,電子郵件等屬性。 |
| 屬性 | 它具有名稱 (用戶名,電子郵件), 值 (johndoe,jdoe @ test.com)和關聯的元數據 (發布者,有效期) |
| 實體參考 | 實體的安全句柄 |
| 屬性參考 | 屬性本身的安全 , 獨立于值的句柄注意 :實體引用和屬性引用都便于交換, 而無需實際暴露關聯的值 |
| 屬性存儲庫 | 表示要與身份源集成以實現的一組合同 。 包含與最終身份存儲庫交互的業務邏輯 |
| 倉庫代理 | 它綁定到特定的屬性存儲庫,并且可以查詢以提供附加到該屬性存儲庫的句柄 |
| 儲存庫描述符 | 描述關系 b / wa Repository Agent和綁定到該代理的Attribute Repository |
| 屬性提供者 | 與存儲庫 代理進行交互并代表其執行用戶請求的操作 |
| 屬性服務 | 這是一個服務組件,直接向客戶端應用程序公開。 它提供對高級界面的訪問,以與身份交互和管理身份 |
核心API
Java Identity API非常輕巧且緊湊 。 構成核心編程接口一部分的軟件包已在下面突出顯示。
| 包 | 描述 |
| javax.security.identity | 該軟件包包含標識屬性和引用類型 |
| javax.security.identity.annotations | 包含有助于提供可移植身份編程模型的注釋 |
| javax.security.identity.auth | 包含在Java Subject或AccessControlContext中使用的標識屬性和引用類型。 |
| javax.security.identity.client | 為身份屬性服務提供高級編程接口。 |
| javax.security.identity.client.expression | 包含用于構成屬性查詢的獨立于提供程序的表達式。 |
| javax.security.identity.client.qualifiers | 定義在身份屬性的CDI注入中用作限定符的注釋。 |
| javax.security.identity.permission | 包括用于保護屬性服務的接口的權限和操作值。 |
| javax.security.identity.provider | 包含將由屬性提供程序和存儲庫代理實現的接口。 |
以下突出顯示了Java Identity API的一些重要注釋,接口和類:
注解
| 零件 | 等效的API |
| 身分識別 | javax.security.identity.annotations.IDEntity |
| 屬性 | javax.security.identity.annotations.IdentityAttribute |
| 實體參考 | javax.security.identity.annotations.EntityReference |
接口和類
| 零件 | 等效的API |
| 屬性 | javax.security.identity.IDAttribute |
| 實體參考 | javax.security.identity.IDEntityReference |
| 屬性參考 | javax.security.identity.IDAttributeReference |
| 屬性存儲庫 | javax.security.identity.provider。 AttributeRepository |
| 屬性提供者 | javax.security.identity.provider.AttributeProvider |
| 倉庫代理 | javax.security.identity.provider.RepositoryAgent |
| 儲存庫描述符 | javax.security.identity.client.RepositoryDe??scriptor |
API使用概述
應用程序需要訪問基礎存儲庫才能與其進行交互并執行操作。 下面的示例概述了步驟的順序,突出了應用程序可以利用API來獲取基礎標識和屬性的句柄的方式:
代碼段
參考實施
與大多數Java標準一樣,JSR 351具有稱為Nobis的參考實現。 它提供以下實現:
- javax.security.identity.client.LookupService,即ProviderLookupService和AttributeLookupService –啟用來自存儲庫的搜索/查找身份屬性
- javax.security.identity.provider.AttributeProvider
- javax.security.identity.provider.AttributeRepository
- javax.security.identity.client.IDPredicate –用作過濾/搜索條件
作為實施的一部分,Nobis RI還提供:
- 發布與@ javax.security.identity.annotations.IDEntityProvider和@ javax.security.identity.annotations.IDEntity對應的構造攔截器 ,它們不過是攔截器綁定。
- 類似于上述攔截器的API之類的工廠
- Facebook作為屬性提供程序以及基于JPA和內存中提供程序的示例實現。
一些值得期待的事情
- API將如何發展并達到最終的形狀
- 社區將如何采用它
- 產品和實際應用程序將如何實施和利用它
干杯。 。 。 。 ! ! !
翻譯自: https://www.javacodegeeks.com/2014/06/a-closer-look-at-the-java-identity-api.html
總結
以上是生活随笔為你收集整理的仔细研究Java Identity API的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云闪付理财怎么转出?
- 下一篇: 95555是哪个银行?