web.xml による認証の設定、管理者の指定
コード内で com.google.appengine.api.users.User オブジェクトを取得してみて、それが null 以外なら認証済み、null だったら認証されいない と判断する方法を Google Account による認証の説明ページで紹介しました。
この他、認証ユーザのみがアクセスできるページを web.xml (デプロイメント・ディスクリプタ) にて指定することが可能です。 ここでは web.xml での設定方法を説明します。
デプロイメント・ディスクリプタによる認証の設定
web.xml は war/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 の管理画面での管理者の設定