tohokuaikiのチラシの裏

技術的ネタとか。

ConfluenceでBasic認証を掛ける

ログイン認証あるからいらないじゃーんっていうかもしれないけど、とりあえずそんな要望がどこからともなく聞こえたので試してみた。

UserDatabaseRealmだとダメっぽい?

TOMCATで設定するBASIC認証の失敗する原因 - QA@IT
を参考に、UserDatabaseRealmを使おうと思ったけど、conf/server.xml のEngine配下に

<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
    debug="0"
    resourceName="UserDatabase"
/>

って書くと、Confluenceが起動しない。

そこで、MemoryRealm

MemoryRealmってデフォルトで使えるわけじゃないんですね。ここを参考にして
10. アクセス制限 (5) | TECHSCORE(テックスコア)

conf/server.xml
<Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="false">
    <Context path="" docBase="../confluence" debug="0" reloadable="false" useHttpOnly="true">
        <!-- Logger is deprecated in Tomcat 5.5. Logging configuration for Confluence is specified in confluence/W\
EB-INF/classes/log4j.properties -->
            <Manager pathname="" />
            <!-- Basic Auth -->
            <Realm className="org.apache.catalina.realm.MemoryRealm" pathname="conf/tomcat-users.xml"/>
            <!-- /Basic Auth -->
    </Context>
</Host>
confluence/WEB-INF/web.xml
    <!-- Basic Auth -->
    <security-constraint>
      <web-resource-collection>
        <web-resource-name>Test</web-resource-name>
        <url-pattern>/*</url-pattern>
        </web-resource-collection>
      <auth-constraint>
        <role-name>foo</role-name>
        </auth-constraint>
      </security-constraint>

    <login-config>
      <auth-method>BASIC</auth-method>
      <realm-name>Test Basic Auth</realm-name>
    </login-config>

    <security-role>
      <role-name>foo</role-name>
    </security-role>
</web-app>
conf/tomcat-users.xml
    <!-- Basic Auth  -->
    <role rolename="foo"/>
    <user username="foo" password="foo" roles="foo"/>
</tomcat-users>

って感じにして再起動。

だけど・・・・なぜ何度も・・・

Basic認証はかかるようになったのだけど、なぜか何度もID/PASSを聞かれる・・・。
何回か聞かれた分だけ入力すれば問題ないんだけど、これなんなんだろう・・・。