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