Red Hat Training

A Red Hat training course is available for Red Hat Fuse

54.4. glogin

glogin コンポーネント

重要
GAE コンポーネントは非推奨となり、JBoss Fuse の今後のリリースで削除される予定です。
Apache Camel 2.3 (または最新の 開発スナップショット)で利用 できます。
glogin コンポーネントは、GAE アプリケーションにプログラムによるログインを行うために、Google App Engine (GAE)以外の Apache Camel アプリケーションによって使用されます。これは、54章GAE の一部です。セキュリティー対応の GAE アプリケーション は通常、ユーザーをログインページにリダイレクトします。認証用のユーザー名とパスワードを送信すると、ユーザーはアプリケーションにリダイレクトされます。これは、クライアントがブラウザーであるアプリケーションで適切に機能します。その他のすべてのアプリケーションでは、ログインプロセスをプログラムで行う必要があります。プログラムによるログインに 必要なすべての手順 は、glogin コンポーネントによって実装されます。これらは以下のとおりです。
  1. ClientLogin API 経由で Google アカウント から認証トークンを取得します。
  2. Google App Engine のログイン API から承認クッキーを取得します。
その後、承認クッキーは後続の HTTP リクエストを GAE アプリケーションに送信する必要があります。24 時間後に期限切れになり、更新する必要があります。

URI 形式

glogin://hostname[:port][?options]
ホスト は、GAE アプリケーションのインターネットホスト名(例: camelcloud.appspot.com)または 開発サーバー が実行されているホストの名前(例: localhost)です。この ポート は、開発サーバー( devMode=true の場合)に接続する場合にのみ使用され、オプションを参照してください。デフォルトは 8080 です。

オプション

名前 デフォルト値 必須 説明
clientName apache-camel-2.x false < organization>\-<appname>\-<version> の形式が推奨されるクライアント名 (必須ではありません)。
userName null true ( GLoginBinding.GLOGIN_USER_NAME メッセージヘッダーで設定できます) ログインユーザー名(メールアドレス)。
password null true ( GLoginBinding.GLOGIN_PASSWORD メッセージヘッダーで設定することもできます) ログインパスワード。
devMode false false true に設定すると、開発サーバーへのログインが試行されます。
devAdmin false false true に設定すると、admin ロールで開発サーバーへのログインが試行されます。

メッセージヘッダー

名前 タイプ メッセージ 説明
GLoginBinding.GLOGIN_HOST_NAME 文字列 in エンドポイント URI で定義されたホスト名を上書きします。
GLoginBinding.GLOGIN_USER_NAME 文字列 in userName オプションを上書きします。
GLoginBinding.GLOGIN_PASSWORD 文字列 in パスワード オプションを上書きします。
GLoginBinding.GLOGIN_TOKEN 文字列 out Google アカウント から取得した認証トークンが含まれます。開発サーバーにログインしても、このヘッダーは設定されません。
GLoginBinding.GLOGIN_COOKIE 文字列 out Google App Engine (または開発サーバー)から取得したアプリケーション固有の承認クッキーが含まれます。

メッセージボディー

glogin コンポーネントはメッセージの本文を読み書きしません。

使用方法

以下の JUnit テストは、開発サーバーと、http://camelcloud.appspot.com にあるデプロイされた GAE アプリケーションにログインする方法を示しています。
GLoginTest.java
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.ProducerTemplate;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import static org.apache.camel.component.gae.login.GLoginBinding.*;
import static org.junit.Assert.*;

public class GLoginTest {

    private ProducerTemplate template = ...

    @Test
    public void testDevLogin() {
        Exchange result = template.request("glogin://localhost:8888?userName=test@example.org&devMode=true", null);
        assertNotNull(result.getOut().getHeader(GLOGIN_COOKIE));
    }

    @Test
    public void testRemoteLogin() {
        Exchange result = template.request("glogin://camelcloud.appspot.com", new Processor() {
            public void process(Exchange exchange) throws Exception {
                exchange.getIn().setHeader(GLOGIN_USER_NAME, "replaceme@gmail.com");
                exchange.getIn().setHeader(GLOGIN_PASSWORD, "replaceme");
            }
        });
        assertNotNull(result.getOut().getHeader(GLOGIN_COOKIE));
    }

}
開発サーバーにログイン時の承認クッキーは次のようになります。
ahlogincookie=test@example.org:false:11223191102230730701;Path=/
デプロイされた GAE アプリケーションにログインした認証クッキーは、以下のように表示されます。
ACSID=AJKiYcE...XxhH9P_jR_V3; expires=Sun, 07-Feb-2010 15:14:51 GMT; path=/