OpenSAML 使用引导 III: Service Provider 的实现之Artifact与断言

  • 时间:
  • 浏览:1

SAML断言是认证的实体,其暗含关于用户和身份鉴别的信息。以下来简单介绍下断言的内容。

前文OpenSAML 使用引导 II : Service Provider 的实现之AuthnRequest介绍从Service Provider(SP)宽度出发,讲解怎么使用OpenSAML如申请身份鉴别请求,并从IDP出得到断言的引用标识——SAML Artifact,本文将继续讨论Artifact的具体意义,怎么使用Artifact换取断言信息,以及断言的使用妙招。

用户被认证的妙招在AuthnStatement子字段AuthnContextAuthnContextClassRef属性值,标识认证的妙招:

消息出理 器还不能 直接调用:

创建SOAP Client的具体做法为继承AbstractPipelineHttpSOAPClient并实现newPipline妙招,来返回管道发送消息。

不过对于SOAP消息,这么强制的内容不能 打上去到环境上下文中,只要建议加入数据签名以增强安全性。

ArtifactResponse实之类下:

更多关于SAML协议的是实现的内容,请参见自己编写的一系列教程文章,其介绍怎么使用OpenSAML,欢迎阅读指正:

形成的Artifact Request XML如下:

断言里暗含而是的信息,下面以前展示从断言里提取不能 的信息。

以下是使用消息出理 器的实例:

创建环境上下文:

当SP得到Artifact以前,根据Artifact构造ArtifactResolve来请求真正的SAML消息。

将以上出理 器放在出理 器链中,批量出理 :

RPC vs REST : RPC,是面向服务的,关于行为和动作;REST面向资源的,强调描述多多线程 的事务和名词。和REST相比,SOAP的优势在于能保证事物的原子性和消息可靠性,且对于数据完整和数据隐私性的有很完备标准。

Artifact是对有另有一个 SAML对象的引用。SAML规定Artifact中不能 包括以下内容:

Artifact Resolve Response XML With Encrypted Assertion

源码地址:https://github.com/sunrongxin7666/OpenSAML-ref-project-demo-v3.git

AttributeStatement之中暗含而是属性,还都还可以 Key_Value的形式:

断言在接收时是经过加密和签名的,这里对其的以前还都还可以 假设以前解密并通过签名验证的。

这里跳过了关于第三步身份认证的讨论,这是以前关于用户身份的认证完整取决于idp,和SAML协议或多或少这么关系。

当用户通过身份鉴别以前,Idp会为认证信息(断言)分配有另有一个 标识,你或多或少标识被称为ArtifactArtifact将以URL参数的形式和用户一起去被发送回SP。

当有多个出理 器被调用时,还不能 使用BasicMessageHandlerChain来批量初始化和调用。

设置ReceivedEndpointSecurityHandler

AuthnRequest之类,发送ArtifactResolve也是通过message context

Artifact绑定是传输SAML信息(借有助其引用Artifact)的或多或少妙招,通过HTTP客户端(如浏览器)来工作。传递Artifact有或多或少妙招,HTTP POST和HTTP重定向。之后Artifact来换取真正的SAML消息,你或多或少步靠SP和IDP可信信道来完成,比如SOAP信道。Artifact绑定的使用是以前SAML消息暗含敏感信息,直接通过浏览器传送SAML消息未必安全。而是通过HTTP重定向传输Artifact,也只要说Artifact被当成URL中的参数传输。

使用Artifact Binding就还不能 出理 以上问题图片报告 :

也还不能 在Client的实现中隐式调用,比如在PipelineHttpSOAPClient中那样。

以前涉及到两方的通信,还不能 创建InOutOperationContext来出理 输入输出的信息。

SP为了通过Artifact得到真正的认证信息,不能 构建ArtifactResolve对象,ArtifactResolve中暗含ArtifactArtifactResolve通过SOAP协议发送给Idp,Idp返回ArtifactResolveResponse,其中就暗含了SAML Assertion,即认证信息。

由此可见Artifact对象至关重要,下面就来讨论Artifact的细节。

SOAP简单的理解,只要这么 的有另有一个 开放协议SOAP=RPC+HTTP+XML:采用HTTP作为底层通讯协议;RPC作为一致性的调用途径,XML作为数据传送的格式,允许服务提供者和服务客户经过防火墙在INTERNET进行通讯交互。

浅谈SOAPSOAP 教程

断言用来承载安全信息,接收者还不能 根据这么 的信息来做出安全访问控制决定。断言中所暗含的安全信息被称为断言声明(assertion statement),共有或多或少类型:

嘴笨 以前熟悉OAuth中的授权码模式和默认模式的区别,SAML中使用Artifact或是HTTP Redirect也是异曲同工,妙招使用场景不同而定。

关于怎么加密断言,将在下有另有一个 大章节中完整分析。

设置MessageLifetimeSecurityHandler

相关阅读

将消息配置给SAMLMessageInfoContext,获得Issue内容:

最后将Artifact加入其中:

目前,基于浏览器的SSO中,HTTP POST和HTTP Redirect的模式用的最多,只要浏览器或多或少有而是的限制和缺乏,使得有以前不便直接通过浏览器获得身份认证断言:

嘴笨 SAML2.0中支持而是种绑定妙招,如下都妙招在OpenSAML中还都还可以 实现:

为了能发送SOAP消息,还不能 设置SOAP Client。你或多或少Client以前调用消息的出理 器,编码器以及解码等来传送消息。哪几种内容将在下一章中详谈。

SOAP消息发送以前,会同步等候Response返回以前超时。当Response返回时,SAML消息便可或得到:

用户身份验证的时间在AuthnStatement字段的AuthnInstant 属性中

接下来刚开始这是ArtfactResolve的各种属性:

新版本OpenSAML的一大特点只要消息出理 器容器(collection of message handlers)。哪几种消息出理 来处消息并提供充裕的妙招,如验证消息的有效性,验证签名,签名等等。出理 器一般在解码器以前编码器以前调用。以下是或多或少可用的消息出理 器:

更新 2017-11-20

回答网友视频见面xiajale的提问:为哪几种使用Artifact Binding,详情请见第六节

只要构建ArtifactResolve对象

RCP(Rmote Procedure Call):远端多多线程 调用,像调用本地对象那样调用远端的多多线程 (妙招),为同步过程,会拥塞调用代码的执行。

SAML协议中怎么使用Artifact Binding模式请求并获得断言流程以前为亲戚亲戚朋友介绍完毕。不过有的读者以前有问题图片报告 , 为哪几种要使用Artifact Binding模式,HTTP POST以前HTTP重定向直接获取断言信息还都还可以 更简单吗?的确是更简单,只要这么 做有安全性的隐患