web.xml による認証の設定、管理者の指定

コード内で com.google.appengine.api.users.User オブジェクトを取得してみて、それが null 以外なら認証済み、null だったら認証されいない と判断する方法を Google Account による認証の説明ページで紹介しました。

この他、認証ユーザのみがアクセスできるページを web.xml (デプロイメント・ディスクリプタ) にて指定することが可能です。 ここでは web.xml での設定方法を説明します。

デプロイメント・ディスクリプタによる認証の設定

web.xmlwar/WEB-INF にあります。この設定ファイルをデプロイメント・ディスクリプタといいます。

デプロイメント・ディスクリプタに、security-constraint 要素を記述することによって、認証が必要なページを指定することができます。

認証済みユーザー全員がアクセス可能

例えば、/auth ディレクトリ以下のページへのアクセスについて、認証さえしていれば誰でもアクセス可能である場合、次のように記載します。

<security-constraint>
  <web-resource-collection>
    <url-pattern>/auth/*</url-pattern>
  </web-resource-collection>
  <auth-constraint>
    <role-name>*</role-name>
  </auth-constraint>
</security-constraint>

url-pattern 要素で認証を必要とする URL のパターンを指定して、role-name 要素にて誰がアクセス可能であるか設定します。

* は「認証済みユーザなら誰でも可」ということを示しています。

管理者ユーザーのみアクセス可能

認証済みユーザーなら誰でも、という設定に対して 「管理者ユーザーのみアクセス可」という設定も可能です。 システムの管理画面など、そのアプリケーションの特定のページにアクセスできるユーザーを限定したい場合にこの機能は大変便利です。

その場合、role-name 要素にて admin という値を設定します。

<security-constraint>
  <web-resource-collection>
    <url-pattern>/auth/*</url-pattern>
  </web-resource-collection>
  <auth-constraint>
    <role-name>admin</role-name>
  </auth-constraint>
</security-constraint>

管理者ユーザは Google App Engine の管理画面で設定

では、そもそも「管理者ユーザー」とは誰のことでしょうか?

実は「管理者」というのは Google App Engine に設定画面があり、そこに登録されたユーザーのことです。

管理画面の Administration カテゴリの Permissions というところで管理者ユーザーを登録できます。

Google App Engine の管理画面での管理者の設定
Google App Engine の管理画面での管理者の設定