【SSO单点登录】4.实现方式介绍(二)

本文章由聚项云平台博客独家原创,转载请注明出处:http://blog.jxcode.com/?p=2856&preview=true

上一篇我们讲解了单点登录的3中实现方式,下面继续讲解剩下的几种实现方式。

(1)Token-based(加密认证)
现在被广泛使用的口令认证,比如FTP,邮件服务器的登录认证,这是一种简单易用的方式,实现一个口令在多种应用当中使用。

常用的口令认证,有软件加密和硬件加密两种。

我们在使用网上银行的时候,就需要一个“口令”密码,且需要一个类似U盘的“USBkey”的外设来认证。其实这就是一种加密认证。
而在基本的项目中,加密方式往往是硬件加密,为什么呢?最容易做到的加密,即软件加密,通常会将密码的编码格式改掉(16进制改成8进制或8进制改成2进制,或者使用MD5加密),而无论哪种软件加密,都是可以被反编译破解出来的,只是时间长短问题。而在真实项目(类似金融、银行、物流)中,口令加密都是用过硬件进行加密。

在使用硬件登录的机制中,用户只需将硬件插入登录系统的设备上,系统会读取硬件中的认证信息,进行登录。无需用户手动输入账号密码信息。除了银行登录的“U盾”,还有指纹识别等硬件设备。

(2)基于网关
网关可以是防火墙,也可以是专门用于通信加密的服务器。需要单点登录的服务器都放置在网关隔离的安全网段内。客户端通过认证后获得服务授权。

下面是一个基于网关进行统一认证的服务器架构图:
图4.1
在该图中有一个应用服务器和数据服务器,者两个服务器是部署在局域网中的,而外界想要访问局域网中的服务,首先通过互联网中运营商提供的VPN专线,访问到局域网前的防火墙,外界用户必须通过防火墙和加密设备。这里防火墙起到过滤或开放端口的作用,加密设备是一种硬件认证的机制。
而已经在局域网中的用户,想要访问应用,为了安全起见,往往也需要在应用服务器之间添加一个防火墙,该防火墙的作用是外围防火墙认证后的用户,去访问任意一个应用系统的时候,需要局域内部的防火墙来过滤出符合某协议规则的用户。

(3)基于安全断言标记语言(SAML)实现
SAML(Security Assertion Markup Language,安全断言标记语言)它是一个基于XML的标准,用于在不同的安全域(securitydomain)之间交换认证和授权数据。在SAML标准定义了身份提供者(identityprovider)和服务提供者(service provider),这两者构成了前面所说的不同的安全域。
SAML的出现大大简化了SSO,并被OASIS批准被SSO的执行标准。开源组织OpenSAML实现了SAML规范,可参考http://www.opensaml.org
SAML2.0由断言(Assertions)、协议(Protocols)、绑定(Bindings)、配置(Profiles)、Metadata组成,它们的各自意义如下:
断言(Assertions):认证,属性和授权信息。
协议(Protocols):获取断言和进行身份管理的请求和响应。
绑定(Bindings):SAML协议的映射到标准消息和通信协议。
配置(Profiles):由断言,协议,和绑定组成的用例。
MetaData:用于确保IDP(认证服务器)和SP(应用系统)之间的安全交易

下面是一个基于SAML的redirect/POST模式的统一认证系统架构图:
图4.2
其中认证的步骤如下(SP代表用户想访问的应用系统,IDP代表认证服务器):
第一步:
用户尝试访问sp.example.com上的资源。Sp检查用户在此网站上是否有登录会话(即安全上下文)。如果用户在该网站上有登录会话,则SP直接让用户访问资源。否则,SP将发起SSO流程。

第二步:
SP发送一个HTTP消息返回给浏览器,HTTP消息中包含AuthnRequest消息。HTTP消息是URL encoded。

第三步:
提示用户输入认证。认证方式有用户名+口令。

第四步:
用户提交认证信息登录。

第五步:
IDP提供用户的权限信息。

第六步:
SP解析用户的权限信息并决定返回用户访问的资源页面。

第七步:
用户访问应用。
讲解了那么多概念,我们后面会实际使用代码来实现SSO单点登录的机制。

未经允许不得转载:JX BLOG » 【SSO单点登录】4.实现方式介绍(二)

赞 (0)

评论 0

评论前必须登录!

登陆 注册