saml2.0 java 例子_SAML2.0 协议初识(一)

本文介绍了SAML2.0协议的基础知识,包括它的作用、核心定义如SP、IDP、断言和协议流程。通过一个简单的HTTP-POST绑定示例,展示了SAML在单点登录中的应用。后续文章将深入探讨相关参数和提供Java实现的示例。
摘要由CSDN通过智能技术生成

一、什么是 SAML 协议?

SAML 即安全断言标记语言,英文全称是 Security Assertion Markup Language。它是一个基于 XML 的标准,用于在不同的安全域(security domain)之间交换认证和授权数据。在 SAML 标准定义了身份提供者 (identity provider) 和服务提供者 (service provider),这两者构成了前面所说的不同的安全域。 SAML 是 OASIS 组织安全服务技术委员会(Security Services Technical Committee) 的产品。

SAML(Security Assertion Markup Language)是一个 XML 框架,也就是一组协议,可以用来传输安全声明。比如,两台远程机器之间要通讯,为了保证安全,我们可以采用加密等措施,也可以采用 SAML 来传输,传输的数据以 XML 形式,符合 SAML 规范,这样我们就可以不要求两台机器采用什么样的系统,只要求能理解 SAML 规范即可,显然比传统的方式更好。SAML 规范是一组 Schema 定义。

可以这么说,在 Web Service 领域,schema 就是规范,在 Java 领域,API 就是规范。

二、SAML 协议的作用

认证声明:声明用户是否已经认证,通常用于单点登录。

属性声明:声明某个 Subject 所具有的属性。

授权决策声明:声明某个资源的权限,即一个用户在资源 R 上具有给定的 E 权限而能够执行 A 操作。

三、SAML 相关定义

SP(Service Provider): 向用户提供正式商业服务的实体,通常需要认证一个用户的身份;

IDP(Identity Provider): 提供用户的身份鉴别,确保用户是其所声明的身份

断言 (Assertions) 即信息:断言是在 SAML 中用来描述认证的对象,其中包括一个用户在什么时间、以什么方式被认证,同时还可以包括一些扩展信息,比如用户的 Email 地址和电话等等。下面是一个断言的例子:

1 <?xml version="1.0"?>

2

3 http://idp.example.com/metadata.php

4

5 xiaosy@bw30.com

6

7

8

9

10

11

12 http://sp.example.com/demo1/metadata.php

13

14

15

16

17 urn:oasis:names:tc:SAML:2.0:ac:classes:Password

18

19

20

21

22 test

23

24

25 test@example.com

26

27

28 users

29 examplerole1

30

31

32

协议 (Protocol) 即通信:协议规定如何执行不同的行为。这些行为被细化成一些列的 Request 和 Response 对象,而在这些请求和相应的对象中包含了行为所特别需要的信息。比如,认证请求协议(AuthnRequest Protocol)就规定了一个 SP 如何请求去获得一个被认证的与用户。

这是一个 AuthnRequest 对象示例:

1 <?xml version="1.0"?>

2

3 http://sp.example.com/demo1/metadata.php

4

绑定 (Binding) 即传输:绑定定义了 SAML 信息如何使用通信协议被传输的。比如,HTTP 重定向绑定,即声明 SAML 信息将通过 HTTP 重定向消息传输;再比如 SAML SOAP 绑定,声明了通过 SOAP 来传递 SAML 消息。比如上面 AuthnRequest 就声明了 Http-POst 绑定

元数据 (MetaData):SAML 的元数据是配置数据,其包含关于 SAML 通信各方的信息,比如通信另一方的 ID、Web Service 的 IP 地址、所支持的绑定类型以及通信中实用的密钥等等。

四、SAML 协议流程分析:

SAML 协议内容比较复杂,绑定方式不只一个,在这里我们以应该算是最简单的一种绑定方式 HTTP-POST 方式说明 SAML 协议的工作流程(好吧,其实是其他的还没有了解呢

3a86ea89e8f2b391c6aed38a13f6a67e.png)

7eca932fd80b4dc5af08af22a7eb934a_TIM20171220164630.png

1、用户通过浏览器访问 SP 的某个受保护的资源

2、SP 鉴别到该用户未鉴权,于是将该用户重定向到 IDP 端;前提是改 IDP 是受 SP 信任的身份认证中心;

3、IDP 端通过自己的认证方式对该用户合法性进行认证;

4、认证通过后,IDP 端生成响应后返回给 SP

5、SP 接收到 IDP 的响应后解析出用户认证信息,合法,则允许用户访问受保护的资源

接下来,我将分别从 SP 端和 IDP 端对一些常用的参数进行介绍,并且最后给出一个简单的 demo, 敬请期待

06bbb981284858235584d867f571f881.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值