Alfresco共享-Kerberos SSO问题

Alfresco共享-Kerberos SSO问题,alfresco,kerberos,alfresco-share,Alfresco,Kerberos,Alfresco Share,每10小时,我们的Kerberos票证就会过期(我们与Win2k8r2 AD连接),这使得用户无法登录。至少用户是这么说的 票过期是有道理的,但不知何故,Share似乎无法顺利检索到新的票,我相信它应该能够 我们的设置: Alfresco 4.0.d(社区)在Ubuntu 12.04上运行 JDK7(我们也尝试过JDK6) Windows 2008R2广告 Kerberos SSO Windows7客户端,IE9 户外的一切都很好。Alfresco Explorer和CIFS还可以,但只要共

每10小时,我们的Kerberos票证就会过期(我们与Win2k8r2 AD连接),这使得用户无法登录。至少用户是这么说的

票过期是有道理的,但不知何故,Share似乎无法顺利检索到新的票,我相信它应该能够

我们的设置:

  • Alfresco 4.0.d(社区)在Ubuntu 12.04上运行
  • JDK7(我们也尝试过JDK6)
  • Windows 2008R2广告
  • Kerberos SSO
  • Windows7客户端,IE9
户外的一切都很好。Alfresco Explorer和CIFS还可以,但只要共享运行了10个小时(AD中的默认票证生存时间),我们就无法登录。首先,我们将收到浏览器登录的提示,然后是windows登录,然后是共享登录表单。如果我重新加载页面并多次输入密码,它最终会让我进入,我们可以再运行10个小时。另一个解决方案是重新启动共享,这样用户就不会受到影响。这就指向了共享的问题,而不是客户的问题,但我可能错了

任何指点都是非常受欢迎的,我在这个问题上很纠结

我们得到这个例外:

13:55:18,443  DEBUG [site.servlet.SSOAuthenticationFilter] Kerberos logon error
    java.lang.IllegalStateException: This ticket is no longer valid
    at javax.security.auth.kerberos.KerberosTicket.toString(KerberosTicket.java:638)
    at java.lang.String.valueOf(String.java:2854)
    at java.lang.StringBuilder.append(StringBuilder.java:128)
    at sun.security.jgss.krb5.SubjectComber.findAux(SubjectComber.java:150)
    at sun.security.jgss.krb5.SubjectComber.find(SubjectComber.java:59)
    at sun.security.jgss.krb5.Krb5Util.getTicket(Krb5Util.java:155)
    at sun.security.jgss.krb5.Krb5Context$1.run(Krb5Context.java:606)
    at sun.security.jgss.krb5.Krb5Context$1.run(Krb5Context.java:599)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.security.jgss.krb5.Krb5Context.initSecContext(Krb5Context.java:598)
    at sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:248)
    at sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:179)
    at org.alfresco.web.site.servlet.KerberosSessionSetupPrivilegedAction.run(KerberosSessionSetupPrivilegedAction.java:127)
    at org.alfresco.web.site.servlet.KerberosSessionSetupPrivilegedAction.run(KerberosSessionSetupPrivilegedAction.java:44)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:356)
    at org.alfresco.web.site.servlet.SSOAuthenticationFilter.doKerberosLogon(SSOAuthenticationFilter.java:1009)
    at org.alfresco.web.site.servlet.SSOAuthenticationFilter.doFilter(SSOAuthenticationFilter.java:441)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1326)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:479)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:520)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:940)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:409)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:186)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:874)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:250)
    at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:149)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110)
    at org.eclipse.jetty.server.Server.handle(Server.java:349)
    at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:441)
    at org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:904)
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:565)
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:217)
    at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:46)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:545)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:43)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:598)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:533)
    at java.lang.Thread.run(Thread.java:722)
更多信息,java.login.config:

ShareHTTP {
   com.sun.security.auth.module.Krb5LoginModule required
   storeKey=true
   useKeyTab=true
   keyTab="/opt/share/kerberos/alfrescohttp.keytab"
   principal="HTTP/alfresco.domain.local@DOMAIN.LOCAL";
};
share-config-custom.xml:

<config evaluator="string-compare" condition="Kerberos" replace="true">
  <kerberos>
     <password>password</password>
     <realm>DOMAIN.LOCAL</realm>
     <endpoint-spn>HTTP/alfresco.domain.local@DOMAIN.LOCAL</endpoint-spn>
     <config-entry>ShareHTTP</config-entry>
  </kerberos>
</config>

密码
域本地
HTTP/alfresco.domain。local@DOMAIN.LOCAL
共享HTTP
我按照这里的说明进行了操作:一切都按照文档中的说明进行了设置


请让我知道我是否应该提供其他信息。

在您的广告用户管理器(高级)中选择ShareHTTP 选项卡:帐户 检查不需要Kerberos预身份验证


并遵循更新更为及时且更新更为频繁的。

ShareHTTP条目使用AlfrecoHttp用户(与AlfrecoHttp相同)。已为该用户设置了“不需要Kerberos preautentication”,并且还设置了委派(信任此用户委派给任何服务(仅限Kerberos))。在线文档似乎与wiki没有什么不同:(好的,然后在此处添加您的AD域日志。可能在此处记录了一个问题,原因是它没有请求新的票证。您已将您的域添加到浏览器中的受信任网络/URI中,对吗?我已尝试将其添加到受信任的站点,并将其删除并读取为intranet站点。我还尝试了“使用用户名和密码自动登录”选项,同样的结果。我必须承认我对windows有点新手。你能给我一个快速的步骤来为你提供相关的广告日志吗?我试着导出事件查看器->windows日志->安全性。今天遇到异常时,我花了大约两分钟的时间(共享日志显示16:01:03181,所以我记录了16:00到16:02之间的所有事件)。如果您需要更多信息,请告诉我您是否在广告配置中添加了多个servicePrincipalName名称?您应该添加AlfrecoHttp/(用于键表生成)和AlfrecoHttp/。域