好,半个月后,我终于可以得到它的工作!!!!
我会尽可能详细地发布整个过程,因为没有人会遭受我所遭受的。
在这个过程中,我使用的DOMIAN DEV-MITROL.LOCAL三台计算机:
域控制器: 主机名:AR-SRV-DC-007 用户:管理员 通:somePass40
Tomcat机器: ip:192.168.40.91(我在DC上创建了一个dns条目,将此IP解析为santi.dev-mitrol。网) 用户:tomcat的 通:tomcatPass40
客户机以发出请求到Tomcat机(它不会致使正常工作,如果你做,你正在运行的服务器在同一台机器的要求)
步骤:
1)已登录在DC与管理员用户Y创建此SPN:
setspn -A HTTP/santi.dev-mitrol.net tomcat
setspn -A HTTP/santi.dev-mitrol.net.dev-mitrol.local tomcat
2)在“管理工具> Active Directory用户和计算机”上找到用户“tomcat”,并在委派选项卡中选择“信任此用户委派任何服务(仅限Kerberos)”选项,并在“帐户”在“帐户选项”中选中“不需要Kerberos预制”。
3)创建密钥表白衣这个命令:
ktpass -princ HTTP/[email protected] -mapuser [email protected] -pass * -ptype KRB5_NT_PRINCIPAL -out test.keytab
taht你要在这里使用的密码是:tomcatPass40。
4)现在,时间与tomcat的用户登录并粘贴此路径上创建的密钥表:
C:\ Program Files文件\ Apache软件基金会\ Tomcat的8.5 \的conf \
除了对此,你有这样的文件夹中创建两个文件:
KRB5.ini
[libdefaults]
default_realm = DEV-MITROL.LOCAL
default_tkt_enctypes = rc4-hmac,aes256-cts-hmac-sha1-96,aes128-cts-hmac-sha1-96
default_tgs_enctypes = rc4-hmac,aes256-cts-hmac-sha1-96,aes128-cts-hmac-sha1-96
forwardable=true
[realms]
DEV-MITROL.LOCAL = {
kdc = AR-SRV-DC-007
}
[domain_realm]
dev-mitrol.local= DEV-MITROL.LOCAL
.dev-mitrol.local= DEV-MITROL.LOCAL
和的Jaas.conf
com.sun.security.jgss.krb5.initiate {
com.sun.security.auth.module.Krb5LoginModule required;
};
com.sun.security.jgss.krb5.accept {
com.sun.security.auth.module.Krb5LoginModule required
storeKey=true
useKeyTab=true
keyTab="file:///C:/Program Files/Apache Software Foundation/Tomcat 8.5/conf/test.keytab"
principal="HTTP/santi.dev-mitrol.net.dev-mitrol.local";
};
5)编辑web.xml文件是在同一个文件夹中,包括SPNEGO过滤器:
<filter>
<filter-name>SpnegoHttpFilter</filter-name>
<filter-class>net.sourceforge.spnego.SpnegoHttpFilter</filter-class>
<init-param>
<param-name>spnego.allow.basic</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>spnego.allow.localhost</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>spnego.allow.unsecure.basic</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>spnego.login.client.module</param-name>
<param-value>com.sun.security.jgss.krb5.initiate</param-value>
</init-param>
<init-param>
<param-name>spnego.krb5.conf</param-name>
<param-value>krb5.ini</param-value>
</init-param>
<init-param>
<param-name>spnego.login.conf</param-name>
<param-value>jaas.conf</param-value>
</init-param>
<init-param>
<param-name>spnego.login.server.module</param-name>
<param-value>com.sun.security.jgss.krb5.accept</param-value>
</init-param>
<init-param>
<param-name>spnego.prompt.ntlm</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>spnego.logger.level</param-name>
<param-value>1</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SpnegoHttpFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
6)在“C创建一个JSP文件:\ Program Files文件\ Apache软件基金会\ Tomcat的8.5 \的webapps \ ROOT”与此内容:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Hello SPNEGO Example</title>
</head>
<body>
Hello <%= request.getRemoteUser() %> !
</body>
</html>
7)如果你遵循这个步骤,它应该是工作,你会在你的要求来接收Windows用户的名称。
希望它有帮助。
向我们展示你已经尝试过的东西。 –
[Java当前计算机名称和登录用户?]可能重复(http://stackoverflow.com/questions/473446/java-current-machine-name-and-logged-in-user) –