jetty側の設定
まず認証レルムの設定ファイルを用意する。
用意すると言ってもデフォルトで$JETTY_HOME/etc/realm.propertiesが存在するのでこちらを利用する。
下記のフォーマットで記述する。
username: password[,rolename ...]暗号化する場合は種類に応じてOBF:、MD5:、CRYPT:のプレフィックスを付与する。
暗号化する場合は下記のようにして生成する。
$ java -cp lib/jetty-xxx.jar:lib/jetty-util-xxx.jar org.mortbay.jetty.security.Password ユーザー名 パスワードしかし、なぜか$JETTY_HOME/lib内にorg.mortbay.jetty.security.Passwordクラスが見つからなかったので
下記2つをダウンロードして生成する。
$ cd <workディレクトリ> $ wget http://www.java2s.com/Code/JarDownload/jetty-core-6.1.14.jar.zip $ wget http://www.java2s.com/Code/JarDownload/jetty-util-6.1.18.jar.zip $ unzip jetty-core-6.1.14.jar.zip $ unzip jetty-util-6.1.18.jar.zip $ java -cp jetty-core-6.1.14.jar:jetty-util-6.1.18.jar org.mortbay.jetty.security.Password jetty password password OBF:1v2j1uum1xtv1zej1zer1xtn1uvk1v1v MD5:5f4dcc3b5aa765d61d8327deb882cf99 CRYPT:je5/ATIGzeDQw
続いてjetty.xmlに認証レルムを使用する設定を追記する。
<Configure id="Server" class="org.eclipse.jetty.server.Server">
…
<Call name="addBean">
<Arg>
<New class="org.eclipse.jetty.security.HashLoginService">
<Set name="name">User Realm</Set>
<Set name="config">
<!-- 上記で用意した認証レルムの設定ファイルを指定 -->
<SystemProperty name="jetty.home" default="."/>/etc/realm.properties
</Set>
<Set name="refreshInterval">0</Set>
</New>
</Arg>
</Call>
…
</Configure>
Webアプリケーション毎に認証レルムを指定したい場合は下記のようにする。<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<Set name="contextPath">/jetty</Set>
<Set name="war"><SystemProperty name="jetty.home" default="."/>/webapps/jetty</Set>
…
<Get name="securityHandler">
<Set name="loginService">
<New class="org.eclipse.jetty.security.HashLoginService">
<Set name="name">User Realm</Set>
<Set name="config">
<SystemProperty name="jetty.home" default="."/>/etc/realm.properties
</Set>
</New>
</Set>
</Get>
…
</Configure>
Webアプリケーション側の設定
web.xmlにBASIC認証用の設定を追記する。
<web-app…
…
<security-constraint>
<web-resource-collection>
<web-resource-name>Authentication of BASIC</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>User Realm</realm-name>
</login-config>
<security-role>
<role-name>admin</role-name>
</security-role>
…
</web-app>
ちなみに$JETTY_HOME/etc/webdefault.xmlに記述すれば一律で設定可能。
0 件のコメント:
コメントを投稿