Talend STSを使ったJWT検証によってルートをサービスプロバイダーとして作成
手順
-
[Palette] (パレット)からデザインワークスペースに、cBeanRegisterコンポーネントを、cRESTコンポーネント、cRecipientListコンポーネント、cDirectコンポーネント(5つ)、cSetBodyコンポーネント、cLogコンポーネントをドラッグ&ドロップします。
- ロールがさらに識別しやすくなるようコンポーネントにラベルを付け、上記のように[Row] (行) > [Route] (ルート)接続を使ってリンクします。
-
cBeanRegisterコンポーネントの[Basic settings] (基本設定)ビューで、Idフィールドに"customers"と入力します。[Customized] (カスタマイズ)オプションを選択し、[Code] (コード)ボックスに次のコードを入力します:
beans.Customers customers = new beans.Customers(); beans.Customer customer = new beans.Customer(); customer.setFirstName(TalendDataGenerator.getFirstName()); customer.setLastName(TalendDataGenerator.getLastName()); customer.setCity(TalendDataGenerator.getUsCity()); customers.addCustomer(customer); customer = new beans.Customer(); customer.setFirstName(TalendDataGenerator.getFirstName()); customer.setLastName(TalendDataGenerator.getLastName()); customer.setCity(TalendDataGenerator.getUsCity()); customers.addCustomer(customer); customer = new beans.Customer(); customer.setFirstName(TalendDataGenerator.getFirstName()); customer.setLastName(TalendDataGenerator.getLastName()); customer.setCity(TalendDataGenerator.getUsCity()); customers.addCustomer(customer); beanInstance = customers;
-
cRESTコンポーネントの[Basic settings] (基本設定)ビューで:
- [Endpoint] (エンドポイント)フィールドに"/services/customers"と入力します。
- [Type] (タイプ)リストから[Manual] (手動)を選択して、REST APIマッピングを手動で決定します。
- [REST API mapping] (REST APIマッピング)テーブルで[+]をクリックして、テーブルに行を追加します。[Output Flow] (出力フロー)フィールドに、名前としてgetAllCustomersと入力します。HTTP VerbリストからGETを選択します。他のカラムはデフォルト設定のままにします。
- 前のステップを繰り返し、上のスクリーンショットにあるように、getCustomer、addCustomer、updateCustomer、deleteCustomerという出力フローを、対応するHTTP動詞、URIパターン、コンシューマー、プロデューサー、Beanクラスと共に追加します。
- [Security] (セキュリティ)チェックボックスと[JWT Bearer Token] (JWT Bearerトークン)スキームをを選択します。
- [Keystore Type] (キーストアタイプ)リストで、Java Keystore (.jks)を選択します。
- [Keystore File] (キーストアファイル)フィールドに、"<TESB-HOME>/etc/keystores/stsstore.jks"を入力します。
- [Keystore Password] (キーストアパスワード)フィールドに、STSキーストアパスワードを入力します。
- [Keystore Alias] (キーストアエイリアス)フィールドに、STSキーストアエイリアスを入力します。
- [Audience] (オーディエンス)フィールドに、"http://127.0.0.1:8090/services/customers"と入力します。
-
cRESTコンポーネントの[Advanced settings] (詳細設定)ビューで、[JAXRS Properties] (JAXRSプロパティ)テーブルに "rs.security.signature.algorithm"プロパティと"rs.security.accept.public.key"プロパティを追加し、値をそれぞれ"RS256"と"true"にします。
-
cRecipientListコンポーネントの[Basic settings] (基本設定)ビューで、[Language] (言語)リストから[Simple] (シンプル)を選択し、[Expression] (式)フィールドに"direct:${header.operationName}"と入力します。
-
getAllCustomersというラベルが付いたcDirectコンポーネントの[Basic settings] (基本設定)ビューで、[Name] (名前)フィールドに"getAllCustomers"と入力します。
このステップを繰り返し、次のラベルでcDirectの各コンポーネントに名前を入力します。
- getCustomer: "getCustomer"
- addCustomer: "addCustomer"
- updateCustomer: "updateCustomer"
- deleteCustomer: "deleteCustomer"
-
getAllCustomersというラベルが付いたcSetBodyコンポーネントの[Basic settings] (基本設定)ビューで、[Language] (言語)リストから[Simple] (シンプル)を選択し、[Expression] (式)フィールドに"${ref:customers}"と入力します。
このステップを繰り返し、次のラベルでcSetBodyの各コンポーネントに単純式を入力します。
- getCustomer: "${bean:customers.getCustomer}"
- addCustomer: "${bean:customers.addCustomer}"
- updateCustomer: "${bean:customers.updateCustomer(${body[0]}, ${body[1]})}"
- deleteCustomer: "${bean:customers.deleteCustomer}"
-
cLogコンポーネントはデフォルト設定のままにしておきます。
-
Studioでルートを実行します。
RESTサービスは、JWT検証が有効な状態でhttp://localhost:8090/services/customers/で利用できるようになります。
-
PostmanからGETリクエストを送信します。
- [Auth Type] (認証タイプ)リストで、OAuth 2.0を選択します。
- [Add authorization data to] (認証データの追加先)リストで、[Request Headers] (リクエストヘッダー)を選択します。
- [Token] (トークン)フィールドに、http://localhost:8040/services/SecurityTokenService/token/jwtから取得したアクセストークンをコピーします。
RESTサービスからレスポンスが返ってきます。