2016-09-28 134 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(); 

讀取用戶用冒充關閉,這對我的作品。