Cosminexus V9 BPM/ESB基盤 サービスプラットフォーム 解説
HTTPアダプタは,OAuth 2.0に対応したサービスへアクセスするために,OAuth 2.0で必要な情報が容易に設定できるインタフェースを提供します。
OAuth 2.0に対応した認証機能は,認可および認証の処理方式のうち,認証部分をHTTPアダプタで実現します。
図2-134 認可および認証の処理方式の例
HTTPアダプタから,OAuth 2.0が対応する認証フローを使用して,認証処理を実施します。このとき,認可サーバからアクセストークンを取得します。取得したアクセストークンを使用してWebサービスを呼び出します。
図2-135 OAuth 2.0に対応した認証例
HTTPアダプタが対応するOAuth 2.0の認証フローを次に示します。
JWT Bearer Token Flowは,JWT(JSON Web Token)を使用した電子署名付きの認証フローです。電子署名によって認証情報の改ざんをチェックできます。
図2-136 JWT Bearer Token Flowの流れ
Resource Owner Password Credentials Flowは,HTTPアダプタがリソースオーナーのユーザ名とパスワードを使用して,認可サーバにアクセストークンを要求する認証フローです。
図2-137 Resource Owner Password Credentials Flowの流れ
OAuth 2.0の認証フローを使用する場合のHTTPリクエスト・レスポンスと,要求・応答電文に設定する値について説明します。
アクセストークンを取得する場合は,HTTPリクエストボディで送信するデータ種別としてフォームデータ(ノーマルモード)を選択します。
図2-138 認証フローとしてJWT Bearer Token Flowを使用する場合のフォームデータ設定の概要
HTTPアダプタでは,OAuth 2.0の認証フローを使用して認可サーバから認証情報を受信する場合,JSON形式の応答だけをサポートしています。HTTPアダプタは,認証情報を受信したとき,HTTPレスポンスボディの情報を解析し,アクセストークンを応答電文(ヘッダ)に格納します。
また,レスポンスボディの内容は,ボディ応答電文へ割り当てられます。
図2-139 認証フローとしてJWT Bearer Token Flowを使用する場合のレスポンスの概要
OAuth 2.0が対応する認証フローを使用して,アクセストークンを取得する場合のHTTPアダプタの設定内容について説明します。
要求電文のボティにフォームデータとして,認証フローごとに対応する値を設定して,認可サーバにリクエストを送信します。共通の設定項目として,キー名称のgrant_typeに使用する認証フローに対応する固定の文字列を設定します。
認証フロー | ボディ要求電文フォーマット | |
---|---|---|
JWT Bearer Token Flow | assertionをHTTPアダプタで作成する場合 | adphttp_body_form-data_jwt_assertion1.xsd |
HTTPアダプタ以外の発行者が作成したassertionをHTTPアダプタで使用する場合 | adphttp_body_form-data_jwt_assertion2.xsd |
キー名称 | 設定値 |
---|---|
grant_type | urn:ietf:params:oauth:grant-type:jwt-bearer(固定文字列) |
assertion | 認証情報から作成したJWT bearer token |
<xsd:complexType name="http-body-form-data-type"> <xsd:sequence> <xsd:element name="grant_type" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="auth-info" type="tns:auth-info-type" minOccurs="1" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="claim-type"> <xsd:sequence> <xsd:element name="iss" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="aud" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="sub" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="exp" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="nbf" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="iat" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="jti" type="xsd:string" minOccurs="0" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="header-type"> <xsd:sequence> <xsd:element name="alg" type="xsd:string" minOccurs="1" maxOccurs="1"/> </xsd:sequence> </xsd:complexType>
<xsd:complexType name="http-body-form-data-type"> <xsd:sequence> <xsd:element name="grant_type" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="auth-info" type="tns:auth-info-type" minOccurs="1" maxOccurs="1"/> <xsd:element name="scope" type="xsd:string" minOccurs="0" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="claim-type"> <xsd:sequence> <xsd:element name="iss" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="aud" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="sub" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="exp" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="nbf" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="iat" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="jti" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="any" type="xsd:string" minOccurs="0" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="header-type"> <xsd:sequence> <xsd:element name="alg" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="typ" type="xsd:string" minOccurs="0" maxOccurs="1"/> </xsd:sequence> </xsd:complexType>
<xsd:complexType name="http-body-form-data-type"> <xsd:sequence> <xsd:element name="grant_type" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="assertion" type="xsd:string" minOccurs="1" maxOccurs="1"/> </xsd:sequence> </xsd:complexType>
<xsd:complexType name="http-body-form-data-type"> <xsd:sequence> <xsd:element name="grant_type" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="assertion" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="scope" type="xsd:string" minOccurs="0" maxOccurs="1"/> </xsd:sequence> </xsd:complexType>
認証フロー | ボディ要求電文フォーマット |
---|---|
Resource Owner Password Credentials Flow | adphttp_body_form-data_password.xsd |
キー名称 | 設定値 |
---|---|
grant_type | password(固定文字列) |
username | リソースオーナーのユーザ名 |
password | リソースオーナーのパスワード |
<xsd:complexType name="http-body-form-data-type"> <xsd:sequence> <xsd:element name="grant_type" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="username" type="xsd:string" minOccurs="1" maxOccurs="1"/> </xsd:sequence> </xsd:complexType>
<xsd:complexType name="http-body-form-data-type"> <xsd:sequence> <xsd:element name="grant_type" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="username" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="scope" type="xsd:string" minOccurs="0" maxOccurs="1"/> </xsd:sequence> </xsd:complexType>
認可サーバからレスポンス受信時に応答電文(ヘッダ)に,アクセストークンが格納されます。
詳細については,マニュアル「サービスプラットフォーム 開発ガイド 受付・アダプタ定義編」の「3.3.13 HTTPアダプタを定義する」の電文フォーマットの形式に関する説明を参照してください。
応答電文にはアクセストークンが格納されているため,ユーザ電文トレース出力時にアクセストークンが,ユーザ電文トレースに出力されます。ユーザ電文トレースにアクセストークンを出力したくない場合は,ユーザ電文トレースを取得しない設定にしてください。
HTTPアダプタ実行時にOAuth 2.0の認証フローを使用する場合,次に示すプロパティを設定します。
プロパティの詳細については,マニュアル「サービスプラットフォーム リファレンス」の「HTTPアダプタ定義ファイル」を参照してください。
キー名称 | 設定値 |
---|---|
adphttp.oauth.authentication | true |
csakeyaddコマンド,またはcsauseraddコマンドを事前に実行した場合,次の表のプロパティの設定値に,コマンド実行時の引数に指定したパスワード認証情報定義ファイル,または公開鍵認証情報定義ファイルのパスを設定してください。
HTTPアダプタ実行環境プロパティファイルから設定するプロパティを次に示します。
キー名称 | 設定値 |
---|---|
adphttp.config.password-auth-inf-filepath | パスワード認証情報定義ファイルのパス |
adphttp.config.publickey-auth-inf-filepath | 公開鍵認証情報定義ファイルのパス |
OAuth 2.0が対応する認証フローを使用する場合,認証情報をフォームデータとして送信するため,次の表のプロパティの設定値に「form-data」を設定してください。
HTTPアダプタ実行環境プロパティファイルから設定するプロパティを次に示します。
キー名称 | 設定値 |
---|---|
adphttp.request.part.message.binding | form-data |
各プロパティの詳細については,マニュアル「サービスプラットフォーム リファレンス」の「HTTPアダプタ実行環境プロパティファイル」を参照してください。
取得したアクセストークンを,Webサービスを呼び出すHTTPアダプタの要求電文(ヘッダ)のAuthorizationに設定してWebサービスを呼び出します。
要求電文(ヘッダ)から設定する場合の設定項目を次に示します。
キー名称 | 設定値 |
---|---|
/http-header-request/http-header-Authorization/@type属性 | raw |
/http-header-request/http-header-Authorization要素 | Bearer△アクセストークン |
要求電文(ヘッダ)で指定する場合の例を次に示します。
<http-header-request> <http-header-Authorization type="raw">Bearer eyJhbGciOiJSUz… </http-header-Authorization> </http-header-request>
Salesforceが提供するAPIへ接続することを想定した定義例について説明します。
定義例の前提条件を次に示します。
Salesforceの設定値の詳細については,Salesforceのドキュメントを参照してください。
ビジネスプロセスの設定例を次に示します。
図2-140 JWT Bearer Token Flowを使用してWebサービスを呼び出すビジネスプロセスの例
ここではOAuth 2.0の認証フロー(JWT Bearer Token Flow)を使用する上で,必要となる次の作業について説明します。
HTTPアダプタの基本的な定義の流れについては,マニュアル「サービスプラットフォーム 開発ガイド 受付・アダプタ定義編」の「3.3.13 HTTPアダプタを定義する」を参照してください。
それぞれの定義について説明します。
キー名称 | 設定値 |
---|---|
/http-header-request/method要素 | POST(固定文字列) |
/http-header-request/uri-scheme-authority要素 | https://login.salesforce.com(固定文字列) |
/http-header-request/uri-path要素 | /services/oauth2/token(固定文字列) |
キー名称 | 設定値 |
---|---|
/http-body-form-data/grant_type要素 | urn:ietf:params:oauth:grant-type:jwt-bearer(固定文字列) |
/http-body-form-data/auth-info/claim/iss要素 | Salesforceの接続アプリケーションから取得するコンシューマ鍵 |
/http-body-form-data/auth-info/claim/aud要素 | Salesforceのアカウント名(メールアドレス形式) |
/http-body-form-data/auth-info/claim/sub要素 | https://login.salesforce.com(固定文字列) |
/http-body-form-data/auth-info/claim/exp要素 | HTTPアダプタが作成するJWTの有効期限 JWTの有効期限を5分以内で設定する(1970-01-01T0:0:0Z からの秒数)。 |
/http-body-form-data/auth-info/header/alg要素 | JWTクレームセットの暗号化に使用するアルゴリズム |
/http-body-form-data/auth-info/secretkey要素 | csakeyaddコマンドで登録した秘密鍵の鍵ID |
/http-body-form-data/auth-info/signature要素 | Java暗号化アーキテクチャ標準アルゴリズム名(Signatureアルゴリズム) 電子署名に使用するSignatureオブジェクト作成に使用するアルゴリズムを設定する。 |
/http-body-form-data/auth-info/keytype要素 | Java暗号化アーキテクチャ標準アルゴリズム名(KeyFactoryアルゴリズム) 秘密鍵を変換するKeyFactoryオブジェクト作成に使用するアルゴリズムを設定する。 秘密鍵が対応するアルゴリズムを設定する。 |
ここではWebサービスを呼び出す上で,定義が必要となる作業について説明します。
HTTPアダプタの基本的な定義の流れについては,マニュアル「サービスプラットフォーム 開発ガイド 受付・アダプタ定義編」の「3.3.13 HTTPアダプタを定義する」を参照してください。
キー名称 | 設定値※ |
---|---|
/http-header-request/method要素 | GET |
/http-header-request/uri-scheme-authority要素 | https://APIコールの送信先となる組織のインスタンス.salesforce.com |
/http-header-request/uri-path要素 | /services/data/v43.0/ |
/http-header-request/http-header-Authorization要素 | Bearer△アクセストークン |
/http-header-request/http-header-Authorization/@type属性 | raw |
(凡例)△:半角スペース
注※
設定値は,リソースのリストを取得する場合の設定例を示しています。
All Rights Reserved. Copyright (C) 2012, 2019, Hitachi, Ltd.