㈠ 什么是web协议
顾名思义,就是在web中使用的协议,更通俗的讲就是大家做web开发遵守的web协议规范。
协议很多,比如常用的http、tcp、ftp
㈡ web服务采用的信息传输协议是
web服务采用的信息传输协议是HTTP。HTTP通常运行在TCP之上,指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应,请求和响应消息的头以ASCII形式给出,而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当。演示机型:华为MateBook X
系统版本:win10
web服务采用的信息传输协议是HTTP。HTTP通常运行在TCP之上,指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应,请求和响应消息的头以ASCII形式给出,而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当。
㈢ Web系统之常用单点登录协议
企业中一般会存在多个系统,假设用户进入每个系统前都需要输入账号/密码登录,在系统个数少的情况下,每次输入账号/密码还能接收;如果系统个数较多,用户则无法接收。单点登录则很好地解决了此问题。
单点登录的原理是用户只需进行一次登录,便可访问多个系统。
可用于单点登录的协议较多,下面将会简单说明一下常见的四种单点登录协议CAS、OAuth2、OpenID、SAML。
CAS协议是一种基于token协议。它用于Web应用的单点登录或登出,协议内容就是规范出一组用于登录/登出的URIs。协议详见: https://apereo.github.io/cas/4.2.x/protocol/CAS-Protocol.html
协议涉及到的重要概念如下:
用CAS实现的单点登录流程如下:
理解OAuth2本身,见 http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html
这里重点提出的是使用Oauth2的单点登录流程:
OpenID最新版本是OpenID Connect,它为OpenID的第三代技术。OpenID Connect允许所有类型的客户端,包括基于浏览器和本机移动应用程序。
OpenID用于终端用户的身份认证,OAuth2用于在已知用户身份合法情况下对客户端的资源授权。OpenID Conect = OpenID + OAuth2。
OpenID Connect基于OAuth协议之上,在OAuth2中有一个特殊的Scope "openid"来标识openid请求,并在OAuth2的返回体中增加一个idtoken的字段来标识用户。
使用OpenID Connect的单点登录流程与Oauth2一致。
目前国内很多应用(浏览器或手机)都支持微信,微博等第三方认证,比如。这种第三方认证可以用OpenID Connect来实现。
注意一般商业应用才会支持使用第三方认证
SAML通过XML进行交互,且基于HTTP之上。
SAML协议中涉及的基本术语下面进行简要介绍。
IdP: Identity Provider, 身份提供商,是指提供身份管理的服务。常见的企业自有IdP有AD FS,Shibboleth等,Cloud IdP有Azure AD,Okta,OneLogin等。
SP: Service Provider,服务提供商,是指利用IdP的身份管理功能,为用户提供具体服务的应用。SP会消费IdP提供的用户信息。在一些非SAML协议的身份系统(比如OIDC)里,也把Service Provider称作Relying Party,也就是IdP的依赖方。
SAML: Security Assertion Markup Language,是一个实现企业级用户身份认证的标准协议。是SP和IdP之间实现沟通的技术实现方式之一。是目前企业身份联盟的的事实标准(SAML 2.0)。
SAML Assertion: 简称Assertion,SAML断言,是SAML协议中用来描述认证请求(Request)和认证响应(Response)的核心元素。例如用户的具体属性就包含在认证响应的断言里面。
Trust: 信赖,是指建立在SP和IdP之间的互信机制,通常由公私钥来实现。SP通过可信的方式获取IdP的的身份联盟元数据,元数据中包括了IdP用来给SAML Assertion签名的私钥的对应公钥,SP则可以使用公钥来验证Assertion的完整性(Integrity)。
参考阿里云单点登录案例: https://m.aliyun.com/doc/document_detail/69969.html
一个参考链接: https://www.jianshu.com/p/5d535eee0a9b
具体选用哪种单点登录方式,需要权衡利弊。