CAS5.1集成SPNEGO

Windows加入AD域后,想实现用登录计算机的AD域账号密码,登录各个web应用站点。即浏览器访问web站点时,不需要输入用户密码,自动使用登录windows系统时的AD账号登录。

CAS官网地址:
https://apereo.github.io/cas/5.1.x/installation/SPNEGO-Authentication.html

AD域服务器上生成keytab文件

  1. 在AD域中,创建1个域账号,密码设置为永不过期

  2. 使用上面创建的域账号,创建SPN(服务主体名称)
    使用administrator账户登录AD域控服务器,在命令行运行以下命令:

    setspn  -S  HTTP/cas.test.com@apitest.domain.com  loginName
    

    参数说明:
    cas.test.com:CAS服务器域名
    apitest.domain.com:AD域服务器的域名
    loginName:域登录账号

    SPN:Kerberos身份验证使用SPN将服务实例与服务登录帐户相关联

  3. 生成keytab文件
    使用administrator账户登录AD域服务器,在命令行运行以下命令:

    ktpass /out cas.keytab /princ HTTP/cas.test.com@APITEST.DOMAIN.COM /pass * /mapuser loginName@APITEST. DOMAIN.COM  /ptype KRB5_NT_PRINCIPAL /crypto RC4-HMAC-NT
    

    参数说明:
    cas.keytab:生产的keytab文件名
    cas.test.com:CAS服务器域名
    APITEST.DOMAIN.COM:AD域服务器的域名(必须大写)
    loginName:域登录账号

搭建Kerberos

认证原理

https://www.jianshu.com/p/fc2d2dbd510b
https://blog.csdn.net/wulantian/article/details/42418231

Kerberos和CAS需要安装在同一台服务器上,且该服务器必须有域名

  1. 解压缩安装包:krb5-1.17.tar.gz(Linux版Kerberos)

  2. 进入到安装包src目录下,编译安装

    root@src#    ./configure
    root@src#     make && make install
    

    编译时可能会出现一些依赖错误,需要解决

  3. 修改Kerberos配置文件 /etc/krb5.conf

    [logging]
     default = FILE:/var/log/krb5libs.log
     kdc = FILE:/var/log/krb5kdc.log
     admin_server = FILE:/var/log/kadmind.log
    
    [libdefaults]
     ticket_lifetime = 24000
     default_realm = APITEST.DOMAIN.COM
     default_keytab_name = /root/cas.keytab
     dns_lookup_realm = true
     dns_lookup_kdc = true
     default_tkt_enctypes = rc4-hmac
     default_tgs_enctypes = rc4-hmac
    
    [realms]
     APITEST.PACTERA.COM = { 
      kdc = apitest.domain.com:88
     }
    
    [domain_realm]
      .apitest.pactera.com = APITEST.DOMAIN.COM
      apitest.pactera.com = APITEST.DOMAIN.COM
    
  4. 查看是否安装成功

    klist -k
    Keytab name: FILE:/home/cas/kerberos/cas.keytab
    KVNO Principal
    ---- --------------------------------------------------------------------------
       3 HTTP/cas.test.com@APITEST.DOMAIN.COM
    

    类似上面的结果,说明keytab文件能正常识别

    注意:JDK bin目录里也有klist命令,会和Kerberos的命令冲突,建议到Kerberos安装目录下执行klist

搭建CAS

  1. 添加依赖
    <dependency>
    	<groupId>org.apereo.cas</groupId>
    	<artifactId>cas-server-support-spnego-webflow</artifactId>
    	<version>${cas.version}</version>
    </dependency>
    <dependency>
    	<groupId>org.apereo.cas</groupId>
    	<artifactId>cas-server-support-ldap</artifactId>
    	<version>${cas.version}</version>
    </dependency>
    
  2. 添加配置
    #如果在域环境中,使用域账户登录,免登
    cas.authn.spnego.kerberosConf=/etc/krb5.conf
    cas.authn.spnego.jcifsServicePrincipal=HTTP/cas.test.com@APITEST.DOMAIN.COM
    cas.authn.spnego.loginConf=classpath:login.conf
    cas.authn.spnego.kerberosKdc=10.12.30.160
    cas.authn.spnego.jcifsDomain=cas.test.com  #cas服务器域名
    cas.authn.spnego.kerberosDebug=true
    cas.authn.spnego.kerberosRealm=APITEST.DOMAIN.COM
    cas.authn.spnego.ntlm=false
    cas.authn.spnego.jcifsServicePassword=abcd-123  #生成keytab文件域账号的密码
    
    #不是域用户,需要输入AD域账号密码登录
    cas.authn.ldap[0].type=AUTHENTICATED
    cas.authn.ldap[0].ldapUrl=ldap://172.16.253.237:389
    cas.authn.ldap[0].useSsl=false
    cas.authn.ldap[0].connectTimeout=5000
    cas.authn.ldap[0].baseDn=DC=apitest,DC=domain,DC=com
    cas.authn.ldap[0].userFilter=(|(sAMAccountName={user})(mail={user})(mobile={user}))
    cas.authn.ldap[0].subtreeSearch=true
    cas.authn.ldap[0].bindDn=shiyonghui     #域账号密码
    cas.authn.ldap[0].bindCredential=abcd-123
    
  3. 添加配置文件login.conf,放到CAS classpath目录下
    jcifs.spnego.initiate {
       com.sun.security.auth.module.Krb5LoginModule required storeKey=true useKeyTab=true keyTab="/root/cas.keytab";
    };
    jcifs.spnego.accept {
       com.sun.security.auth.module.Krb5LoginModule required storeKey=true useKeyTab=true keyTab="/root/cas.keytab";
    };
    
    指定keytab文件的位置

浏览器配置

免密登录,需要浏览器开启windows身份验证。

IE开启windows身份验证

工具 - Internet选项 – 安全 – 自定义级别 – 自动使用当前用户名和密码登录
在这里插入图片描述
本地Intranet – 站点 – 高级 – 添加(CAS登录地址)
在这里插入图片描述

谷歌浏览器开启windows身份验证

IE开启后,谷歌浏览器也就开启了windows身份验证

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值