流行的后端身份验证协议包括RADIUS及其后继者DIAMETER,它们主要用于网络访问场景(例如拨号Internet身份验证、Wi-Fi身份验证等) 。由于这些协议原本设计用于支持网络访问场景,它们都属于“AAA”(同时支持身份验证、授权、计费)协议 。例如,如果需要,它们的计费功能可对拨号Internet连接进行基于时间和使用量的准确计费 。
尽管LDAP不是为后端身份验证协议设计的,但它有时也被当成身份验证协议来用 。应用程序服务器可以尝试向LDAP服务器进行身份验证来验证用户凭据 。这种方法还有一个优点是,如果成功,则应用程序服务器还可以使用LDAP检索有关用户的信息 。
应用程序到身份验证服务器:关联的客户端到应用程序协议RADIUS和DIAMETER这样用于网络访问场景的后端验证协议,传统上设计用于和特定的客户端到应用程序验证协议结合使用,比如由PPP定义的那些 。PPP是一个OSI第2层协议,支持通过串行线路和拨号调制解调器发起IP网络连接 。PPP定义了自己的可扩展身份验证框架,并支持以下方法:
- PAP,以明文形式传输用户名和密码;
- CHAP,一种质询响应方法(避免以明文形式传输密码,但存在前文所述的质询响应方法的缺点);
- MS-CHAP和MS-CHAPv2,CHAP的Microsoft变体;
- EAP,可扩展身份验证协议,现代的首选协议 。
EAP和SASL之间有一些相似之处,因为它们都是支持可扩展方法集的通用框架 。但是,EAP定义了一个特定的有线协议,而SASL没有定义 。此外,EAP旨在支持网络访问应用程序,而SASL旨在支持应用程序级别的身份验证应用程序 。
但是,关于EAP的最重要的一点是,它从一开始就被设计为可被应用程序服务器不透明地经隧道传输 。例如,假设你通过调制解调器拨入路由器,并建立PPP连接 。路由器必须了解协议(例如PAP或CHAP),并且知道如何通过RADIUS或DIAMETER与后端服务器交互协议 。
在现代应用程序中,例如Wi-Fi客户端对一个WLAN接入点发送EAP,接入点只会将EAP消息作为不透明数据,然后将其在RADIUS或DIAMETER会话中通过隧道传输到一个网络身份验证服务器上,让网络身份验证服务器来处理EAP消息 。身份验证服务器同样可以返回封装在RADIUS或DIAMETER会话中的EAP消息,Wi-Fi接入点将其解包并传递给客户端 。这样,网络设备就与所使用的身份验证方法无关,并且不需要升级就能支持新的身份验证方法 。只有验证服务器和客户端需要升级 。
请注意,客户端永远不会发送RADIUS或DIAMETER 。RADIUS和DIAMETER是严格的后端协议 。因为EAP消息始终在转发到身份验证服务器之前被封装在RADIUS或DIAMETER消息中(身份验证客户端无法控制的进程),所以RADIUS或DIAMETER消息可以包括与EAP无关的,身份验证服务器感兴趣的客户端信息消息本身 。例如,如果客户端正在为启用802.1x的以太网端口发起验证,则交换机可以包含关于客户端连接到哪个端口的信息,并且身份验证服务器可以预见它在这上面的决策 。
单点登录协议现在,我们讨论最复杂,最有趣的身份验证协议:单点登录协议 。如前所述,单点登录协议必须包括两个部分:用于验证客户端到验证服务器的协议,以及用于验证客户端到任意应用程序服务器的协议 。前者可能是标准的客户端到应用程序协议,也可能是定制的协议 。而SSO协议的性质要求后者是SSO协议所特有的,并且是任何SSO协议的核心 。
单点登录协议:非WebSSO协议可以大致分为Web和非Web SSO协议 。最受欢迎的非Web SSO协议是Kerberos 。
Kerberos允许客户端使用定制的身份验证协议向身份验证服务器发起身份验证;客户端会收到一个票证,该票证能以密码方式向应用程序服务器发起身份验证,而无需与Kerberos身份验证服务器之间进一步的通信(验证服务器在用户登录后可能会关闭,并且不会立即让所有应用程序无法访问) 。
该协议还支持客户端来验证服务器,以及服务器来验证客户端 。如今,*nix和Windows Active Directory环境都使用Kerberos 。对于客户端到应用程序的身份验证,通常不直接在身份验证框架内将其实现为身份验证方法 。
推荐阅读
- 根据判断PC浏览器类型和手机屏幕像素自动调用不同CSS
- 详解飞书新功能,如何让开发者“爽”起来?
- java中常见的六种线程池详解
- 如何挑选墨鱼
- 椰子没打开可以放多久?
- 翡翠手镯|翡翠不同的瑕疵造成的影响也不同,该怎样分辨?快来分辨不同属性
- 玻璃杯适合泡什么茶,泡不同的茶定要用不同的茶具吗
- linux网络编程常见API详解
- 详解三大编译器:gcc、llvm 和 clang
- 不同的场合该如何泡茶,如何泡茶
