java identity_仔细研究Java Identity API

java identity

身份-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

java identity

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

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

相关文章

隐藏任务栏后任务栏出不来怎么办?任务栏快捷键

喜欢隐藏任务栏的朋友,是不是发现了一个有时候隐藏任务栏,任务栏下沉后用鼠标去唤醒,以重新显示任务栏而显示,激活不出来的问题?十分容易解决,见下。使用显示任务栏的快捷键。 这些问题经常出现在比如开启了一个或者…

JDK 14中更好的NPE消息

我的2019年3月博客文章“ Java会出现更好的默认NullPointerException消息吗? ”是在尚未针对特定JDK版本针对更好的NullPointerException消息的JEP 草案编写时编写的。 此后,该JEP草案成为JEP 14的 目标 JEP 358(“ Helpful NullPointerExcep…

jvm能识别什么字符集_识别JVM –比预期要难

jvm能识别什么字符集在Plumbr,我们花费了上个月的时间来为将来的重大改进奠定基础。 此类构件之一是为JVM添加唯一标识符,以便将来自同一JVM的所有会话链接在一起。 尽管一开始似乎是一项琐碎的任务,但是当查看JVM捆绑的jps命令的输出时&…

Spring MVC绑定,无设置器

即使域模型对象没有设置器,也可以将表单参数绑定到域模型对象。 只需添加带有InitBinder方法的ControllerAdvice类,即可通过initDirectFieldAccess()方法将应用程序配置为进行字段绑定 package boottests.controllers;import org…

idf和adf_ADF:弹出窗口,对话框和输入组件

idf和adf在本文中&#xff0c;当我们有一个af&#xff1a;popup包含af&#xff1a;dialog并在其中包含输入组件时&#xff0c;我想重点介绍一个非常常见的用例。 实现此用例时&#xff0c;需要注意一些陷阱。 让我们考虑一个简单的示例&#xff1a; <af:popup id"p1&…

自制串口示波器小工具

因为博主喜欢玩嵌入式&#xff0c;经常与各种硬件打交道&#xff0c;常常需要采集下位机的信号&#xff0c;无奈学生党&#xff0c;买不起示波器&#xff0c;自己用python写了一个串口示波器的上位机&#xff0c;可以很简单的和下位机配合组成示波器&#xff0c;效果如图&#…

ELK堆栈入门

朋友不允许朋友写用户身份验证。 厌倦了管理自己的用户&#xff1f; 立即尝试Okta的API和Java SDK。 在几分钟之内即可对任何应用程序中的用户进行身份验证&#xff0c;管理和保护。 好的设计原则要求微服务架构是可观察的&#xff0c;并提供集中的监视工具。 该工具使开发团队…

speex在stm32f407单片机上的移植

最近做的网络语音的项目需要用到speex中的一些功能&#xff0c;查了一下资料发现移植给mcu的经验大多零零碎碎&#xff0c;自己捣鼓了一晚上总算是移植好了&#xff0c;写个博客记录一下。1.获取speex源码 官方下载&#xff1a; 官方地址 博主移植用的源码以及移植好的工程下…

在Kafka上异步发送数据

对于一个项目&#xff0c;我试图记录用户的基本交易&#xff0c;例如添加和删除一个项目以及多种类型的项目&#xff0c;并为每笔交易向kafka发送一条消息。 日志机制的准确性不是至关重要的&#xff0c;在kafka服务器停机的情况下&#xff0c;我不希望它阻止我的业务代码。 在…

devc++工程提示“源文件未编译”的可能问题

博主使用devc5.11&#xff0c;win7&#xff0c;创建了一个c工程以后编译一直提示“源文件未编译”&#xff0c;查了两小时博客期间反复重装&#xff0c;最后还是靠自己误打误撞解决了&#xff0c;解决步骤如下&#xff1a; 1、安装时语言选择English。 网上各种教程教新人安装…

vmware网络桥接模式无法上网的解决办法

1.vmware->编辑->虚拟网络编辑器->桥接模式->选择有线网卡 2.VMware-虚拟机设置-网络适配器-桥接模式-复制物理网络连接状态、启动时连接 3.重启虚拟机&#xff0c;完成 如果出现连接到网络但是无法上网的情况&#xff0c;还需做如下处理 1.sudo gedit /etc/res…

oracle idm_深入了解Oracle IDM审核

oracle idm在处理敏感信息的任何产品中&#xff0c; 报告都是至关重要的功能。 同样适用于身份和访问管理工具。 Oracle IDM的审核模块是其OOTB报告功能的基础。 让我们快速了解一下审核引擎以及它如何促进OIM中的报告功能。 这里介绍的用例很简单– 在OIM中更改为用户记录。 …

C语言编写贪吃蛇游戏

自己用C语言编写一个贪吃蛇游戏&#xff0c;效果如图&#xff1a; 源代码可免费下载&#xff0c;传送门如下&#xff1a; 点击下载贪吃蛇游戏和源代码

JDK 13中的JEP 355文本块

JDK 13已于2019年9月17日上线GA&#xff0c; 此处列出了重要的新功能。 新功能之一是“文本块”。 这样可以轻松地编写多行字符串&#xff0c;而不必在拆分成不同的行时进行串联。 让我们快速了解创建多行字符串的不同方法&#xff1a; String aBlock """ SE…

java8 默认方法_默认方法:Java 8的无名英雄

java8 默认方法几周前&#xff0c;我写了一个博客&#xff0c;说开发人员学习新语言是因为它们很酷。 我仍然坚持这个主张&#xff0c;因为关于Java 8的事情真的很酷。 尽管毫无疑问&#xff0c;该节目的明星是添加了Lambdas和将函数提升为一等变量&#xff0c;但我目前最喜欢的…

两个常见的并发错误

作为Baeldung的编辑&#xff0c;我很高兴与一位作者一起撰写有关Java通用并发陷阱的文章。 这是一本不错的书&#xff0c;但是假设开发人员具有一定的能力。 我已经看到了几件即时并发失败的事情。 它们很容易添加到代码中&#xff0c;并保证为您提供奇怪的结果。 开发人员仍会…

kotlin自定义View出现 java.lang.ClassNotFoundException

问题1&#xff1a;找不到所引用的自定义View Didn’t find class “dxf.example.dxf.customviewdemo.MyTextView” on path: DexPathList 原因&#xff1a;build.gradle中 应用插件 解决&#xff1a;添加 apply plugin: ‘kotlin-android’ 问题2&#xff1a; java.lang.Cl…

javafx swing_JavaFX技巧9:请勿混用Swing / JavaFX

javafx swingJavaFX团队非常努力地说服我们&#xff0c;因为可以将Swing内容嵌入JavaFX UI中&#xff0c;反之亦然&#xff0c;因此从Swing迁移到JavaFX很容易。 我必须承认&#xff0c;我从来没有尝试过&#xff0c;但是根据我从客户那里得到的反馈&#xff0c;我只能建议不要…

kotlin-unresolved reference daclaredFunctions

问题&#xff1a;如题 原因&#xff1a; 默认编译时不导入kotlin-reflect.jar包导致&#xff0c;所以在该包中的默认不能使用 解决 需额外在dependencies中添加 kotlin-reflect的编译&#xff0c; compile “org.jetbrains.kotlin:kotlin-reflect:$kotlin-version”

AWS Loft的数据库周

这是我的笔记&#xff1a; https://databaseweekoctober2019sf.splashthat.com AWS上的数据库&#xff1a;正确工作的正确工具 在许多此类谈话中&#xff0c;我并没有做过深刻的记录。 我正在关注重点。 PostgreSQL排在MySQL之后。 AWS上8种类型的数据库&#xff1a; 关系…