Google アカウントを利用したユーザー認証

Google アカウントを利用したユーザー認証

Google App Engine では Google アカウントを利用したユーザー認証を利用できます。

Google Accounts の画面
Google Accounts

Gmail にログインして Google のサービスを利用している人は、Google の他のサービス (例えば Google Analytics、AdSense 等) にも透過的にサインインできます。 これと同じように、あなたのアプリケーションにもサインインすることができるように構成することが可能です。

Google のアカウントさえあればあなたのサービスも利用できるわけですから、あなたのサービスを利用する障壁は小さくなることが期待できます。 ユーザーがサービスのアカウントを作るというときは、ある程度個人情報の入力が必要になるわけですから、やはり、新しくて知られていないサービスへのアカウントを作るときはちょっとためらいますよね。

管理ユーザーの指定も簡単

それから、「このページは Google アカウントにサインインしており、かつ、管理者ユーザーでないとみることができません」 という設定をすることもできますので、 裏側の管理画面のアクセス等、一般ユーザーには触ってほしくないページへのアクセスを制限することもできます

管理者ユーザーの指定は、Google App Engine の管理画面で簡単に指定可能です。

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

Google App Engine のアプリケーションで利用可能なデフォルトの認証方法は、Google アカウントによる認証です。

後から OpenID による認証に変更する場合は、Google App Engine の管理画面から設定できます。

認証方法の設定
Google App Engine の認証方法の設定

ということで、つまり、デフォルトのままアプリケーション ID を取得していれば、Google アカウントを利用する設定になっています。

なお、同じ設定画面で認証クッキーの有効期限を設定することができ、現在は 1日、1週間、2週間の三種類が選択できます。

テストシナリオ

ではさっそく、認証できるか試してみましょう。

以下のようなコードを authreq.jsp として、war 直下に配置します。(ちなみに HTML のタグ等は取り払ってありますので、適当に補ってください)

<%page 
import="com.google.appengine.api.users.*" 
pageEncoding="utf-8"
contentType="text/html;charset=utf-8"
%>
<%
UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrentUser();
String msg;

ifuser != null ){

  msg = "ようこそ! あなたは <b>" + user.getNickname() "</b> という名前でログインしています。"
    " <a href='" + userService.createLogoutURL("/""'>サインアウト</a>";
  
}
else {

  msg = "こんにちは! こちらから "
    "<a href='" + userService.createLoginURL("/auth/""'>サインイン</a> してください!";
}

System.out.printlnmsg );
%>
<p class="round"><%= msg %></p>

このコードでは、ユーザーが認証されていれば 「ようこそ」 というメッセージと認識している表示名 (ニックネーム) を表示します。 認証されていない場合はサインインを促すリンクを表示します。

実際に動かすと次のようになります。

ページへアクセスすると、まだサインインしていないのでサインインを促すメッセージが表示されます。

Google アカウントによる認証

ここで、サインインページの URL は createLogoutURL メソッドを用いて取得しています。 また、このメソッドのパラメータとして、サインインしたあとの戻りページの URL を指定しています。

サインインのリンクをクリックすると、次のように Google Account のサインインページが表示されます。

Google アカウントによる認証

Google Account でサインインすると、元のページへ戻ってきて、ユーザーが認識していることをしめします。

Google アカウントによる認証

以上、確かに Google アカウントでサインインしたユーザーの情報を取得することができました。

ちなみに、当サイトのテスト用サイトから、認証のようすを確認できます

それでは、この User 情報としてどのような情報が取得可能か確認しましょう »