我对Waffle和Kerberos有以下问题。
我有一个Java Servlet应用程序,它在Tomcat上工作,在Kerberos上有SSO,为此我使用了waffle。
要使SSO工作,我必须启用:
<init-param>
<param-name>impersonate</param-name>
<param-value>true</param-value>
</init-param>当我将impersonate设置为false时,SSO不起作用:(
一切似乎都很正常,用户可以使用SSO登录我的应用程序。
但是后来我发现impersonate更改了tomcat用户和应用程序,它们不是在管理权限下工作,而是以userA或userB身份工作。因此,当userA在我的系统中创建文件(报告、日志、配置文件)时,他是文件的所有者,然后当userB登录并尝试访问此文件时,我会收到访问被拒绝的异常。
我用以下代码创建文件:
File file = new File(fileName);
file.createNewFile();
file.setExecutable(true, false);
file.setReadable(true, false);
file.setWritable(true, false);我想要的应用程序工作而不改变用户,它应该是猫用户创建,读取和附加文件(管理员)而不是userA或userB。
我需要Kerberos SSO with waffle,但我不希望这个模拟以这种方式工作。有没有其他方法可以让华夫饼工作?或者我可以用其他方式保存文件?
发布于 2016-09-28 21:56:31
好吧,我自己找到了一个解决方案。
使用impersonate时,我正在读取来自
serverContext.getIdentity().getFqn();使用impersonate时,我读取了正确的登录用户,但是当我关闭impersonate时,我得到的是tomcat用户(NT AUTHORITY\SYSTEM),而不是登录的用户。
现在我正在读取user from
request.getUserPrincipal().getName();在关闭模拟的情况下,这对我有效。
https://stackoverflow.com/questions/39740848
复制相似问题