Google Appsと連動させてみる
この節は、独自ドメインでGoogle Appsを運用している方が対象となります。記事としては完全に独立していますので、興味のない方は読み飛ばして頂いて問題ありません。また読み進めるにあたって、独自ドメインで利用しているDNSの設定(CNAMEレコード)を変更できるスキルが必要です。
Google Appsと連動させることで、Google App Engineに2つの機能を追加できます。
- Google Apps(自分)でアカウントを管理する機能(この場合、Google Accountsのアカウントは認証できなくなります)
- 独自ドメインでGoogle App Engineを運用する機能
Google Appsと連動させて独自ドメインでサービスを運用する場合、利用する認証を「Google Appsで管理する方法」と、「Google Accountsで管理してもらう方法」の2種類があります。
Google AppsのアカウントをGoogle App Engineの認証に利用したい場合には、Google App Engineに登録しているアプリケーションの設定を変更する必要があります。
2009年4月19日 時点では、アプリケーション登録時に認証方法を設定できますが、途中から設定を変更する方法が用意されていません。そのため、Google Appsのアカウントを認証に利用したい場合、アプリケーションを新規に登録する必要があります。
Google Appsのアカウントで認証できるように設定する
Google App Engineの「My Applications」のページから、[Create an Application]をクリックします。

「アプリケーション名(サブドメイン名)」と「アプリケーション名」を入力し、下のほうにある[Edit]リンクをクリックします。

[Restricted to the following Google Apps domain]にチェックを入れます。入力ボックスにGoogle Appsのドメイン名を入力し、[Save]をクリックします。

「Application Registered Successfully」と表示されていれば、登録完了です。これで、Google App Engineの認証と、私の管理している「daisukeyamashita.com」ドメインで動いているGoogle Appsのアカウントが連動します。

今回の記事で作成した認証アプリケーションを今作成したアプリケーション領域にデプロイしてアクセスしてみましょう。[GAccountTestServlet]-[login]とクリックし、認証ページがGoogle Appsの認証ページになっていることを確認します。(私の場合、Usernameの入力ボックスの下に@daisukeyamashita.comと書かれており、@gmail.comのユーザはこのサービスにログインできないことが分かります)。
確認ができたら、Google Appsで管理しているアカウントでログインします。

Google Appsのアカウントでログインでき、認証ドメインを表す[domain]がdaisukeyamashita.comになっているが確認できます。

独自ドメインの設定をする
この設定には、DNSの設定(CNAMEレコード)を変更できるスキルが必要です。
独自ドメインは、「Google App Engine」と「Google Apps」のどちらからでも設定することが可能ですが、今回はGoogle App Engineから独自ドメインを設定する方法を勉強します。
Google App Engineから独自ドメインを設定する
Google App EngineのAdmin Consoleにアクセスし、独自ドメインで運用したいアプリケーション名をクリックし、左のメニューにある[Versions]をクリックします。独自ドメインを設定するために[Add Domain...]をクリックします。

[Domain Name]に自分が管理しているGoogle Appsのドメイン名を入力し、[Add Domain...]をクリックします。

Google Appsの管理者アカウントでログインします。

Google App Engineのアプリケーションを追加するか聞かれますので、利用規約を読み、同意できたら、[I accept. Continue to add this service.]にチェックを入れ[Activate this service]をクリックします。

これで、Google App EngineとGoogle Appsが連動しました。この時点では、まだappspot.comからしかアクセスできませんので、アプリケーションにサブドメインを割り当てる必要があります。[Add new URL]をクリックします。

好きなサブドメインを入力し、[Add]をクリックします。ここで入力するサブドメインが他のサービスで利用していないことに十分注意して下さい。

このページに記載されている通りに、DNSのCNAMEレコードを変更すると、先ほど入力したサブドメインでサービスにアクセスできるようになります(ここでは、「先ほど入力したサブドメイン」が「ghs.google.com」を参照するようにCNAMEレコードを変更するように指示されている)。
DNSの設定が完了したら、[I've completed these stemps]をクリックします。

先ほど指定したサブドメインを含むURLが記載されていることを確認したら、そのURLをクリックしてアプリケーションにアクセスしてみましょう。

DNSが正しく反映されるまで時間のかかる環境もあると思いますので、ページが見つからない場合は少し時間を置いてから確認してみましょう。
まとめ
今回は認証機能を勉強しましたが、いかがでしたでしょうか? 今回の記事で、Google App EngineのGoogle Accounts Java APIは簡単に利用できるにも関わらず、非常に強力であるということが分かっていただけたかと思います。
自分の作ったウェブサービスが、Google Accountsにアカウントを持っている、非常に多くのユーザに利用してもらえる可能性があると考えただけでもワクワクしてきませんか?
前回のImages Java APIと同じく、認証にGoogle Accounts Java APIを利用する必要はなく、Pure Javaで実装されたライブラリを利用することもできますので、興味のある方は、OpenIDなどに対応してみるのも面白いかもしれません。
