2016-09-28 58 views
2

我有以下Waffle和Kerberos问题。Waffle Kerberos SSO - impersonate更改tomcat用户

我有Java Servlet应用程序,它在Tomcat上工作,并在Kerberos上使用我使用华夫饼的SSO。

要使SSO工作,我不得不启用:

<init-param> 
     <param-name>impersonate</param-name> 
     <param-value>true</param-value> 
    </init-param> 

当我设置冒充假的SSO不工作:(

,一切似乎做工精细,用户可以登录到我的应用程序与我的系统(报告,日志,配置文件)中创建文件,他是我的系统(报告,日志,配置文件)创建文件时,他是我的系统(报告,日志,配置文件)文件的所有者d然后当userB登录并且正试图访问这个文件时,我得到了Access denied Exception。

创建文件,下面的代码:

File file = new File(fileName); 
file.createNewFile(); 
file.setExecutable(true, false); 
file.setReadable(true, false); 
file.setWritable(true, false); 

我想申请工作,不用改变用户的,它应该tomcat的用户创建,读取和附加文件(管理员)不是用户A或用户B。

我需要Kerberos SSO华夫饼干,但我不希望这种模仿作品以这种方式工作。 还有什么其他方式可以让华夫饼干起作用吗?或者,也许我可以用其他方式保存文件?

回答

0

好吧,我自己找到了解决方案。

随着冒充我读登录的用户从

serverContext.getIdentity().getFqn(); 

随着冒充我看有正确的登录用户,但是当我把冒充过我来到这里的Tomcat用户(NT AUTHORITY \ SYSTEM),而不是登录的用户。

现在我从

request.getUserPrincipal().getName(); 

读取用户用冒充关闭,这对我的作品。