1. WAMプラグインモジュール
HTTPサーバー上で動作し、サイトコンテンツへのアクセスをフックして閲覧制御を行うモジュールです。WAMモジュールとHTTP連携し、未ログインユーザーのログイン画面へのリダイレクト、閲覧権限に応じたコンテンツアクセス制御などを行います。
Apache HTTP Server
、IIS
、JavaEE Server
、 Serverless(JavaScript)
で動作するプラグインモジュールを標準で提供します。
1.1. 処理フロー
WAMプラグインモジュールは、サイトコンテンツへのアクセスをフックし、WAMモジュールとHTTP連携して認証・認可の処理を行います。
以下に Apache
のWAMプラグインモジュール実装における、認証・認可処理の流れとエラー時のステータスコードを示します。Apache
以外の実装も概ね同様のフローで処理が行われます。
認証・認可処理の流れ

-
ユーザーが管理対象サイトのコンテンツにアクセスします。
-
Apacheがコンテンツ生成処理を実行する前に、WAMプラグインモジュールの認証・認可ロジックをフックします。
-
サイトコンテンツ閲覧時のアクセスURLが、設定上、参照制限をかけるパスとして設定されている場合、WAMモジュールに閲覧権限の有無を問い合わせます (WAMモジュールの許可APIへリクエスト)。
-
閲覧権限チェックの問い合わせ結果を返却します。認証済みの場合には、ユーザー情報も併せて返却されます(ユーザー情報の返却有無や返却される情報は、WAMプラグインモジュールの設定に依存します)。
-
認証済みかつ、ユーザー情報が返却された場合、元のHTTPリクエストヘッダにユーザー情報を付加します。
-
閲覧権限チェックの問い合わせ結果に応じて、以下の画面遷移を行います。
-
未認証の場合 : ログインページへリダイレクト
-
認証済みの場合 : 元のリクエストに対するコンテンツを応答
-
認証済みで権限がない場合 : 権限エラーページへリダイレクト
-
その他 : エラーとして、状況に応じたステータスコードをApacheコアモジュールに渡します。通常のコンテンツ処理や後続のApacheモジュール(PHP等)の処理は実行されません。
Figure 2. ログイン画面~コンテンツへのアクセスまで
-
-
ユーザーがログイン画面でID、パスワードを入力します。
-
ログインに成功すると、管理対象サイトのWAMモジュール用URLパス(
manageSite > authCallbackUrl
)へリダイレクトされます。 -
WAMモジュールにアクセストークン( = iPLAss上のセッションID)の払出しをリクエストします(WAMモジュールのトークンAPIへリクエスト)。⑧のリダイレクト時にクエリパラメータにセットされた認可コード、WAMプラグインモジュールに設定した管理対象サイトのサイトID、サイトシークレットがパラメータとしてWAMモジュールに送信されます。
-
WAMモジュールからWAMプラグインモジュールにアクセストークン( = iPLAss上のセッションID)が返却されます。このアクセストークンが管理対象サイト側ドメインのCookieへと格納され、以降、WAMモジュールへの閲覧権限チェックリクエスト時にCookieとして送信するセッションIDとして使用されます。
-
元のコンテンツURLへリダイレクトします。 再度②~⑤の処理が発生しますが、アクセストークン( = iPLAss上のセッションID)がCookieとして送信され、認証済みセッションとして扱われます。
エラー時ステータスコード
WAMモジュールの許可API(permission)、トークンAPI(token)の返却結果によっては、WAMモジュールからApacheにエラーのステータスコードを指示します。
その結果、コンテンツ処理が中断されてエラーページが表示されます。以下、ステータスコード及び想定される状況です。
上記番号 | ステータスコード | 状況 |
---|---|---|
⑥ |
400 |
WAMプラグインモジュールからWAMモジュールの許可APIへ不正な形式でリクエストしています。 |
503 |
WAMモジュールの許可APIから正常な応答を得られていません。iPLAssサーバーやDB、ネットワークの障害等が考えられます。 |
|
⑪ |
403 |
CSRFトークンのチェックに失敗しています。Cookieに異常がないか、サーバーのスティッキーセッションが機能しているか確認してください。 |
503 |
WAMモジュールのトークンAPIから正常な応答を得られていません。iPLAssサーバーやDB、ネットワークの障害等が考えられます。 |
1.2. WAMプラグインモジュールの設定
WAMプラグインモジュールの設定項目の説明です。WAMプラグインモジュールの設定可能項目/設定方法は各実装によって異なります。
Apache版の場合、各設定項目名はパスカル記法となっており、prefixに Iplass が必要です。
|
項目 | 説明 | デフォルト値 | 要変更 | Apache | IIS | JavaEE | Serverless | ||
---|---|---|---|---|---|---|---|---|---|
wamBaseUrl |
WAMモジュールが稼働するiPLAssサーバー側のURLを指定します。WAMプラグインモジュールとWAMモジュール間でHTTP通信する際に使用されます。 形式は以下の通りです。 |
- |
○ |
○ |
○ |
○ |
○ |
||
wamRedirectUrl |
ブラウザからWAMモジュールにリダイレクトする際のベースURLを指定します。 形式は以下の通りです。 |
|
- |
○ |
○ |
○ |
○ |
||
wamCookieName |
iPLAssサーバー上でセッションIDとして使用されるCookie名を指定します。 |
JSESSIONID |
- |
○ |
○ |
○ |
○ |
||
wamCookieDomain |
iPLAssサーバー上でセッションIDとして使用されるCookieのドメインを指定します。 |
- |
○ |
○ |
- |
○ |
- |
||
wamCookiePath |
iPLAssサーバー上でセッションIDとして使用されるCookieが有効なパスを指定します。 |
/ |
- |
○ |
○ |
○ |
- |
||
wamAuthCallbackPath |
WAM機能の認証フローにおいて、ログイン完了後にWAMモジュールから管理対象サイトへリダイレクトする際に使用されるURLです。 当該URLは、サイトコンテンツのURLに該当しない任意のURLを設定してください。 形式は以下の通りです。 |
- |
○ |
○ |
○ |
○ |
○ |
||
siteId |
管理対象サイトを識別するための一意なIDを指定します。 |
- |
○ |
○ |
○ |
○ |
○ |
||
siteSecret |
管理対象サイトのシークレットキーを指定します。 |
- |
○ |
○ |
○ |
○ |
○ |
||
siteCookieName |
アクセストークン( = iPLAss上のセッションID)を管理対象サイト側のドメインにCookieとして発行する際のCookie名を指定します。 |
ipw |
- |
○ |
○ |
○ |
○ |
||
siteCookieDomain |
アクセストークン( = iPLAss上のセッションID)を管理対象サイト側のドメインにCookieとして発行する際のCookieのDomain属性を指定します。 |
- |
○ |
○ |
○ |
○ |
○ |
||
siteCookiePath |
アクセストークン( = iPLAss上のセッションID)を管理対象サイト側のドメインにCookieとして発行する際のCookieの有効パスを指定します。 指定する場合は以下の項目で指定したURLのパターンを包含するようにしてください。
|
- |
- |
○ |
○ |
○ |
○ |
||
siteCookieSameSite |
アクセストークン( = iPLAss上のセッションID)を管理対象サイト側のドメインにCookieとして発行する際のCookieのSameSite属性を指定します。 |
- |
- |
- |
- |
- |
○ |
||
siteScheme |
管理対象サイトのURLスキームを指定します。 |
https |
- |
○ |
○ |
○ |
○ |
||
charset |
WAMモジュール側でのコンテンツ閲覧権限チェック時のパラメータのエンコードやJSONレスポンスのエンコードに使用されます。 |
utf-8 |
- |
○ |
○ |
○ |
○ |
||
csrfTokenCookieName |
一連の認証処理時のCSRF対策用トークンを管理対象サイト側のドメインにCookieとして発行する際のCookie名を指定します。 |
_csrft |
- |
○ |
○ |
○ |
○ |
||
protectedPathPattern |
管理対象サイトのコンテンツについて、閲覧制限をかけるURLのパスパターンを正規表現で指定します。
|
- |
○ |
○ |
○ |
○ |
- |
||
protectedPattern |
管理対象サイトのコンテンツについて、閲覧制限をかけるパターンを Serverless版での設定例
protectedPattern: [ { domain: "mysite.example.com", pathPattern: /^\/contents\/.*$/ }, ], |
- |
○ |
- |
- |
- |
○ |
||
httpComponentProvider |
HTTP通信実装クラスを指定します。 |
各実装の標準HttpComponentProvider |
- |
○ |
○ |
○ |
- |
||
wamVerboseLog |
ログの冗長化を設定する際に利用します。 |
false(Off) |
- |
○ |
○ |
- |
- |
||
mapUserAttribute |
許可APIでコンテンツ閲覧が許可された場合、その後のコンテンツへのリクエスト時のHTTPリクエストヘッダーにユーザー情報をセットする機能を有効化するかを指定します。 |
false(Off) |
- |
○ |
○ |
○ |
○ |
||
attributeMap |
許可APIでコンテンツ閲覧が許可された場合、その後のコンテンツへのリクエスト時のHTTPリクエストヘッダーにユーザー情報をセットする場合に利用します。 リクエストヘッダー名と値として設定する Apache版での設定例
IplassAttributeMap x-wam-user-id accountId |
- |
- |
○ |
○ |
○ |
○ |
||
allowedIp |
WAMの認証・認可処理をスキップできる接続元のIPアドレスを指定します。 |
- |
- |
○ |
○ |
○ |
○ |
||
allowedIpHeaderName |
許可対象のIPアドレスが含まれるかどうかチェックするリクエストヘッダー名を指定します。 |
X-Forwarded-For |
- |
○ |
○ |
○ |
○ |
||
allowedIpHeaderFieldIndex |
|
0 (0で最終要素を指します) |
- |
○ |
○ |
○ |
○ |
||
loadBalancerCookieName |
WAMモジュールが稼働するiPLAssサーバーが冗長化されており、ロードバランサーのスティッキーセッション機能が有効化されている場合に、スティッキーセッション機能で用いられるCookie名を指定します。 |
- |
- |
○ |
○ |
○ |
○ |
||
siteLoadBalancerCookieName |
WAMモジュールが稼働するiPLAssサーバーが冗長化されており、ロードバランサーのスティッキーセッション機能が有効化されている場合に、スティッキーセッション機能で用いられるCookieを管理対象サイト側のドメインのCookieとして格納する際のCookie名を指定します。 例えば、当該項目を |
- |
- |
○ |
○ |
○ |
○ |
||
siteLoadBalancerCookieDomain |
ロードバランサーのスティッキーセッション機能が有効化されている場合に、スティッキーセッション機能で用いられるCookieを管理対象サイト側のドメインのCookieとして格納する際のDomain属性を指定します。 |
- |
- |
- |
- |
- |
○ |
||
siteLoadBalancerCookiePath |
ロードバランサーのスティッキーセッション機能が有効化されている場合に、スティッキーセッション機能で用いられるCookieを管理対象サイト側のドメインのCookieとして格納する際の有効パスを指定します。 |
/ |
- |
- |
- |
- |
○ |
||
siteLoadBalancerCookieDomain |
ロードバランサーのスティッキーセッション機能が有効化されている場合に、スティッキーセッション機能で用いられるCookieを管理対象サイト側のドメインのCookieとして格納する際のSameSite属性を指定します。 |
- |
- |
- |
- |
- |
○ |
||
addScriptTagPathPattern |
WAMの機能により、HTTPレスポンスボディの末尾にscriptタグを追加することができます。 |
- |
○ |
○ |
○ |
○ |
- |
||
javaScriptPath |
|
- |
○ |
○ |
○ |
○ |
- |
||
javaScriptSrc |
|
- |
○ |
○ |
○ |
○ |
- |
||
connectionTimeout |
WAMプラグインモジュールからWAMモジュールへの通信時(HTTP/HTTPS)のコネクションタイムアウト時間を設定します。 |
- |
- |
○ |
○ |
○ |
- |
||
soTimeout |
WAMプラグインモジュールからWAMモジュールへの通信時(HTTP/HTTPS)のソケットタイムアウト時間を設定します。 |
- |
- |
○ |
○ |
○ |
○ |
||
proxyHost |
WAMプラグインモジュールからWAMモジュールへの通信時(HTTP/HTTPS)に利用するプロキシサーバのホスト名を指定します。 |
- |
- |
○ |
○ |
○ |
- |
||
proxyPort |
WAMプラグインモジュールからWAMモジュールへの通信時(HTTP/HTTPS)に利用するプロキシサーバのポート番号を指定します。 |
- |
- |
○ |
○ |
○ |
- |
||
noProxyHost |
プロキシサーバを指定した場合に、プロキシを利用しないホストを指定します。 |
localhost |
- |
○ |
○ |
○ |
- |
||
includeClientIpToPermissionRequest |
接続元IPアドレスをWAMモジュールの許可API呼び出し時にパラメータ(requestInfo)として送信するかをtrue/falseで指定します。 |
false |
- |
- |
- |
- |
○ |
||
clientHeaderToPermissionRequestMapping |
ユーザーのコンテンツ要求時のHTTPリクエストヘッダーを、許可API呼び出し時のパラメータ(requestInfo)としてマッピングする場合の設定です。 Serverless版での設定例
clientHeaderToPermissionRequestMapping: [ { clientHeaderName: "Accept", requestInfoKey: "accept" }, ] |
- |
- |
- |
- |
- |
○ |
||
systemErrorPageUrl |
500エラー発生時に返却するエラー画面のURLです。絶対パスもしくは相対パスで指定可能です。 |
- |
- |
- |
- |
- |
○ |
||
unavailableErrorPageUrl |
503エラー発生時に返却するエラー画面のURLです。絶対パスもしくは相対パスで指定可能です。 |
- |
- |
- |
- |
- |
○ |
||
forbiddenErrorPageUrl |
403エラー発生時に返却するエラー画面のURLです。絶対パスもしくは相対パスで指定可能です。 |
- |
- |
- |
- |
- |
○ |
||
defaultErrorRedirectUrl |
エラー発生時のデフォルトのリダイレクト先URLです。絶対パスもしくは相対パスで指定可能です。 |
- |
- |
- |
- |
- |
○ |
||
IplassIntegrateBasicAuth |
基本認証のID/PWでWAMの認証を行います。認証に成功した場合、そのまま管理対象サイトのコンテンツが表示されます。 |
Off |
- |
○ |
- |
- |
- |
||
IplassUrlEncodeCharset |
WAMプラグインモジュールからWAMモジュールへのHTTP通信の際、クエリパラメータにURLを含むことがあります。 |
utf-8 |
- |
○ |
- |
- |
- |
||
IplassSslVerifyPeer |
WAMモジュールへのHTTP/HTTPS通信時、サーバー証明書の検証するか否かを設定します。 |
On |
- |
○ |
- |
- |
- |
||
IplassSslVerifyHost |
WAMからiPLAssへのHTTP/HTTPS通信時、通信先のドメイン名の検証(証明書のcommonNameの定義と一致しているか)するか否かを設定します。 |
On |
- |
○ |
- |
- |
- |
||
IplassSslVersion |
SSLプロトコルバージョンを指定します。以下から設定可能です。 |
1(TLSv1.x) |
- |
○ |
- |
- |
- |
||
IplassHttpVerbose |
WAMモジュールのHTTP通信のログを冗長化します。 |
Off |
- |
○ |
- |
- |
- |
ロードバランサのスティッキーセッションを利用する WAMモジュールが稼働するiPLAssサーバーを冗長化してロードバランサーのスティッキセッション機能を利用する環境では、 loadBalancerCookieName と siteLoadBalancerCookieName を正しく設定することで、WAMプラグインモジュールが当該Cookieをロードバランサーに送付するようになります。Apache版を例にした場合、以下のような設定では、以下図のようにCookieが交換されます。 |
# ロードバランサのスティッキーセッションのCookie名を指定します. IplassLoadBalancerCookieName myLB # 上記Cookieを管理対象サイト側のドメインのCookieに格納する場合のCookie名を指定します. IplassSiteLoadBalancerCookieName wamMyLB

javaScriptSrc(IplassJavaScriptSrc)/ javaScriptPath(IplassJavaScriptPath)項目について WAMの機能により、WAMプラグインモジュールからのHTTPレスポンスボディの末尾にscriptタグが追加されます。 当該タグの目的は、JavaScriptでユーザー情報を取得し、ユーザー情報毎にコンテンツに変更を加える事に利用できます。 サンプルモジュールが、Apache版の「doc/example/js/iplasswam」にありますので、ご参照ください。 |
ファイル | 説明 | 変更要 |
---|---|---|
iplass-wam.js |
WAMオブジェクトを定義したファイルです。 |
|
site.js |
サイトのサンプルソースです。 |
○ |
site.css |
サイトで利用するcssです。 |
○ |
jQuery-1.11.0.min.js |
site.jsで利用するlibのファイルです。 |
1.3. Apache版
初期設定
-
事前準備/前提
-
有償版のSDKに同梱されている
iplass-ee-wam-apache-[バージョン]-[OS/処理系].[拡張子]
(例 : iplass-ee-wam-apache-[バージョン]-linux-gcc.tar.gz)をWebサーバーの任意のパスに配置してください。 -
以降の説明では、Apacheのインストールディレクトリを
%APACHE_HOME%
と表記します。 -
Apacheをデーモン形式で実行することを前提とします。
-
-
WAMプラグインモジュールの配置
-
Webサーバーの
%APACHE_HOME%/modules
にWAMプラグインモジュールを配置します。iplass-ee-wam-apache-[バージョン]-[OS/処理系].[拡張子]
内の以下のファイルが対象です。-
mod_iplass_ee_wam_apache.so
-
-
-
Apacheの設定
-
WAMプラグインモジュールの設定ファイル(iplass-wam.conf)を
%APACHE_HOME%/conf.modules.d
に配置します。設定項目の詳細はWAMプラグインモジュールの設定を参照してください。
※ Apacheの設定ファイル(httpd.conf)で、%APACHE_HOME%/conf.modules.d
に配置したWAMプラグインモジュールの設定ファイル(iplass-wam.conf)をIncludeしていることを確認してください。 -
Linux環境の場合、httpdプロセスの環境変数を編集し、WAMプラグインモジュールの依存するシステムライブラリを参照可能とする必要があります。
initスクリプトでApacheをデーモン起動している場合、httpdプロセスの環境変数LD_LIBRARY_PATH
からWAMプラグインモジュールの依存するシステムライブラリを参照可能とします。
以下、ライブラリのインストール先を/opt/wam/local
とした場合の設定例です。/etc/sysconfig/httpd
に以下を追加します。WAM_LOCAL=/opt/wam/local WAM_LIB_PATH=\ ${WAM_LOCAL}/boost/lib\ :${WAM_LOCAL}/jsoncpp/lib\ :${WAM_LOCAL}/openssl/lib\ :${WAM_LOCAL}/zlib/lib\ :${WAM_LOCAL}/libidn/lib\ :${WAM_LOCAL}/curl/lib\ :${WAM_LOCAL}/apr/lib\ :${WAM_LOCAL}/apr-iconv/lib\ :${WAM_LOCAL}/apr-util/lib\ :${WAM_LOCAL}/gmp/lib LD_LIBRARY_PATH="$WAM_LIB_PATH:$LD_LIBRARY_PATH" export LD_LIBRARY_PATH
SELinuxを有効にしている環境では、ライブラリにセキュリティコンテキストを付与する必要があります。
まず、他の.soファイルに付与されているコンテキストをls -Zコマンドで確認します。
次に、上記パスの各ライブラリに対して、chconコマンドで当該コンテキストを付与します。
この操作により、httpdプロセスからライブラリへのアクセスが可能となります。 -
Windows環境の場合、
iplass-ee-wam-apache-[バージョン]-win64-vc.zip
内のbin/
にあるDLLファイルを%APACHE_HOME%/bin
にコピーします。
-
-
WAMシステムライブラリ
WAMシステムライブラリを参照してください。
設定方法/設定例
Apache版のWAMプラグインモジュールでは、iplass-wam.conf
を使ってWAMプラグインモジュールの設定を行います。
# WAMプラグインモジュールをロードします. LoadModule iplass_wam_plugin_apache_module modules/mod_iplass_wam_plugin_apache.so # 管理対象サイトの識別情報です. AdminConsoleで設定した値と一致させてください. IplassSiteId local IplassSiteSecret 123 # 管理対象サイトのドメインとプロトコルを指定します. IplassSiteCookieDomain mysite.example.com IplassSiteScheme https # WAMモジュールが稼働するiPLAssサーバーのURLを指定します. IplassWamBaseUrl https://my.iplass.jp/myiplassapp/mytenant/ IplassWamCookieDomain my.iplass.jp # 管理対象サイトで認証処理を組み込みたいパスパターンを正規表現で指定します. IplassProtectedPathPattern "^/contents/.*$" # 認証時にコールバックとして使う管理対象サイトのパスを指定します. そのサイトで未使用のパスとしてください. IplassWamAuthCallbackPath /wamauthcallback # WAMモジュールとWAMプラグインモジュールでアクセストークンをやり取りするためのCookie名とパスを指定します. IplassWamCookieName JSESSIONID IplassWamCookiePath / IplassSiteCookieName ipw IplassSiteCookiePath / # CSRFトークンをやり取りするためのCookie名を指定します. IplassCsrfTokenCookieName _csrft # WAMモジュールからのJSONレスポンスの文字コードを指定します. IplassCharset utf-8
iPLAssのUserエンティティを連携する
管理対象サイト側のプログラム言語で独自に認可処理を組み込んだり、ユーザー情報を利用したりしたい場合、次のように設定します。
この例では、独自に定義したリクエストヘッダーにWAMモジュールから返却されたユーザー情報が格納されるようになります。
IplassMapUserAttribute On IplassAttributeMap x-wam-user-id accountId IplassAttributeMap x-wam-user-name name
例えばPHPの場合、次のようなソースコードでUserエンティティ情報を取得可能です。
<?php
header("Content-Type: text/html; charset=UTF-8");
echo “get user data from WAM Headers. <br/>";
foreach (getallheaders() as $name => $value) {
echo “ '$name': '$value' <br/> ";
}
<br/>";
?>
Apacheの基本認証と統合する
以下は、Apacheの基本認証と統合する設定です。基本認証に成功した場合、WAM機能の認証処理をスキップできます。
IplassIntegrateBasicAuth On
localhostのiPLAssと連携する
以下は、管理対象サイトとiPLAssを同一サーバーで稼動させる環境の設定です。
IplassWamBaseUrl http://localhost:8080/mytenant/ IplassWamRedirectUrl https://mysite.example.com/myiplassapp/mytenant/ IplassWamCookieDomain RewriteRule ^/wamauthcallback(.*) /wamauthcallback$1 [L] (1) RewriteRule ^/contents/(.*) /contents/$1 [L] (1)
1 | ApacheからiPLAssのアプリケーションサーバーにプロキシしている環境では、コールバックのパスと認証対象のコンテンツのパスをプロキシしないようにリライトルールを定義します。 |
コンテンツにJavaScriptを追加する
以下は、指定したパスパターンにマッチするコンテンツの末尾に任意のJavaScriptを追加する設定です。
IplassJavaScriptPath "/iplasswam/jquery-1.11.0.min.js,/iplasswam/sitexhr2.js" (1) IplassJavaScriptSrc "iplass.wam.init({wamBaseUrl: \"https://my.iplass.jp/myiplassapp/mytenant/\", funcSignIn: addWamSignInNavi, funcSignOut: addWamSignOutNavi}); $(document).ready(function(){addCss();iplass.wam.addUserInfoContent();});" (2) IplassAddScriptTagPathPattern "/index.php" (3)
1 | script要素のsrc属性で読み込むJavaScriptファイルを指定します。 |
2 | JavaScriptを記述します。 |
3 | パスのパターンを指定します。 |
開発環境向けの設定
管理対象サイトのサーバーとiPLAssが稼働するサーバーの間にプロキシがある環境では、次のように設定します。
IplassProxyHost my.proxy.host IplassProxyPort 8080
iPLAssサーバーに自己署名のサーバー証明書を利用する場合、次のように設定します。
IplassSslVerifyPeer Off IplassSslVerifyHost Off
WAMプラグインモジュールのデバッグログを有効にする場合、次のように設定します。
合わせて、Apache本体のログレベルをdebugに指定してください。
IplassWamVerbose On IplassHttpVerbose On LogLevel debug
WAMシステムライブラリ
Apache版WAMプラグインモジュールの依存するライブラリは以下のとおりです。
ライブラリ | バージョン |
---|---|
Boost |
1.5.5 |
jsoncpp |
0.6.0 |
GMP |
5.1.2 |
GNU IDN |
1.18 |
zlib |
1.2.11 |
OpenSSL |
1.0.2.k |
libcurl |
7.34.0 |
APR |
1.5.2 |
APR-iconv |
1.2.1 |
APR-util |
1.5.4 |
以下、AmazonLinux環境/GCC4.8.2におけるシステムライブラリインストール手順を示します。
yum等、利用しているリポジトリマネージャに該当ライブラリが存在しない場合、参考にしてください。
-
ビルドツール
以下のyumコマンドにより、ビルド中に使用するツールをインストールしておきます。
# yum install gcc gcc-c++ autoconf automake # yum install unzip # yum install cmake # yum install bzip2 # yum install libtool # yum install dos2unix # yum install zip
以降、各ライブラリのビルド手順を示します。必要に応じて、prefixオプションで任意ディレクトリにインストールしてください。
-
Boost
# cd [your/build/work/dir] # tar zxf [your/scp/upload/path/to]/boost_1_55_0.tar.gz # cd boost_1_55_0 #./bootstrap.sh --prefix=/usr/local #./b2 install
-
jsoncpp
# unzip [your/scp/upload/path/to]/jsoncpp-master.zip # cd jsoncpp-master # mkdir build # cd build # cmake -DCMAKE_BUILD_TYPE=release -DJSONCPP_LIB_BUILD_SHARED=ON -DJSONCPP_WITH_TESTS=OFF -G "Unix Makefiles" .. # make # mkdir /usr/local # cd .. # cp -r include/ /usr/local # cp -r build/lib/ /usr/local
-
GMP
# bzip2 -dc [your/scp/upload/path/to]/gmp-5.1.2.tar.bz2 | tar xf - # cd gmp-5.1.2 #./configure --prefix=/usr/local # make # make install
-
GNU IDN
# tar zxf [your/scp/upload/path/to]/libidn-1.18.tar.gz # cd libidn-1.18 #./configure --prefix=/usr/local # make # make install
-
zlib
# tar zxf [your/scp/upload/path/to]/zlib-1.2.11.tar.gz # cd zlib-1.2.11/ #./configure --prefix=/usr/local # make # make install
-
OpenSSL
# tar zxf [your/scp/upload/path/to]/openssl-1.0.2k.tar.gz # cd openssl-1.0.2k #./config --prefix=/usr/local threads shared zlib-dynamic # vi Makefile ZLIB_INCLUDE= →ZLIB_INCLUDE= -I/mnt/ebs/opt/wam/local/zlib/include # make # make -W install_docs install
-
libcurl
# tar zxf [your/scp/upload/path/to]/curl-7.34.0.tar.gz # cd curl-7.34.0/ # export LD_LIBRARY_PATH=/usr/local /lib (LD_LIBRARY_PATHにopenssl、zlib、libidnのlib/のパスを含めます) # CPPFLAGS="-I/usr/local/include" \ LDFLAGS="-L/usr/local/lib" \ ./configure --prefix=/usr/local (openssl、zlib、libidnの各include/パスを-Iオプション、各lib/のパスを-Lオプションで1つずつ指定します。) # make # make install
libcurlでは、利用する機能によってはzlib、OpenSSLなど他のライブラリが 必要な場合があります。configureの出力で、各機能の有効無効を示す表示を確認することができます。 上記手順では、SSL support、zlib support、IDN supportが enabled となることを確認してください。 |
-
APR
# tar zxf [your/scp/upload/path/to]/apr-1.5.2.tar.gz # cd apr-1.5.2 #./configure --prefix=/usr/local # make # make install
configure実行時、rm: cannot remove 'libtoolT': No such file or directory と出力された場合がありますが、WAMモジュール利用には影響ありません。無視して進めてください。 |
-
APR-iconv
# tar zxf [your/scp/upload/path/to]/apr-iconv-1.2.1.tar.gz # cd apr-iconv-1.2.1 #./configure --prefix=/usr/local --with-apr=/usr/local # make # make install
-
APR-util
# tar zxf [your/scp/upload/path/to]/apr-util-1.5.4.tar.gz # cd apr-util-1.5.4 #./configure --prefix=/usr/local --with-apr=/usr/local --with-apr-iconv=../apr-iconv-1.2.1 (--with-apr-iconvオプションではapr-iconvのソースコードパスを指定します) # make # make install
Windows環境でのCurlライブラリは、OpenSSL/1.0.2k、zlib/1.2.11、libidn/1.18、libssh2/1.4.3、librtmp/2.3に 依存しており、これらはApache実行環境に含まれている必要があります。 OpenSSLはlibeay32, ssleay32 (Linuxでのライブラリ名はlibssl、libcrypto)に依存していますが、 Apache2.4にビルトインされているため特に何か作業をする必要はありません。 |
1.4. IIS版
初期設定
-
事前準備/前提
-
有償版のSDKに同梱されている
iplass-ee-wam-iis-[バージョン].zip
をIISサーバーに配置してください。 -
以降の説明では、IISのインストールディレクトリを
%IIS_HOME%
と表記します。 -
サイトのルートフォルダを
%WWW_ROOT%
と表記します。 -
IISのインストール時の「機能の選択」で
ASP.NET4.5
を選択していることを前提とします。
-
-
WAMプラグインモジュールの配置
-
IISサーバーの
%WWW_ROOT%/bin
にWAMプラグインモジュールを配置します。iplass-wam-iis-[バージョン].zip
内の以下のファイルが対象です。-
DynamicJson.dll
-
IplassEEWamIIS.dll
-
log4net.dll
-
-
-
IISの設定
-
iplass-ee-wam-iis-[バージョン].zip
に格納されている設定ファイルを以下のように配置します。-
WAMプラグインモジュールの設定ファイル(IplassWamPlugin.xml)を
%WWW_ROOT%/bin
に配置します。設定項目の詳細はWAMプラグインモジュールの設定を参照してください。 -
ログの設定ファイル(log4net.xml)を
%WWW_ROOT%/bin
に配置します。 -
IISの設定ファイル(Web.config)を
%WWW_ROOT%
に配置します。 -
同梱された設定ファイル(applicationHost.config)を参考に、IISの構成システムのルートファイル(applicationHost.config)へserverRuntimeタグを追記してください。
設定内容を反映すると、キャッシュの抑制が設定されます。 以下、Default Web Site
を対象サイトとした場合の追加内容です。
-
-
<location path="Default Web Site"> <system.webServer> <serverRuntime frequentHitTimePeriod="00:00:00" /> </system.webServer> </location>
設定方法/設定例
IIS版のWAMプラグインモジュールでは、IplassWamPlugin.xml
を使ってWAMプラグインモジュールの設定を行います。
-
propertyタグのname属性に設定項目名、value属性に値を定義します。
-
WAMプラグインモジュールの基本的な設定は、type属性が
WamPluginConfig
のcomponentタグで設定します。 -
SSL/TLS設定やプロキシ、タイムアウト時間などHTTP通信に関わる設定は、type属性が
HttpComponentConfig
のcomponentタグで設定します。 -
設定項目の詳細はWAMプラグインモジュールの設定を参照してください。
<?xml version="1.0" encoding="UTF-8"?>
<componentDefinition>
<component type="Iplass.Wam.Config.WamPluginConfig">
<property name="siteId" value="local"/>
<property name="siteSecret" value="123"/>
<property name="siteCookiePath" value="/"/>
<property name="siteCookieName" value="ipw"/>
<!-- 管理対象サイトのドメイン/プロトコル -->
<property name="siteCookieDomain" value="my.site.domain"/>
<property name="siteScheme" value="https"/>
<!-- WAMモジュールが稼働するiPLAssサーバーのURL -->
<property name="wamBaseUrl" value="https://iplass.domain/mtp/mytenant/"/>
<!-- 認証対象のURLパスパターン. -->
<property name="protectedPathPattern" value="/mycontents/.*"/>
<!-- 特定IPを許可します. -->
<property name="allowedIp" value="x.x.x.x/x" />
<property name="allowedIp" value="y.y.y.y/y" />
<property name="allowedIpHeaderName" value="X-Forwarded-For" />
<!-- 認証処理のコールバックのパス. -->
<property name="wamAuthCallbackPath" value="/wamauthcallback"/>
<property name="loadBalancerCookieName" value="myLB"/>
<property name="siteLoadBalancerCookieName" value="wamMyLB"/>
<property name="wamCookieName" value="JSESSIONID"/>
<property name="wamCookiePath" value="/"/>
<property name="csrfTokenCookieName" value="CSRFTOKEN"/>
<property name="charset" value="UTF-8" />
<!-- Userエンティティをリクエストヘッダーに連携します. -->
<property name="mapUserAttribute" value="True" />
<property name="attributeMap" className="Iplass.Wam.Config.AttributeMap">
<property name="mappedAttributeName" value="x-wam-user-id"/>
<property name="userAttributeName" value="accountId"/>
</property>
<property name="attributeMap" className="Iplass.Wam.Config.AttributeMap">
<property name="mappedAttributeName" value="x-wam-user-name"/>
<property name="userAttributeName" value="name"/>
</property>
<property name="logConfigPath" value="bin\log4net.xml"/>
<property name="wamVerboseLog" value="True"/>
</component>
<component type="Iplass.Wam.Config.HttpComponentConfig">
<property name="timeout" value="300000"/>
<!-- HTTP Proxy -->
<property name="proxyHost" value="my.proxy.host"/>
<property name="proxyPort" value="8080"/>
<property name="noProxyHost" value="localhost"/>
<property name="noProxyHost" value="x.x.x.x"/>
<!-- SSL/TLS -->
<property name="sslCertificateValidation" value="True"/>
</component>
</componentDefinition>
1.5. JavaEE版
初期設定
-
事前準備/前提
-
有償版のSDKに同梱されている
iplass-ee-wam-jee-[バージョン].zip
をアプリケーションサーバーに配置してください。 -
以降の説明では、Tomcatのインストールディレクトリを
%TOMCAT_HOME%
と表記します。
-
-
WAMプラグインモジュールの配置
-
アプリケーションサーバーの
%TOMCAT_HOME%/webapps/{プロジェクト名}/WEB-INF/lib
にWAMプラグインモジュールを配置します。iplass-wam-jee-[バージョン].zip
内の以下のファイルが対象です。-
iplass-ee-wam-jee-[バージョン].jar
-
-
-
JavaEEの設定
-
iplass-ee-wam-jee-[バージョン].zip
に格納されている設定ファイル/ライブラリを以下のように配置します。-
WAMプラグインモジュールの設定ファイル(iplass-wam-config.xml)を
%TOMCAT_HOME%/webapps/{プロジェクト名}/WEB-INF/classes
に配置します。設定項目の詳細はWAMプラグインモジュールの設定を参照してください。 -
libフォルダ配下のファイルを
%TOMCAT_HOME%/webapps/{プロジェクト名}/WEB-INF/lib
に配置します。 -
lib/logフォルダ配下のファイルを
%TOMCAT_HOME%/webapps/{プロジェクト名}/WEB-INF/lib
に配置します。 -
lib/httpclientフォルダ配下のファイルを
%TOMCAT_HOME%/webapps/{プロジェクト名}/WEB-INF/lib
に配置します。
-
-
%TOMCAT_HOME% └─webapps └─{プロジェクト名} └─WEB-INF ├─classes │ iplass-wam-plugin.xml │ (1) └─lib iplass-ee-wam-jee-[バージョン].jar などの、iplass-wam-jee-[バージョン].zip/lib 以下の jar ファイル全てを配置 logback*.jar などの、iplass-wam-jee-[バージョン].zip/lib/log 以下の jar ファイル全てを配置 httpcomponent*.jar などの、iplass-wam-jee-[バージョン].zip/lib/httpclient 以下の jar ファイル全てを配置 (2)
1 | 必要に応じてログ設定ファイル(logback.xml)を配置 |
2 | lib/httpclientフォルダ配下にはApache HttpClientのjarファイルが格納されています。 対象環境で別のバージョンのHttpClientを利用している等、当該jarを含めない場合は、WAMプラグインモジュールはJava標準ライブラリを使用してHTTP通信を行います。 |
設定方法/設定例
JavaEE版のWAMプラグインモジュールでは、iplass-wam-plugin.xml
を使ってWAMプラグインモジュールの設定を行います。
-
propertyタグのname属性に設定項目名、value属性に値を定義します。
-
WAMプラグインモジュールの基本的な設定は、type属性が
WamPluginConfig
のcomponentタグで設定します。 -
SSL/TLS設定やプロキシ、タイムアウト時間などHTTP通信に関わる設定は、type属性が
HttpComponentConfig
のcomponentタグで設定します。 -
設定項目の詳細はWAMプラグインモジュールの設定を参照してください。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE componentDefinition>
<componentDefinition xmlns="http://wam.iplass.org/plugin/config">
<component type="org.iplass.wam.plugin.impl.config.WamPluginConfig">
<property name="siteId" value="local" />
<property name="siteSecret" value="123" />
<property name="siteCookiePath" value="/" />
<property name="siteCookieName" value="ipw" />
<!-- 管理対象サイトのドメイン/プロトコル -->
<property name="siteCookieDomain" value="mysite.example.com" />
<property name="siteScheme" value="https" />
<!-- WAMモジュールが稼働するiPLAssサーバーのURL -->
<property name="wamBaseUrl" value="https://my.iplass.jp/myiplassapp/mytenant/" />
<property name="wamCookieDomain" value="my.iplass.jp" />
<!-- 認証対象のURLパスパターン. -->
<property name="protectedPathPattern" value="/mysiteapp/path/pattern.*" />
<!-- 特定IPを許可します. -->
<property name="allowedIp" value="10.0.0.1/32" />
<property name="allowedIp" value="10.0.0.2/32" />
<property name="allowedIpHeaderName" value="X-Forwarded-For" />
<!-- 認証処理のコールバックのパス. -->
<property name="wamAuthCallbackPath" value="/mysiteapp/wamauthcallback" />
<property name="loadBalancerCookieName" value="myLB" />
<property name="siteLoadBalancerCookieName" value="wamMyLB" />
<property name="wamCookieName" value="JSESSIONID" />
<property name="wamCookiePath" value="/" />
<property name="csrfTokenCookieName" value="CSRFTOKEN" />
<property name="charset" value="UTF-8" />
<!-- Userエンティティをリクエストヘッダーに連携します. -->
<property name="mapUserAttribute" value="true" />
<property name="mapType" value="HEADER" />
<property name="attributeMap" className="org.iplass.wam.plugin.impl.config.AttributeMap">
<property name="mappedAttributeName" value="x-wam-user-id"/>
<property name="userAttributeName" value="accountId"/>
</property>
<property name="attributeMap" className="org.iplass.wam.plugin.impl.config.AttributeMap">
<property name="mappedAttributeName" value="x-wam-user-name"/>
<property name="userAttributeName" value="name"/>
</property>
</component>
<component type="org.iplass.wam.plugin.impl.config.HttpComponentConfig">
<property name="connectionTimeout" value="300000" />
<property name="soTimeout" value="300000" />
<property name="poolSize" value="15" />
<!-- HTTP Proxy -->
<property name="proxyHost" value="my.proxy.host"/>
<property name="proxyPort" value="8080"/>
<property name="noProxyHost" value="localhost"/>
<property name="noProxyHost" value="127.0.0.1"/>
<!-- SSL -->
<property name="sslCertificateValidation" value="True" />
</component>
</componentDefinition>
MapUserAttributeについて データの受領先をHTTPヘッダかリクエスト属性から選択可能です。 プラグインモジュールの設定ファイルで以下のように指定します。 - アプリケーションからHTTPリクエストヘッダーで参照したい場合 <property name="mapType" value="HEADER" /> - リクエスト属性から参照したい場合 <property name="mapType" value="REQUEST" /> |
1.6. Serverless(JavaScript)版
Fetch APIに対応したJavaScriptランタイムが提供されるサーバーレスなエッジ環境で動作するWAMプラグインモジュール実装です。
Node.js 22以上、Deno、Workerなど様々なJavaScriptランタイムで動作します。
WAMプラグインモジュールの実装は、JavaScriptライブラリとして提供します。
また、WAMプラグインとしてサーバーレス環境で実行可能なコードを実装/ビルドするための unjs/h3
(HTTP フレームワーク)をベースとしたTypeScriptのスケルトンプロジェクトを提供します。
標準で、以下のサーバーレス環境用のスケルトンプロジェクトを提供します。
-
AWS Lambda@Edge版
-
Cloudflare Workers版
-
Netlify Edge Functions版
初期設定
-
事前準備/前提
-
開発端末にNode.jsがインストールされていない場合、Node.jsのインストールが必要です。
-
有償版のSDKに同梱されているServerless版スケルトンプロジェクトの内、利用したいサーバーレス環境のスケルトンプロジェクトのフォルダ(例 :
iplass-wam-lambdaedge-plugin
)を開発端末にコピーしてください。
-
-
WAMプラグインの実装/ビルド/配置
-
スケルトンプロジェクトをコピーしたディレクトリで、
npm install
コマンドを実行し、依存するJavaScriptライブラリをダウンロードします。 -
スケルトンプロジェクトの
src/config.ts
内のdefineConfig関数
を実装し、WAMプラグインモジュールの設定を行います。設定項目の詳細はWAMプラグインモジュールの設定を参照してください。 -
必要に応じて、WAMプラグインモジュールのロジックのカスタマイズ処理やフック処理、その他必要なロジックを実装します。詳細はスケルトンプロジェクト内の
README.md
を参照してください。 -
ビルド方法やデプロイ方法の詳細は、スケルトンプロジェクト内の
README.md
を参照してください。
-
設定方法/設定例
Serverless(JavaScript)版のWAMプラグインモジュールでは、スケルトンプロジェクトの src/config.ts
内の defineConfig関数
を実装することでWAMプラグインモジュールの設定を行います。
-
設定項目の詳細はWAMプラグインモジュールの設定を参照してください。
export default defineConfig(() => ({
// iPLAssサーバー側(=WAM本体)のURL
wamBaseUrl: "https://my.iplass.jp/myiplassapp/mytenant/",
// iPLAssサーバー側(=WAM本体)からのコールバックを受け取るURLパス
wamAuthCallbackPath: "/wamauthcallback",
// 管理対象サイトID
siteId: "local",
// 管理対象サイトSecret
siteSecret: "123",
// 管理対象サイト側で権限チェックを行う(WAMで保護する)パターンを示す正規表現
protectedPattern: [{ domain: "mysite.example.com", pathPattern: /^\/protect\/.*$/ },],
// 許可対象のIPが含まれるかどうかチェックするリクエストヘッダー名
allowedIpHeaderName: "True-Client-IP",
// 500エラー画面URL
systemErrorPageUrl: "/error/500.html",
// 503エラー画面URL
unavailableErrorPageUrl: "/error/503.html",
// 403エラー画面URL
forbiddenErrorPageUrl: "/error/403.html",
// エラー発生時のデフォルトのリダイレクト先URL
defaultErrorRedirectUrl: "/error/default.html",
// 4.0.0以降のバージョンではdebugが廃止され、logLevelが追加されました
// ログレベル
logLevel: "error",
// ヘッダーにiPLAssのユーザー情報を格納するかの判定フラグ
mapUserAttribute: false,
// ヘッダーにiPLAssのユーザー情報を格納する場合に利用する
attributeMap: [
{ headerName: "x-wam-user-id", userAttributeName: "accountId" }
],
// クライアントIPを許可APIのリクエストに含めるか
includeClientIpToPermissionRequest: true
}));