2011-03-15 13 views
0

Jaas、Java Authentication and Autorisationサービスを使用しようとしています。 サーバーがApp Engineなので、to edit web.xmlは不可能です。私は次のようにサーブレットフィルタを使用してい :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 */} 
} 

ログインコンテキストへの呼び出しは、ポリシーをチェックし、次の例外がスローされます。

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を指定すると無効にすることができます。 (しかし、これが解決に向かうために解決される)、Jaas設定ファイルはSystem.getProperty( "user.home")/。java.login.configで検索されます。むしろプロジェクトのリソースに入っていないのですか?これはローカル/プロダクションでどのように機能しますか?

設定ファイルは次のようである:

JaasSample { 
    com.sun.security.auth.module.Krb5LoginModule required; 
}; 

本当にありがとうございました。

ps。 Spring SecurityはJaasで使用でき、App Engineで動作します。 pps。 Spring Securityは、App Engineの起動を遅くするSpringコンテキストを開始するため、使用できません。そして、この環境でのスタートアップは常に行われています。

答えて

0

問題は、App Engine Devモードのみに存在します。一度配達されたそのような例外はありません。

したがって、実行構成で-D--enable_all_permissions=trueを使用するだけで十分です。

0

$ JAVA_HOME/binディレクトリのpolicytoolを使用して許可を与えます。

+0

私はそれがユーザーポリシーファイルでプロジェクトポリシーファイルではない理由を理解できません。どのように私のプロジェクトにこのポリシーを適用しますか? –

関連する問題