2.16.11 ベーシック認証機能を使用した接続
HTTPアダプタでは,ベーシック認証を使用して対象のサーバに接続できます。
ベーシック認証機能を使用するには,WWW認証の認証タイプおよびユーザ名の設定と,認証情報の設定が必要です。
ベーシック認証以外のWWW認証の設定については,「2.16.15 WWW認証を使用したセキュアな接続」を参照してください。
(1) 認証タイプおよびユーザ名の設定
認証タイプおよびユーザ名は,要求電文(ヘッダ),またはHTTPアダプタ実行環境(共通)プロパティファイルで設定します。
(a) 要求電文の設定
要求電文(ヘッダ)に認証タイプおよびユーザ名を設定して,サーバにリクエストを送信します。
認証タイプおよびユーザ名で設定するリクエストヘッダを次に示します。
キー名称 |
設定値 |
---|---|
/http-header-request/http-header-Authorization/@type属性 |
basic |
/http-header-request/http-header-Authorization要素 |
HTTPアダプタアカウント定義ファイル※に登録したユーザ名を指定します。 |
- 注※
-
HTTPアダプタアカウント定義ファイルの詳細については,マニュアル「サービスプラットフォーム リファレンス」の「6.14.1 HTTPアダプタアカウント定義ファイル」を参照してください。
- 設定例
-
認証タイプおよびユーザ名を設定する場合の要求電文(ヘッダ)の設定例を次に示します。
<http-header-request> <http-header-Authorization type="basic">user1</http-header-Authorization> </http-header-request>
設定方法の詳細については,マニュアル「サービスプラットフォーム 開発ガイド 基本開発編」の「4. 電文フォーマットの作成」を参照してください。
(b) HTTPアダプタ実行環境(共通)プロパティファイルの設定
ベーシック認証での接続をHTTPアダプタ実行環境(共通)プロパティファイルに設定する場合,次に示すプロパティを設定します。
項目 |
キー名称 |
設定値 |
---|---|---|
WWW認証の認証タイプ |
adphttp.request.header.authorization.type |
basic |
WWW認証の認証情報 |
adphttp.request.header.authorization |
HTTPアダプタアカウント定義ファイル※に登録したユーザ名を指定します。 |
- 注※
-
HTTPアダプタアカウント定義ファイルの詳細については,マニュアル「サービスプラットフォーム リファレンス」の「6.14.1 HTTPアダプタアカウント定義ファイル」を参照してください。
プロパティの詳細については,マニュアル「サービスプラットフォーム リファレンス」の「6.14.2 HTTPアダプタ実行環境プロパティファイル」を参照してください。
(2) 認証情報の設定
HTTPアダプタのベーシック認証では,呼び出し先のサービスごとに認証情報を管理するため,ユーザ名,パスワードのほかに,接続先URIを認証情報として管理します。異なる接続先URIを設定することで,同一のユーザ名でも別のアカウント情報として管理することができます。
認証情報の設定には,次の作業が必要です。
-
HTTPアダプタアカウント定義ファイルの作成
アカウント情報を管理するコマンドにユーザ名,パスワード,および接続先URIを設定して,HTTPアダプタアカウント定義ファイルを作成します。
-
HTTPアダプタ実行環境(共通)プロパティファイルの設定
HTTPアダプタアカウント定義ファイルのパスを設定します。
(a) HTTPアダプタアカウント定義ファイルの作成
ベーシック認証の認証情報として使用するユーザ名,パスワード,および接続先URIは,作成したHTTPアダプタアカウント定義ファイルに設定します。
HTTPアダプタアカウント定義ファイルは,csahttpuseraddコマンドで作成します。csahttpuseraddコマンドの詳細については,マニュアル「サービスプラットフォーム リファレンス」の「csahttpuseradd(HTTPアダプタのベーシック認証で使用するアカウント情報の登録・更新)」を参照してください。
なお,HTTPアダプタアカウント定義ファイルの内容はコマンドで管理するため,編集はできません。
認証タイプがbasicの場合,ユーザ名と接続先URIをキーとしてHTTPアダプタアカウント定義ファイルからパスワードを取得し,認証情報を作成します。HTTPアダプタアカウント定義ファイルでは,認証情報が適切な接続先にだけ送信されるように,認証情報を送信する接続先のスキーム,ホスト名,ポート,パスを接続先URIとして定義します。接続先URIとのマッチングの詳細については,「(3) 接続先URIとのマッチングルール」を参照してください。
(b) HTTPアダプタ実行環境(共通)プロパティファイルの設定
HTTPアダプタアカウント定義ファイルを有効にするには,HTTPアダプタ実行環境(共通)プロパティファイルで,HTTPアダプタアカウント定義ファイルの絶対パスを指定する必要があります。
項目 |
キー名称 |
設定値 |
---|---|---|
HTTPアダプタアカウント定義ファイル※のパス |
adphttp.config.account-inf-filepath |
HTTPアダプタアカウント定義ファイルの保存先のパスを絶対パスで指定します。 |
- 注※
-
HTTPアダプタアカウント定義ファイルの詳細については,マニュアル「サービスプラットフォーム リファレンス」の「6.14.1 HTTPアダプタアカウント定義ファイル」を参照してください。
認証タイプがbasicで,adphttp.config.account-inf-filepathキーが設定されていない場合は,実行時にエラーとなります。
プロパティの詳細については,マニュアル「サービスプラットフォーム リファレンス」の「6.14.2 HTTPアダプタ実行環境プロパティファイル」を参照してください。
(3) 接続先URIとのマッチングルール
次のどれかに指定した接続先URI,およびHTTPアダプタから呼び出すサービスのURIは,設定値を正規化し,マッチングされます。
-
csahttpuseraddコマンドの-uriオプションに指定した接続先URI
-
csahttpuserdelコマンドの-uriオプションに指定した接続先URI
-
-userinfofileオプションのユーザ情報指定ファイルに指定した接続先URI
接続するHTTPアダプタから呼び出すサービスのURIに対して,もっとも長く前方一致したものを優先して採用します。
マッチングの手順と設定に応じたマッチングの例について説明します。
(a) マッチングの手順
次の設定値を指定したときのマッチングの手順を次に示します。
- 設定値
-
[scheme]://[user-info]@[host]:[port][path]?[query]#[fragment]
手順
-
URI.normalize()でURIを正規化します。
-
URI.getScheme()で[scheme]を取得し,String.toLowerCase()で小文字に統一します。
この値を[scheme']とします。
-
URI.getHost()で[host]を取得し,String.toLowerCase()で小文字に統一します。
この値を[host']とします。
スキームおよびホスト名は大文字小文字を区別しないため,すべて小文字に正規化した状態でマッチングされます。
-
URI.getPort()で[port]を取得します。
この値を[port']とします。
[port]が省略されている場合は[scheme]によって,次のデフォルトポートを代替値として使用します。
-
指定URIのポートが省略されていた場合
アダプタ内のスキームを見て適切なデフォルトポートを補完します(http→80,https→443)。
-
http,https以外のスキームが指定されている場合
ポートは補完しません。
-
-
URI.getPath()で[path]を取得します。
この値を[path']とします。
[path]が省略されている場合は「/」を補完します。
-
[scheme']://[host']:[port'][path']の形式で正規化したURIを生成してマッチングします。
なお,URLエンコードが必要な場合,使用できる文字コードはUTF-8だけです。
(b) マッチングの例
HTTPアダプタアカウント定義ファイルに設定した接続先URIと,マッチングしたURLの例について説明します。HTTPアダプタアカウント定義ファイルには,次の接続先URIを設定したものとします。
-
http://localhost:80/aaa/bbb/
-
http://localhost:80/aaa/bbb/ccc/
-
http://localhost:80/aaa/bbb/ccc
-
https://localhost:443/aaa/bbb/ccc
-
https://localhost:443/aaa/bbb/
-
接続先URIがhttp://localhost/aaa/bbb/ccc/の場合
http://localhost:80/aaa/bbb/ccc/のように,ポート番号を補完したURIで前方一致させます。
この場合,1.と2.と3.が合致しますが,2.が最も長く合致しているため2.のパスワードが採用されます。
-
接続先URIがhttps://localhost/aaa/bbb/cccの場合
https://localhost:443/aaa/bbb/cccのように,ポート番号を補完したURIで前方一致させます。
この場合,合致するものは4.だけのため,4.のパスワードが採用されます。
HTTPアダプタアカウント定義ファイルに,要求電文またはHTTPアダプタ実行環境(共通)プロパティファイルで指定されたユーザ名がない,または送信URIに対してscheme,host,port,およびpath部分がマッチしないなど,送信する認証情報が取得できなかった場合はエラーとなります。