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
コンポーネントによって実装されます。これらは以下のとおりです。
- ClientLogin API 経由で Google アカウント から認証トークンを取得します。
- Google App Engine のログイン API から承認クッキーを取得します。
その後、承認クッキーは後続の HTTP リクエストを GAE アプリケーションに送信する必要があります。24 時間後に期限切れになり、更新する必要があります。
URI 形式
glogin://hostname[:port][?options]
オプション
名前 | デフォルト値 | 必須 | 説明 |
---|---|---|---|
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=/