#chiroito ’s blog

Java を中心とした趣味の技術について

GAEのアクセス制限と認証方法

目的

作成したGoogle App Engineのアプリケーション全体にアクセス制限を掛ける。

環境

appengine-sdk 1.4.2インストール済み
GAE+JRuby+Ruby on Railsという環境で検証しました。

概要

 Google App Engineでのアクセス制限にはアクセス制限範囲の指定と認証方法の指定に分かれます。アクセス制限範囲は作成するアプリケーション側で指定し、認証方法は実行基盤であるGoogle App Engineで指定します。これにより認証方法に縛られないアプリケーションの構築が可能になります。

アクセス制限範囲の指定

 アクセス制限をかける範囲はアプリケーション側のweb.xmlで行います。アクセス制限を設定するのはこのファイルのsecurity-constraint要素です。詳細はweb.xmlとsecurity-constraintで検索して下さい(^^

私の環境(JRuby on Rails)では下記の様に設定されていました。
プロジェクト/WEB-INF/web.xml(一部抜粋)


/remote_api/*


admin




/contacts/*


*


これを下記の様にアプリケーション全体に変更します。


/*


*


アクセス制限範囲の設定はこれだけです。
後はappcfgにてupdateを行えばアプリケーション側は完了です。

認証方法の指定(アプリケーション作成時)

認証方法の指定はGoogle app engine側で行います。
Google app engine
認証方法の指定はアプリケーション作成時とアプリケーションの管理画面で指定できます。

アプリケーション作成時の認証方法の選択肢は下記の通りです。
Authentication Options (Advanced):
  • Open to all Google Accounts users (default)
  • Restricted to the following Google Apps domain
  • (Experimental) Open to all users with an OpenID Provider
 ここで注意したいのは[Restricted to the following Google Apps domain]を選ぶと後から他の2つに変更できない事です。その逆に他の2つから[Google Apps](変更後の場合の名称)に変更できません。

認証方法方法の指定(アプリケーション作成後)

 アプリケーション作成後は下記の通りに設定しますが、上に書いた通り変更可能なものには制限があります。アプリケーションを選択し、左側のメニューにある[Administration]-[Application Settings]から設定します。アプリケーション作成時に[Open to all Google Accounts users]、[Open to all users with an OpenID Provider]を選んだ場合は双方向に変更可能です。

Authentication Options:
  • Google Accounts API
  • (Experimental) Federated Login

 [Restricted to the following Google Apps domain]を選んでいる場合は変更する事が出来ません。

Authentication Options:
  • Google Apps

認証失敗時の画面

認証をGoogle Appsに設定していてGoogle Appsのメンバー以外がアクセスした場合

認証をGoogle Accounts APIに設定していてGoogleにログインしていない場合
モザイク部分はアプリケーションのタイトルです。