Shibboleth简介——shibboleth是怎样工作的?
shibboleth和其他单点登录(SSO)产品的区别在于:shibboleth依附于标准以及在仍然保护组织的隐私的情况下,shibboleth给用户的组织之外的服务提供单点登录支持的能力。
基于网页的单点登录系统的主要元素如下:
1. 网页浏览器(Web Browser):在单点登录过程中代表用户
2. 资源(Resource):包含用户需要的受限制的访问内容
3. 身份提供者(Identity Provider(IdP)):对用户进行认证
4. 服务提供者(Service Provider(SP)):为资源执行单点登录过程
单点登录的步骤
步骤1:用户访问资源
用户尝试访问受保护的资源。资源监视器决定用户是否有活跃的会话,发现用户没有,把用户指向服务提供者(SP)来开始单点登录过程。
步骤2:服务提供者(SP)发表认证请求
用户到达服务提供者(SP),服务提供者准备一个认证请求并发送请求和用户给身证提供者(IdP)。服务提供者(SP)软件通常和资源安装在同一个服务器。
步骤3::用户在身份提供者(IdP)处被认证
当用户到达身份提供者(IdP),IdP检查用户是否有一个存在的会话。如果有,前进到下一步。如果没有,IdP认证它们(例如:提示并检查一个用户名和密码)然后用户前进到下一步。
步骤4:身份提供者(IdP)发表认证响应
在认证了用户之后,身份提供者准备一个认证响应并把响应和用户发送回服务提供者(SP)。
步骤5:服务提供者(SP)检查认证响应
当用户带者来自身份提供者的响应到达时,服务提供者将会确认响应,为用户创建一个会话,使从响应中检索到的一些信息(例如:用户的标识符)可用来保护资源。
步骤6:资源返回内容
像步骤1一样,用户现在再次尝试访问受保护的资源,但是这一次用户己经有一个会话并且资源知道用户是谁。有了这些信息,资源将会服务用户的请求并且发送用户请求的数据
联合单点登录
上面的步骤对所有的单点登录系统都是一样的,但是一些系统只有当身份提供者和服务提者者在同一个组织中才能工作,然而其他的系统忽视这两个组件是否在同一个组织中。
属于后一类的实现被叫做实现联合单点登录
一个给定的服务提供者通常是想要和多个身份提供者一起工作的(例如:有多个客户的商业服务,被多个组织的研究员使用的资源),同样的,一个给定的身份提供者也想和多个服务提供者一起工作。当一组身份提供者和服务提供者同意一起工作时,这个组就被叫做一个联盟。
更详细的关于Shibboleth工作机制的介绍:https://wiki.shibboleth.net/confluence/display/CONCEPT/FlowsAndConfig
IDP和SP的交互(有图):
https://wiki.shibboleth.net/confluence/display/CONCEPT