2010-12-12 13 views
10

WARで認証にJAASを使用しようとしています。 configuration fileanother link)をどこかに配置する必要があることを理解しています(here)。残念ながら、私たちがWARについて話しているのならば、どこを正確に理解できないのですか?ファイルの名前を付ける方法は?WARにセキュリティ設定ファイルを配置する場所は?

// JAAS has to find the file and retrieve "foo" from it 
LoginContext ctx = new LoginContext("foo", this); 

答えて

2

は、残念ながら、私は仕事にそれを得ることができた唯一の方法は、ファイルjass.confを作成し、使用して指定することでした、次のいずれか

-Djava.security.auth.login.config==c:\\path\\To\\file.conf 
:TomcatのJavaパラメータで
  • またはJavaコード内から:

    System.setProperty("java.security.auth.login.config","c:\\path\\To\\file.conf"); 
    

設定を指定するより良い方法を知りたいと思います。私は自分のWARにその設定をパッケージ化したい。

+0

設定を指定するには、コードを使用することができます。おそらく、この 'java.security.auth.login.config'パラメータをWAR内の' .properties'ファイルのどこかに設定することができますか?あなたの場合、この設定はTomcatのすべてのアプリケーションでグローバルになります。 – yegor256

+0

あなたのWARファイルの中にある.confファイルを参照する方法を見つけましたか? – yathirigan

6

私は同じ問題を抱えていました。私は、現在のクラスパス(戦争そのものの中にある)に基づいてこのプロパティを動的に設定できないかどうかを見たいと思っていました。これはあるjava.security.auth.login.configのインスタンス化時にプロパティを設定されているん何

<listener> 
    <listener-class>example.SecurityListener</listener-class> 
</listener> 

public class SecurityListener implements ServletContextListener { 
    public SecurityListener() { 
    } 

    @Override 
    public void contextDestroyed(ServletContextEvent arg0) { 
    } 

    @Override 
    public void contextInitialized(ServletContextEvent arg0) { 
     if(System.getProperty("java.security.auth.login.config") == null) { 
      String jaasConfigFile = null; 
      URL jaasConfigURL = this.getClass().getClassLoader().getResource("login.conf"); 
      if(jaasConfigURL != null) { 
       jaasConfigFile = jaasConfigURL.getFile(); 
      } 
      System.setProperty("java.security.auth.login.config", jaasConfigFile); 
     } 
    } 
} 

はもちろん、あなたのweb.xmlにリスナーを追加する必要がありますWebアプリケーションがまだ定義されていない場合は、これは、あなたのソースフォルダにそれをスローし、他の場所で再定義されなければ自動的にロードすることができることを意味します。私はこれをテストしてTomcat 6で動作します。

たとえば、あなたのTomcatインストールが "C:\ program files \ tomcat6 \"にあって、 "C:\ program files \ tomcat6 \ webapps \ mywar "であれば、" C:¥program files¥tomcat6¥webapp¥mywar¥WEB-INF¥classes "となります。これは常に正確です。この解決策が他のWebアプリケーションともうまく機能するかどうかはわかりませんが、login.confはクラスパスのルートがどこにあるか分かりません。

希望に役立ちます!

+0

甘い解決策のようです – sehe

4

あなたは瓶にclient_jaas.confをカプセル化し、よく、それはオプションだ動的

System.setProperty("java.security.auth.login.config", XXX.class.getClassLoader().getResource("client_jaas.conf").toString()); 
関連する問題