我正在嘗試使用Jaas,Java身份驗證和Autorisation服務。 服務器是App Engine,因此不可能to edit web.xml。 我使用一個Servlet過濾器,如:Jaas需要Java策略我不知道如何提供它
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
try {
LoginContext lc = new LoginContext("JaasSample", new AuthenticationCallbackHandler());
lc.login();
chain.doFilter(request, response);
lc.logout();
} catch (LoginException e) { /* lc.login() fails */}
}
到LoginContext的調用檢查的策略,並拋出以下異常:
java.security.AccessControlException:
access denied (javax.security.auth.AuthPermission createLoginContext.JaasSample)
我正在使用的代碼是從Oracle reference。 他們解釋說,在安全管理的存在,有必要授予這種方式的一些權利:
grant {
permission javax.security.auth.AuthPermission "createLoginContext.JaasSample";
}
我只是不明白爲什麼這是在一個JAR進行。
我可以在運行配置中使用-D - enable_all_permissions = true來繞過此檢查。 (但是這樣做可以解決問題)然後,在System.getProperty(「user.home」)/。java.login.config中搜索Jaas配置文件。難道不是在項目資源?這在當地/生產中如何工作?
的配置文件是這樣的:
JaasSample {
com.sun.security.auth.module.Krb5LoginModule required;
};
非常感謝。
ps。 Spring Security可以與Jaas一起使用,並且可以在App Engine上運行。 pps。 Spring Security無法使用,因爲它會啓動減慢App Engine啓動的Spring上下文。而且這個環境中的創業始終都在進行。
我不明白爲什麼它是用戶策略文件而不是項目策略文件。我如何將這項政策應用於我的一個項目? –