我使用spring-security 3.0.2.RELEASE和spring-security-kerberos-core 1.0.0.M2来实现基于SPNEGO的身份验证。
服务器有多个有效的DNS名称。一个是指机器本身(machine.domain),另一个是指应用程序(app.domain)。目前没有设置反向代理。
我需要确保SPNEGO适用于两个有效的DNS名称。实际上,我将机器名称设置为SPN。如果我使用IE7连接到应用程序,它可以连接到计算机名称,但不能连接到应用程序名称(HTTP 401)。
我使用SunJaasKerberosTicketValidator来验证票证,但它只允许一次配置一个SPN。
如何配置我的应用程序以使用多个SPN?是否必须使用setspn将SPN添加到列表中?或者我是否需要设置多个票证验证器?
我的问题与此问题非常相似(没有答案): http://forum.spring.io/forum/spring-projects/security/122250-spring-security-3-kerberos-spn
非常感谢,
詹姆斯
答案 0 :(得分:1)
快速思考:
您可以为其域定义两个SunJaasKerberosTicketValidator
实例,然后实现您自己的KerberosTicketValidator
,它将根据HTTP请求委托给基础JAAS验证程序。
如果您使用RequestContextListener
:
HttpServletRequest request = (HttpServletRequest) ((ServletWebRequest)
RequestContextHolder.currentRequestAttributes()).getNativeRequest();
答案 1 :(得分:0)
Pavel是正确的,以防万一ClassCastException尝试:
import os
for count, filename in enumerate(os.listdir("someDir")):
dst = "name" + str(count) + ".png"
src = 'someDir' + filename
dst = 'someDir' + dst
# rename() function will rename all the files
os.rename(src, dst)