仔细研究Java Identity API

身份-e1403437371643

在深入探讨之前,让我们看一下有关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对象(例如X509CertificateKerberosTicket)为封装身份属性提供了相似的外观,但仅限于有限的范围。 代替具有完全不同且非标准的模型,需要制定一套标准,应用程序或身份框架开发人员可以利用这些标准为网络身份的传播和使用提供坚如磐石的支持。

一个简单的类比

我喜欢将其视为类似于JDBCJNDI (如果不相同)的API。 这两个API都可以帮助开发人员通过标准接口以松散耦合的方式与基础数据源或命名服务进行通信。 它使我们能够采用可插拔的体系结构,其中可以利用不同的供应商实现方式来连接不同的数据库(Oracle,MySQL,Sybase DB2 ...我们真的不在乎,除了在我们的类路径中使用供应商JARS),LDAP服务器( AD,OID,Sun Java,Apache等)。

Java Identity API如何提供帮助?

该API将:

  • 允许应用程序以可移植和标准的方式与异构基础身份存储库进行交互。
  • 允许供应商使用属性服务框架开发实现,以与一个或多个存储库(如FacebookTwitter ,通过受支持的协议/ API(如OAUTHOpen IDFaceBook 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来获取基础标识和属性的句柄的方式:

  1. javax.security.identity.client.LookupService接口的具体实现。 这封装了javax.security.identity.client.ProviderLookupServicejavax.security.identity.provider.AttributeLookupService的服务
  2. 通过将LookupService与javax.security.identity.provider.RepositoryAgent的实现绑定,可以获取javax.security.identity.client.ProviderLookupContext的实例。
  3. ProviderLookupContext用于获取对javax.security.identity.provider.AttributeProvider的引用,该引用绑定到ProviderLookupContext标识的存储库中包含的实体范围。
  4. AttributeProvider实现是基础身份存储库网关 ,并通过javax.security.identity.provider.RepositoryLookupServicejavax.security.identity.provider.RepositoryUpdateService公开类似于CRUD的功能。

java-id-api-code1

代码段

参考实施

与大多数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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/363767.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WEB页面的生命周期,DOMContentLoaded,load,beforeunload,unload

简言 理解WEB页面的生命周期,文档加载事件及顺序对WEB开发有十分的重要意义。如果不理解,在元素未加载就提前操作元素,则得不到想要的结果。而如果页面完全加载完成后,再进行操作,则又会影响用户体验。 一般来说&…

WinAPI: SetLayeredWindowAttributes - 设置窗口的透明

这是来宾 Dolby 在 http://www.cnblogs.com/del/archive/2008/03/08/1081295.html#1096814 询问的问题. //声明: SetLayeredWindowAttributes(Hwnd: THandle; {窗口句柄}crKey: COLORREF; {透明色}bAlpha: Byte; {Alpha 值}dwFlags: DWORD {LWA_COLORKEY(1)表示使用透明…

动态规划-线性dp-hdu-4055

https://www.cnblogs.com/31415926535x/p/10423047.html 这道题是大连的某一年的现场赛的题hdu-4055 ,,,刚开始做线性dp的题,,看了好半天才看懂解法,, 分析 参考1参考2 题目的意思就是给出一个仅…

JQuery .net WebService 参数必须一致

$.ajax({type: "POST",contentType:"application/json; charsetutf-8",url: "/LearnJQuery/ajax1.asmx/response1",data:"{username:\""$("#inputName").val()"\"}",上面的username必须和webservice中的…

c语言按shift用户随时退出,2014年云南省“三校生”高考计算机第三次模拟试卷...

密班级: 姓名: 学号:密 封 线 内 不 得 答 题玉龙职高2012年高考第三次模拟试卷计算机基础总分:150分,考试时间:120分钟。一、单项选择题(在每小题给出的四个选项中,只有一个是符合题目要求的&a…

无状态EJB:池化和生命周期

无状态EJB池和生命周期的摘要视图(注释)。 对新手有用。 。 。 。 。 EJB池:快速概述 EJB实例存储在称为EJB池的位置–这不过是内存中的缓存 。 无状态EJB通常按需实例化,即,当客户端调用Bean上的方法时。 但是&…

有意思的批处理

echo off setlocal enabledelayedexpansion set b/-\ /-\ ** set 速度1 set 退格 :b for /l %%i in (0,1,200) do call :a %%i goto :b :a set/a a%1%%10 set/a c%a%%%4 if %a% EQU 0 set/p▌<nul if %c% EQU 3 (set/p^|<nul) else (set/p!b:~%a%,1!<nul) ping/n %速度…

1.原生js封装的获取某一天是当年的第几周方法

function getWeek(str){//str格式为yyy-mm-dd//周日归到了本周var dnew Date(str);var dayd.getDay();var originDated.getFullYear() - "01" - "01" 00:00:00;var nowDated.getFullYear() - ((d.getMonth() 1)>9?(d.getMonth() 1):0 (d.getMonth() 1…

代码整洁之道——有意义的命名(持续更新中)

我们给变量、参数、类、包&#xff0c;源代码和源代码所在目录命名&#xff0c;也给jar文件、war文件和ear文件命名。 We name variables, parameters, classes, packages, source code, and the directory where the source code resides, as well as jar files, war files, a…

json - json对象和json字符串直接的相互转换

一、json字符串转json对象 1.json字符串转json对象 var obj JSON.parse(str); //由json字符串转换为json对象 2.获取对象的value console.log(obj.attr); console.log(obj["attr"]); 二、json对象转json字符串 var jsonstr JSON.stringify(obj); / 转载于:https://…

android根据拍摄url获取格式,Android如何通过URI获取文件路径示例代码

前言最近在工作的过程中&#xff0c;遇到不同 Android 版本下 URI 采用不同方式来获取文件路径的问题。因为需求的原因&#xff0c;要求拍照上传或者从相册中选择图片上传&#xff0c;而且图片是需要经过压缩的&#xff0c;大小不能超过2M。很快&#xff0c;拍照的这部分就搞定…

休眠类型初学者指南

基本映射概念 学习Hibernate时&#xff0c;许多人喜欢跳到父子关联&#xff0c;而无需掌握对象关系映射的基础知识。 在开始对实体关联进行建模之前&#xff0c;了解各个实体的基本映射规则非常重要。 休眠类型 休眠类型是SQL类型和Java原语/对象类型之间的桥梁。 这些是Hibe…

fixed 语句(C# 参考)

fixed 语句禁止垃圾回收器重定位可移动的变量。fixed 语句只能出现在不安全的上下文中。Fixed 还可用于创建固定大小的缓冲区。 备注 fixed 语句设置指向托管变量的指针并在 statement 执行期间“钉住”该变量。如果没有 fixed 语句&#xff0c;则指向可移动托管变量的指针的作…

React Antd中样式的修改

如果需要对antd的样式进行修改&#xff0c; 进入你要修改的页面 注意&#xff1a;不能直接在自己的文件下面&#xff0c;加入一个css&#xff0c;修改这个class的样式&#xff0c;应该 加入global限定&#xff0c;global {} , 在{}里面写入 .classname {} 然后在设置css样式…

android /data/data/数据作用,android 清除data/data/ 下其他应用的数据

// 需在源码下编译// 实现。。。private ClearUserDataObserver mClearDataObserver;class ClearUserDataObserver extends IPackageDataObserver.Stub {public void onRemoveCompleted(final String packageName, final boolean succeeded) {/*final Message msg mHandler.ob…

使用Akka简化交易系统

我的同事正在开发一种交易系统&#xff0c;该系统可以处理大量的传入交易。 每笔交易都涵盖一种Instrument &#xff08;例如债券或股票&#xff09;&#xff0c;并且具有某些&#xff08;现在&#xff09;不重要的属性。 他们坚持使用Java&#xff08;<8&#xff09;&#…

【Python】贪心算法入门

一.引言 本文将通过两个问题和两道例题带你入门贪心算法。 贪心算法&#xff08;Greedy Algorithm&#xff09;是一种在每一步选择中都采取在当前状态下最优&#xff08;最好或最有利&#xff09;的选择&#xff0c;从而希望导致全局最优解的算法。贪心算法不保证找到全局最优…

ASP.NET MVC+LINQ开发一个图书销售站点(9):编辑目录

编辑目录和新建类似&#xff0c;这里我们用MVC提供的辅助类 1.在Model 的BookShopDBDataContext分部类里添加: 2. 在CategoryController添加如下方法(注意&#xff1a;我们添加了后端验证) 3. 修改View下的EditCategory.aspx. (注意&#xff1a;我们用了MVC提供的辅助类生成Tex…

Jenkins+maven环境部署

选择使用tomcat下运行jenkins项目&#xff0c;安装步骤如下 1. 安装tomcat&#xff0c;查看想要下载的版本 https://mirrors.cnnic.cn/apache/tomcat/ wget https://mirrors.cnnic.cn/apache/tomcat/tomcat-9/v9.0.7/bin/apache-tomcat-9.0.7.tar.gz 2. 安装jdk wget --no-c…

内外边距、浮动、布局相关

关于清除元素的内外边距&#xff1a; 1、行内元素只有左右边距、没有内外边距、内边距在ie6等低版本的浏览器中也会有问题。尽量不要给元素指定行内的内外边距&#xff1b; 2、外边距的合并 使用margin定义块元素的垂直外边距时&#xff0c;可能会出现外边距的合并&#xff…