如果两种协议都用于提供SSO,那么使用一种协议的原因是什么?您能否列出它们之间的一些主要区别,使它们适用于不同的任务和情况?
注意:我不是在谈论 CAS 软件,而是在谈论 CAS 协议。
SAML(安全断言标记语言(和CAS(中央身份验证服务(是用于管理访问控制决策的单点登录 (SSO( 协议(或标准(。
SAML代表安全断言标记语言(发音为 SAM-el(,它是用于在各方之间交换身份验证和授权数据的开放标准,特别是在IdP(身份提供商(之间,即。存储用户名和密码的SaaS公司,以及SP(服务提供商(,即。您的网站或服务。
SAML 是一种基于 XML 的安全断言标记语言标准。它包含:一组基于 XML 的协议消息、一组协议消息绑定和一组配置文件(利用上述所有内容(。
简而言之,SAML 是 SSO(单点登录(的 XML 框架(标准(,各种应用程序可以使用它来进行身份验证("您是谁,您是谁"(或授权访问("您有权访问此应用程序部分"(。
另一方面,CAS代表中央身份验证服务,同样是一种单点登录、基于票证的协议标准或框架。其目的是允许用户访问多个应用程序,同时仅提供一次其凭据(如用户 ID 和密码(。
CAS这个名字也指实现这个协议的软件包(称为Apereo CAS((值得注意的是,即使CAS服务器的主要目标是实现CAS协议,其他协议也支持作为扩展,即。Apereo CAS Server 还包含实现 SAML 的功能(。
CAS的关键概念是:存储在TGCcookie 中的TGT(票证授予票证(表示用户的 SSO 会话,而 ST(服务票证(——作为 URL 中的 GET 参数传输——代表 CAS 服务器为特定用户授予的对 CASized 应用程序的访问权限。
CAS协议最强大的功能之一是 CAS 服务能够充当另一个 CAS 服务的代理,传输用户身份。
选择 SAML 或 CAS 时的特殊注意事项:
萨姆勒:
SP和IDP之间的注册是强制性的,可以在公众下完成 元数据交换(您需要事先同意 SP 和 IDP 之间将发送哪些元标记(
XML 消息可以在 非对称密钥(在元数据中发布的公钥(
中国科学院:
没有义务在 CAS 服务器中声明 CAS 客户机(打开模式(
CAS客户机和 CAS 服务器之间的信任依赖于 CAS 服务器 证书验证
结论:(根据本演示文稿(:
SAML:复杂的协议,经常用于SaaS身份验证,安全性好,成熟
CAS:协议简单,安全性不强,适合内部使用
这是专门为 CAS 服务器开发的专有协议。
然而:
"即使CAS服务器的主要目标是实现CAS协议,也支持其他协议作为扩展:
OpenID
OAuth
SAML"
由于CAS协议是专有的,因此IDP不支持它,例如Azure AD,ADFS,Auth0等。
因此,如果您只想使用 CAS 协议与 CAS 服务器通信,那将起作用。
但是,如果您想与另一个 IDP 交谈,则不能使用 CAS 协议执行此操作。您必须使用上述协议扩展之一。
也可以编写桥接协议。这样,您可以继续使用 CAS 协议,但 IDP 将其视为 OpenID Connect
因此,如果在 CAS 世界中,请使用 CAS 协议,但如果您需要使用其他 IDP,请坚持使用标准的三种协议。