标签: spring-security-kerberos

Kerberos - 使用HMAC无法找到适当类型的密钥来解密AP REP-RC4

我正在尝试使用Kerberos/SpNego为Java WebApp设置SSO.我正在使用:

  • Java 1.7u67
  • org.springframework.security.kerberos 1.0.0.RELEASE
  • 活动目录
  • Linux上的Tomcat 7

克服了如何在Tomcat/linux服务器上配置kerberos中描述的问题,我现在坚持以下错误:

org.springframework.security.authentication.BadCredentialsException: Kerberos validation not succesful
        at org.springframework.security.kerberos.authentication.sun.SunJaasKerberosTicketValidator.validateTicket(SunJaasKerberosTicketValidator.java:70) ~[spring-security-kerberos-core-1.0.0.RELEASE.jar:1.0.0.RELEASE]
        at org.springframework.security.kerberos.authentication.KerberosServiceAuthenticationProvider.authenticate(KerberosServiceAuthenticationProvider.java:64) ~[spring-security-kerberos-core-1.0.0.RELEASE.jar:1.0.0.RELEASE]
        at org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:156) ~[spring-security-core-3.2.7.RELEASE.jar:3.2.7.RELEASE]
        at org.springframework.security.kerberos.web.authentication.SpnegoAuthenticationProcessingFilter.doFilter(SpnegoAuthenticationProcessingFilter.java:145) ~[spring-security-kerberos-web-1.0.0.RELEASE.jar:1.0.0.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) [spring-security-web-3.2.7.RELEASE.jar:3.2.7.RELEASE]
        at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199) [spring-security-web-3.2.7.RELEASE.jar:3.2.7.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) [spring-security-web-3.2.7.RELEASE.jar:3.2.7.RELEASE]
        at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110) [spring-security-web-3.2.7.RELEASE.jar:3.2.7.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) [spring-security-web-3.2.7.RELEASE.jar:3.2.7.RELEASE]
        at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50) [spring-security-web-3.2.7.RELEASE.jar:3.2.7.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.1.6.RELEASE.jar:4.1.6.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) [spring-security-web-3.2.7.RELEASE.jar:3.2.7.RELEASE]
        at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) [spring-security-web-3.2.7.RELEASE.jar:3.2.7.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) [spring-security-web-3.2.7.RELEASE.jar:3.2.7.RELEASE]
        at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) [spring-security-web-3.2.7.RELEASE.jar:3.2.7.RELEASE]
        at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) [spring-security-web-3.2.7.RELEASE.jar:3.2.7.RELEASE]
        at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344) [spring-web-4.1.6.RELEASE.jar:4.1.6.RELEASE]
        at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261) [spring-web-4.1.6.RELEASE.jar:4.1.6.RELEASE]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [catalina.jar:7.0.55]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [catalina.jar:7.0.55]
        at …
Run Code Online (Sandbox Code Playgroud)

java kerberos spring-security-kerberos

13
推荐指数
2
解决办法
2万
查看次数

Kerberos错误:GSSHeader找不到正确的标记

我正在尝试将Kerberos身份验证连接到SOAP服务wsdl url.我能够成功建立连接并进行服务呼叫.启动服务器后,我能够至少进行一次成功的服务呼叫.但是在几次请求(1或更多)之后,我突然得到无效的令牌错误.一旦我收到错误,未来的呼叫就不起作用,错误仍然存​​在.

如果我重新启动服务器,那么服务调用至少会运行一次.以上循环继续.

我无法弄清楚为什么突然令牌失效,尽管它早先工作了.并重新启动服务器使令牌再次有效.

这是错误堆栈跟踪:

Caused by: GSSException: Defective token detected (Mechanism level: GSSHeader did not find the right tag)
        at sun.security.jgss.GSSHeader.<init>(GSSHeader.java:97)
        at sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:237)
        at sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:179)
Run Code Online (Sandbox Code Playgroud)

java soap kerberos jgss spring-security-kerberos

10
推荐指数
1
解决办法
5411
查看次数

GSSException:未提供有效凭据(机制级别:无法找到任何Kerberos tgt)

我是MOngoDB + Java配置的新手.我试图从远程mongodb服务器到Java应用程序的连接.我想使用GSSAPI机制来连接mongotemplate.下面的代码已成功执行.下面的代码来自我的配置文件.

List<ServerAddress> serverAddresses = new ArrayList<ServerAddress>();
    ServerAddress address = new ServerAddress(host, port);
    serverAddresses.add(address);
    List<MongoCredential> credentials = new ArrayList<MongoCredential>();

    MongoCredential credential = MongoCredential.createGSSAPICredential(userName);

    credential.withMechanismProperty("SERVICE_NAME", gssapiServiceName);
    credential.withMechanismProperty("CANONICALIZE_HOST_NAME", true);
    credentials.add(credential);

    return new MongoClient(serverAddresses, credentials);
Run Code Online (Sandbox Code Playgroud)

但是当我尝试执行下面的代码时,我会遇到异常

DB db = mongoTemplate.getDb();
Set<String> dbCollections1 = db.getCollectionNames();
Run Code Online (Sandbox Code Playgroud)

例外:

GSSException:没有提供有效凭据(机制级别:无法找到任何Kerberos tgt)sun.security.jgss.krb5.Krb5InitCredential.getInstance(Krb5InitCredential.java:147)sun.security.jgss.krb5.Krb5MechFactory.getCredentialElement(Krb5MechFactory) .java:122)sun.security.jgss.GSSManagerImpl.getCredentialElement(GSSManagerImpl.java:193)at sun.security.jgss.GSSCredentialImpl.add(GSSCredentialImpl.java:427)at sun.security.jgss.GSSCredentialImpl.(GSSCredentialImpl .java:62)在sun.security.jgss.GSSManagerImpl.createCredential(GSSManagerImpl.java:154)com.mongodb.DBPort $ GSSAPIAuthenticator.getGSSCredential(DBPort.java:622)com.mongodb.DBPort $ GSSAPIAuthenticator.createSaslClient( DBPort.java:593)com.mongodb.DBPort $ SaslAuthenticator.authenticate(DBPort.java:895)at com.mongodb.DBPort.authenticate(DBPort.java:432)at com.mongodb.DBPort.checkAuth(DBPort.java) :443)com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:289)at com.mongodb.DBTCPConnector.call(DBTCPConn)ector.java:269)com.mongodb.DBCollectionImpl.find(DBCollectionImpl.java:84)at com.mongodb.DB.command(DB.java:320)at com.mongodb.DB.command(DB.java:299) )com.mongodb.DB.command(DB.java:388)com.mongodb.DBApiLayer.getCollectionNames(DBApiLayer.java:152)

java spring spring-mvc mongodb spring-security-kerberos

9
推荐指数
2
解决办法
5万
查看次数

可选的 kerberos 身份验证?

是否可以进行可选的 kerberos 身份验证?

我想要的是:如果客户端(浏览器)不在域中,它被重定向到用户名/密码网络登录。否则它会做 SPNEGO 做 Kerberos 认证。

有什么解决办法吗?如果是,我们需要什么配置?

kerberos spring-security-kerberos

7
推荐指数
1
解决办法
2931
查看次数

Kerberos spring javax.security.auth.login.LoginException:无法从用户获取密码

我正在我现有的 java spring 应用程序中实现 kerberos 身份验证。我的 unix 团队为我提供了 SPN、krb5.conf 和 keytab 文件。我正在努力使用以下代码和配置,但无法从用户异常中获取密码,如下面的附加日志所示。

任何人都可以纠正我如果我做错了什么或者可能出了什么问题?如果您需要更多信息,请告诉我。如果有人能告诉,如何验证 kerberos 配置是否正确,那就太好了?
这是我尝试过的。我在用:

  • JDK 1.6
  • spring-security-kerberos-core-1.0.0.M2.jar
  • spring-security-core-3.0.1.RELEASE.jar
  • spring-security-config-3.0.1.RELEASE.jar
  • spring-security-web-3.0.1.RELEASE.jar

我的 security-config.xml 是:

<?xml version="1.0" encoding="UTF-8"?>
    <beans:beans xmlns="http://www.springframework.org/schema/security"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:util="http://www.springframework.org/schema/util"
           xmlns:beans="http://www.springframework.org/schema/beans"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/util
           http://www.springframework.org/schema/util/spring-util-3.0.xsd
           http://www.springframework.org/schema/security
           http://www.springframework.org/schema/security/spring-security-3.0.xsd">

<beans:bean class="com.ci.util.TrimmingPropertyPlaceholderConfigurer">
        <beans:property name="searchSystemEnvironment" value="true" />
        <beans:property name="locations">
            <beans:list>
                <beans:value>file:${install.home}/config/application.properties
                </beans:value>
                <beans:value>file:${install.home}/config/environment.properties
                </beans:value>
            </beans:list>
        </beans:property>
    </beans:bean>

    <http entry-point-ref="spnegoEntryPoint" auto-config="false">
        <intercept-url pattern="/selectBlacklisting*" access="IS_AUTHENTICATED_ANONYMOUSLY" />
        <intercept-url pattern="/j_spring_security_check*" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
     <intercept-url pattern="/**" access="IS_AUTHENTICATED_FULLY" />

     <custom-filter ref="spnegoAuthenticationProcessingFilter" position="BASIC_AUTH_FILTER" />
        <form-login login-page="/selectBlacklisting.form" default-target-url="/" always-use-default-target="true"/>
   </http>

   <authentication-manager alias="authenticationManager"> …
Run Code Online (Sandbox Code Playgroud)

java spring kerberos spring-security spring-security-kerberos

6
推荐指数
1
解决办法
4万
查看次数

具有null SrcName的GSSContext

我正在使用基于Windows域登录的SSO进行Web应用,为此我选择验证Kerberos票证.但是现在我遇到了一个我无法找到解决方案的问题.我设法验证一个没有例外的票证,但当我试图获取userName时,NullPointerException抛出,因为用户名是null,我不知道哪里有问题.

如果在验证期间没有出现任何异常,为什么用户名为null?

我如何获得userName: String clientName = gssContext.getSrcName().toString();

我基于此创建了我的客户端:

使用GSSManager验证Kerberos票证

如何通过GSS-API获取kerberos服务票?

http://docs.oracle.com/javase/7/docs/technotes/guides/security/jgss/single-signon.html

更新1:

我如何设置内容,只需复制粘贴表格/sf/answers/1781560371/:

final Oid spnegoOid = new Oid("1.3.6.1.5.5.2");

GSSManager gssmgr = GSSManager.getInstance();

// tell the GSSManager the Kerberos name of the service
GSSName serviceName = gssmgr.createName(this.servicePrincipal, GSSName.NT_USER_NAME);

// get the service's credentials. note that this run() method was called by Subject.doAs(),
// so the service's credentials (Service Principal Name and password) are already
// available in the Subject
GSSCredential serviceCredentials = gssmgr.createCredential(serviceName,
        GSSCredential.INDEFINITE_LIFETIME, …
Run Code Online (Sandbox Code Playgroud)

java kerberos jgss spring-security-kerberos

6
推荐指数
1
解决办法
3960
查看次数

Java Kerberos身份验证:使用spring security从ticket获取用户组

我需要实现Kerberos身份验证并获取经过身份验证的用户的AD用户组.我只能使用Kerberos协议,所以我无法使用LDAP查询到AD.
看起来,Kerberos身份验证可以使用Spring安全性来实现,但检索组并不是那么简单.
根据如何从kerberos票检索组成员资格?获取广告组使用Kerberos在Java中票,还有在Java中读取PAC领域没有原生支持.
更新:看起来http://jaaslounge.sourceforge.net/中有PACdecoder .是否有任何弹簧安全解决方案来获取角色或我应该使用外部类?

java authentication spring-security spring-security-kerberos

6
推荐指数
0
解决办法
925
查看次数

如何防止浏览器发送 NTLM 凭据?

我正在使用 Spring Security Kerberos 使用 Kerberos 身份验证的站点上工作。所以,我们不支持 NTLM。当用户发出未经身份验证的请求时,服务器将回复带有标题 WWW-Authenticate: Negotiate 的 HTTP 401。

问题:对于某些用户/配置,浏览器将发送 NTLM 凭据。服务器不一定在 Windows 上运行,因此它无法处理 NTLM 凭据。

据我了解,“协商”的意思是“如果可能,请向我发送 Kerberos,否则发送 NTLM”。是否有不同的设置说“只向我发送 Kerberos”?或者有什么方法可以告诉浏览器该站点仅支持 Kerberos?

作为后续,为什么浏览器没有 Kerberos 可用?在这种情况下,他们登录到同一个域。也许他们的凭据已过期?

ntlm kerberos spring-security-kerberos mit-kerberos

6
推荐指数
1
解决办法
4641
查看次数

测试Kerberos从浏览器登录到没有跨领域信任的领域

我们正在尝试使用Kerberos身份验证构建Spring Web应用程序.我们的开发机器是企业AD域的一部分.我们在VM中有一个本地KDC来测试kerberos,但是没有对AD的信任.除了来自AD的票证之外,网络身份管理器还能够从该域获取票证.

从浏览器进行测试时,似乎来自域登录的票证被发送到服务器,而不是测试域的票证,未知客户端主体失败并退回到NTLM.

运行tomcat服务器和测试KDC的主机将添加到受信任站点,并为受信任站点启用自动身份验证.将其添加到本地Intranet也没有什么区别.

是否可以从任何浏览器发送通过"网络身份管理器"而不是当前登录的AD用户票证获得的域的相应票证?

spring kerberos spring-security spring-security-kerberos

5
推荐指数
0
解决办法
242
查看次数

Spring Security Kerberos + AD,校验和失败

我正在尝试使用 Active Directory 凭据执行 Spring Security Kerberos,如http://docs.spring.io/spring-security-kerberos/docs/1.0.1.RELEASE/reference/htmlsingle/#samples-sec-服务器双赢身份验证。我想说我已经解决了大部分问题(SPN、keytabs 等)。现在我有一个校验和失败。假设我更改了我的主体名称,我会收到一个 AES 加密错误。

我在 RHEL 6 上使用 Spring Boot 和来自https://github.com/spring-projects/spring-security-kerberos/tree/master/spring-security-kerberos-samples/sec-server 的Oracle Java 1.8 + JCE 示例-win-auth

这是我运行 jar 时得到的结果


Debug 为 true storeKey true useTicketCache false useKeyTab true doNotPrompt true ticketCache is null isInitiator false KeyTab is /home/boss/webdev125-3.keytab refreshKrb5Config is false principal is http/webdev@EXAMPLE.ORG tryFirstPass is false useFirstPass is false storePass is false clearPass是假的

主体是 http/webdev@EXAMPLE.ORG 将使用 keytab Commit Succeeded

....

2015-11-25 11:29:09.631 DEBUG 5559 --- [nio-8080-exec-3] .a.KerberosServiceAuthenticationProvider …

java spring kerberos spring-security spring-security-kerberos

5
推荐指数
1
解决办法
1万
查看次数