Waffle Kerberos SSO - 模拟更改tomcat用户

时间:2016-09-28 07:32:05

标签: java tomcat save single-sign-on waffle

我遇到了Waffle和Kerberos的问题。

我有Java Servlet应用程序,它可以在Tomcat上运行,并且在我使用waffle的Kerberos上有SSO。

要使SSO工作,我必须启用:

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

当我将模拟设置为false时,SSO不起作用:(

一切似乎都运行正常,用户可以使用SSO登录我的应用程序。

但后来我发现冒充更改tomcat用户和应用程序不是在管理权限下工作,而是作为userA或userB。 因此,当userA在我的系统中创建文件(报告,日志,配置文件)时,他是文件的所有者,然后当用户B登录并尝试访问此文件时,我获得访问被拒绝异常。

我使用以下代码创建文件:

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

我希望在不更改用户的情况下进行应用程序工作,它应该是tomcat用户创建,读取和追加文件(Administrator)而不是userA或userB。

我需要带有华夫饼干的Kerberos SSO,但我不希望这种冒充方式如此。 还有其他方法让华夫饼干工作吗?或者也许我可以用其他任何方式保存文件?

1 个答案:

答案 0 :(得分:0)

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

通过模拟,我正在从

中读取登录用户
serverContext.getIdentity().getFqn();

通过模拟,我在那里读取了正确的登录用户,但是当我关闭模拟时,我来到这里tomcat用户(NT AUTHORITY \ SYSTEM)而不是登录用户。

现在我正在从

中读取用户
request.getUserPrincipal().getName();

关闭模仿,这对我有用。