繁体   English   中英

以CAS和SAML2 SSO为例

[英]CAS and SAML2 SSO by example

我们有大约十二个内部管理Web应用程序(主要是Java)供员工用于各种工作流,并且每个应用程序都有各自不同的登录/身份验证系统。 我被要求在一个单一的单一系统上将它们全部联合在一起。 我收到了下图,以此作为起点:

在此处输入图片说明

如您所见,每个应用程序都使用CAS客户端连接到CAS服务器。 该服务器还具有配置了Shibboleth插件(?)的Apache httpd。 然后,该CAS服务器与我们的Active Directory(“ AD”)服务器进行通信。

我需要确保我完全了解这些技术如何协同工作:

  • CAS服务器和Apache / Shibboleth之间发生了什么?
  • Apache / Shibboleth与“信任商店”之间发生了什么?
  • CAS服务器和AD之间正在传达什么?
  • 该SAML2令牌中存储的内容将从CAS服务器发送回每个CAS客户端吗?
  • 作为Java开发人员,我该如何使用SAML2令牌(如果身份验证失败则缺少SAML2令牌)来实际使用用户登录?
  • 这里是否有更好的技术选择:如果是,它们是什么?为什么? 请记住,所有这些都是Java应用程序,但其中一个是C#.NET应用程序。

以下是您的一些答案:

首先,让我简要概述一下CAS客户端和CAS服务器之间的交互如何正常工作:(我不熟悉Shibboleth部分,因此省略了它。)

  1. 用户点击应用程序网页。
  2. 应用程序将用户重定向到CAS。
  3. CAS使用标准cookie和会话来确定用户是否已经登录。
  4. 如果未登录用户,则CAS将显示一个登录表单供用户提供登录凭据。 如果用户已经登录,则CAS跳至步骤7。
  5. 然后,CAS与AD交互以验证所提供的凭据有效。
  6. 如果是,则CAS登录用户。
  7. 然后CAS将重定向回应用程序,并提供票证。
  8. 该应用程序直接致电CAS以验证所提供的票证。
  9. 如果票证有效,则CAS返回用户信息作为对请求的响应。
  10. 然后,该应用程序为用户创建一个经过身份验证的会话,从而有可能根据CAS提供的信息来查找用户信息,并在适当的地方将其重定向。

现在为您的问题:

  • CAS和AD:CAS实际上将登录到AD,并使用用户提供的凭据来查找和验证用户。 如果使用的是林,请确保使用正确的端口登录到全局目录,因为这很容易丢失。
  • 令牌的内容并不重要,因为标准的CAS协议会将令牌发送回CAS并在响应中检索用户详细信息。
  • 作为开发人员,使用令牌实际上无济于事,因为令牌已绑定到应用程序,并且只能使用一次,并且出于安全原因,必须在很短的时间内使用(即,发送回CAS进行验证),否则它将过期。

如果您主要从事CAS并且可以在您的应用程序中拥有自己的CAS客户,那么CAS可能是一个很好的解决方案。 不幸的是,尽管CAS的协议与SAML2的ARTIFACT配置文件非常相似,但CAS并没有使用它自己的协议来完全支持SAML2。 如果要与其他SAML2客户端集成,则需要完成一些工作。

另外,如果您的Java应用程序恰好使用Spring,则Spring安全性包括开箱即用的CAS客户端。

编写自定义客户端也很容易,因为您可以看到协议并不十分复杂。

另外,虽然工作量更大,并且设置起来可能很麻烦,但是如果您的员工已经通过Windows登录到您的域,那么您实际上可以承担此费用,并将CAS配置为使用用户已经提供的Windows登录信息而不是使用登录表单提示用户,使他们重新输入Windows凭据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM