centos7配置kerberos服务,并使用JAAS登录
2017-08-24 16:35
411 查看
准备两个虚拟机:192.168.1.101、192.168.1.102,101作为kerberos的server端,102作为kerberos的client端。开启88端口。
1、安装kerberos服务server端
1.1、配置/etc/krb5.conf
1.2、配置/var/kerberos/krb5kdc/kdc.conf
1.3、创建/初始化Kerberos database
若出现Loading random data卡住,可以重新开启一个窗口执行cat /dev/sda > /dev/urandom命令,加快消耗CPU,增加随机数采集。
当Kerberos database创建好后,可以看到目录 /var/kerberos/krb5kdc 下生成了几个文件:
1.4、添加database administrator
1.5、为database administrator设置ACL权限,将文件/var/kerberos/krb5kdc/kadm5.acl的内容编辑为
1.6、启动Kerberos daemons
2、安装kerberos client端
2.1、配置/etc/krb5.conf,直接把kerberos端的krb5.conf文件复制过来即可。
3、kerberos基本操作命令
4、使用JAAS登录kerberos server
jaas.conf
参考资料:
【The Kerberos 5 GSS-API Mechanism】:https://docs.oracle.com/javase/9/security/kerberos-5-gss-api-mechanism.htm#JSSEC-GUID-23D30A4B-CC38-45ED-83D5-C59ABB72762E
【javax.security.auth.login.LoginException: Receive timed out】:https://stackoverflow.com/questions/44214324/java-io-ioexception-login-failure-for-myuserexample-com-from-keytab/44228073#44228073
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000; background-color: #ffffff }
span.s1 { }
1、安装kerberos服务server端
yum -y install krb5-libs krb5-server
1.1、配置/etc/krb5.conf
# Configuration snippets may be placed in this directory as well includedir /etc/krb5.conf.d/ [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] dns_lookup_realm = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true rdns = false default_realm = SNSPRJ.COM default_ccache_name = KEYRING:persistent:%{uid} # insert by xiaohb 20170824 start udp_preference_limit = 1 # insert by xiaohb 20170824 end [realms] # EXAMPLE.COM = { # kdc = kerberos.example.com # admin_server = kerberos.example.com # } SNSPRJ.COM = { kdc = kerberos.snsprj.com admin_server = kerberos.snsprj.com } [domain_realm] # .example.com = EXAMPLE.COM # example.com = EXAMPLE.COM .snsprj.com = SNSPRJ.COM snsprj.com = SNSPRJ.COM
udp_preference_limit = 1 禁止使用udp
1.2、配置/var/kerberos/krb5kdc/kdc.conf
[kdcdefaults] kdc_ports = 88 kdc_tcp_ports = 88 [realms] SNSPRJ.COM = { #master_key_type = aes256-cts acl_file = /var/kerberos/krb5kdc/kadm5.acl dict_file = /usr/share/dict/words admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal }
1.3、创建/初始化Kerberos database
/usr/sbin/kdb5_util create -s
若出现Loading random data卡住,可以重新开启一个窗口执行cat /dev/sda > /dev/urandom命令,加快消耗CPU,增加随机数采集。
当Kerberos database创建好后,可以看到目录 /var/kerberos/krb5kdc 下生成了几个文件:
-rw-------. 1 root root 21 Aug 24 11:34 kadm5.acl -rw-------. 1 root root 450 Aug 24 11:27 kdc.conf -rw-------. 1 root root 8192 Aug 24 11:35 principal -rw-------. 1 root root 8192 Aug 24 11:33 principal.kadm5 -rw-------. 1 root root 0 Aug 24 11:33 principal.kadm5.lock -rw-------. 1 root root 0 Aug 24 11:35 principal.ok
1.4、添加database administrator
/usr/sbin/kadmin.local -q "addprinc username/admin"
1.5、为database administrator设置ACL权限,将文件/var/kerberos/krb5kdc/kadm5.acl的内容编辑为
*/admin@SNSPRJ.COM *
1.6、启动Kerberos daemons
/bin/systemctl start krb5kdc.service /bin/systemctl start kadmin.service
2、安装kerberos client端
yum install krb5-workstation krb5-libs
2.1、配置/etc/krb5.conf,直接把kerberos端的krb5.conf文件复制过来即可。
3、kerberos基本操作命令
4、使用JAAS登录kerberos server
package com.snsprj.jaas0822; import javax.security.auth.*; import javax.security.auth.callback.*; import javax.security.auth.login.*; import com.sun.security.auth.callback.TextCallbackHandler; /** * This JaasAcn application attempts to authenticate a user * and reports whether or not the authentication was successful. * * Created by skh on 2017/8/22. */ public class JaasAcn { public static void main(String[] args) { String path = "/workspace/idea/ssm/src/test/java/com/snsprj/jaas0822/"; System.setProperty("java.security.auth.login.config", path + "jaas.conf"); System.setProperty("java.security.krb5.conf", path + "krb5.conf"); // System.setProperty("java.security.krb5.realm", "SNSPRJ.COM"); // System.setProperty("java.security.krb5.kdc", "kerberos.snsprj.com"); // sun.security.krb5.debug System.setProperty("sun.security.krb5.debug", "true"); // Obtain a LoginContext, needed for authentication. Tell it // to use the LoginModule implementation specified by the // entry named "JaasSample" in the JAAS login configuration // file and to also use the specified CallbackHandler. LoginContext lc = null; try { lc = new LoginContext("JaasSample", new TextCallbackHandler()); // attempt authentication try { lc.login(); } catch (LoginException le) { le.printStackTrace(); System.err.println("Authentication failed:"); System.err.println(" " + le.getMessage()); System.exit(-1); } } catch (LoginException le) { System.err.println("Cannot create LoginContext. " + le.getMessage()); } catch (SecurityException se) { System.err.println("Cannot create LoginContext. " + se.getMessage()); System.exit(-1); } System.out.println("Authentication succeeded!"); } }
jaas.conf
/** Login Configuration for the JaasAcn and ** JaasAzn Applications **/ JaasSample { com.sun.security.auth.module.Krb5LoginModule required debug=true refreshKrb5Config=true; };
krb5.conf copy from kerberos server.
参考资料:
【The Kerberos 5 GSS-API Mechanism】:https://docs.oracle.com/javase/9/security/kerberos-5-gss-api-mechanism.htm#JSSEC-GUID-23D30A4B-CC38-45ED-83D5-C59ABB72762E
【javax.security.auth.login.LoginException: Receive timed out】:https://stackoverflow.com/questions/44214324/java-io-ioexception-login-failure-for-myuserexample-com-from-keytab/44228073#44228073
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000; background-color: #ffffff }
span.s1 { }
相关文章推荐
- 使用JAAS登录kerberos服务器
- 使用 Java 认证和授权服务(JAAS)来定制应用程序登录
- SpringCloud(第 013 篇)电影微服务使用定制化 Feign 在客户端进行负载均衡调度并为 Feign 配置帐号密码登录认证 Eureka
- SecureCRT-转换密钥-Xshell-配置服务-使用xshell登录远程linux服务器
- Ubuntu中不能使用ssh远程登录的解决办法;ssh服务的安装与配置
- SpringCloud(第 013 篇)电影微服务使用定制化 Feign 在客户端进行负载均衡调度并为 Feign 配置帐号密码登录认证 Eureka
- 2008年3月小记(设置Windows服务的依赖关系,配置MSMQ的访问权限,WCF的安全配置,删除重建网站,HttpWebRequest,一年中的周,在WCF中使用HttpContext,String.Join)
- 开发安全应用程序(五)-- 使用 JAAS 进行开发以使用程序来进行登录
- 使用WebLogic Server9.2中的SAML配置单点登录
- asp.net2.0 登录控件使用(membership) 的环境配置及使用
- 怎样配置 WSS 以使用 Kerberos 身份验证(下)
- Linux下Telnet、ssh服务的配置和使用
- WCF系列(一) -- 完全不使用配置文件构建和使用WCF服务
- 怎样配置 WSS 以使用 Kerberos 身份验证(下)
- 2008年3月小记(设置Windows服务的依赖关系,配置MSMQ的访问权限,WCF的安全配置,删除重建网站,HttpWebRequest,一年中的周,在WCF中使用HttpContext,String.Join)
- 配置终端服务使用SSL
- Linux下Telnet、ssh服务的配置和使用
- AR系列路由器使用SSH用户验证方式为password登录路由器的典型配置
- 单点登录--使用带信任用户的TAI配置Access Manager