Windows Active Directory 域

SPNEGO 是一种身份验证技术,主要用于为在 Active Directory域凭据下运行的Windows上运行的浏览器提供透明的CAS身份验证。涉及三个参与者:客户端、CAS服务器和Active Directory域控制器/KDC。

  1. Client sends CAS: HTTP GET to CAS for cas protected page
  2. CAS responds: HTTP 401 - Access Denied WWW-Authenticate: Negotiate
  3. Client sends ticket request: Kerberos(KRB_TGS_REQ) Requesting ticket for HTTP/cas.example.com@REALM
  4. Kerberos KDC responds: Kerberos(KRB_TGS_REP) Granting ticket for HTTP/cas.example.com@REALM
  5. Client sends CAS: HTTP GET Authorization: Negotiate w/SPNEGO Token
  6. CAS responds: HTTP 200 - OK WWW-Authenticate w/SPNEGO response + requested page.
ClientClientCASCASKerberosKerberos1、HTTP GET to CAS for cas protected page2、HTTP 401 - Access Denied WWW-Authenticate: Negotiate3、Client sends ticket request: Kerberos(KRB_TGS_REQ) Requesting ticket for HTTP/cas.example.com@REALM4、Kerberos KDC responds: Kerberos(KRB_TGS_REP) Granting ticket for HTTP/cas.example.com@REALM5、HTTP GET Authorization: Negotiate w/SPNEGO Token6、HTTP 200 - OK WWW-Authenticate w/SPNEGO response + requested page.

当没有CAS SSO会话时,仅对第一个请求发生上述交互。一旦CAS授予票证授予票证,SPNEGO过程将不会再次发生,直到CAS票证过期。

必要条件:

  • 客户端已登录到 Windows Active Directory 域.
  • 本地安装了支持的浏览器.
  • CAS 服务运行了 基于MIT Kerberos 的 Windows Active Directory 域控制器.

JCE 要求

确保在CAS使用的Java环境中安装了适当的JCE包是安全的,特别是当您需要使用ADF发出的加密有效负载时。确保为Java版本选择正确的JCE版本。可以通过Java-version命令检测Java版本。

大型Kerberos票证

如果组织用户拥有大量kerberos票证(可能是由于其是大量组的成员),则Tomcat连接器需要将maxHttpHeaderSize值从默认值增加,以允许将票证传递给CAS服务器应用程序。

配置使用

<dependency>
  <groupId>org.apereo.cas</groupId>
  <artifactId>cas-server-support-spnego-webflow</artifactId>
  <version>${cas.version}</version>
</dependency>

详细配置参考:https://apereo.github.io/cas/6.5.x/authentication/SPNEGO-Authentication.html

作者:Jeebiz  创建时间:2022-10-25 13:27
最后编辑:Jeebiz  更新时间:2024-05-06 16:13