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 件のコメント:
コメントを投稿