2008年12月6日土曜日

Tomcatで認証

「認証情報がなければ、FORMページへリダイレクト」といった
アプリケーションはしばしば見受けられますが、
Tomcat(他を知りませんが)はweb.xmlの編集で認証を
フォルダ、ファイル単位でかけることが可能になります。


それではPostgreSQLのテーブルを使って認証してみましょう。

データベース作成はPostgreSQLの項にありますので見てみてください。
Tomcat5だと./common/libに
JDBCドライバが存在する事が条件です。
Tomcat6では./libになります。

server.xml内にある200行目位です。

 <Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"
        driverName="org.postgresql.Driver" 
          connectionURL="jdbc:postgresql://サーバ名/データベース名?
          user=ユーザ&password=パスワード"
        userTable="users"
        userNameCol="user_name"
        userCredCol="user_pass"
        userRoleTable="user_roles"
        roleNameCol="role_name"/>

って感じで編集します。

その後、アプリケーションのweb.xmlにおいて以下を追加します。


  <security-constraint>
    <web-resource-collection>
      <web-resource-name>Volunteer Manager ID</web-resource-name>
      <url-pattern>/manage/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
      <role-name>admin</role-name>
      <role-name>design</role-name>
    </auth-constraint>
  </security-constraint>
  
  <login-config>
    <auth-method>DIGEST</auth-method>
    <realm-name>Volunteer Manager ID</realm-name>
  </login-config>

  <security-role>
    <role-name>admin</role-name>
    <role-name>design</role-name>
  </security-role>


これで指定したパスはセキュリティがかかります。

0 件のコメント: