Waffle Kerberos SSO - impersonate更改tomcat用户



我在使用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);

我想应用程序工作不改变用户,它应该tomcat用户创建,读取和追加文件(管理员)不是userA或userB。

我需要带有waffle的Kerberos SSO,但我不希望这种模拟以这种方式工作。还有别的办法让华夫饼好吃吗?或者我可以用其他方式保存文件?

好吧,我自己找到解决办法了。

使用impersonate从

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

使用impersonate,我读取正确的登录用户,但当我关闭impersonate时,我得到这里的tomcat用户(NT AUTHORITYSYSTEM)而不是登录用户。

现在我从

读取user
request.getUserPrincipal().getName();

与impersonate关闭,这对我工作

最新更新