4.0
{doctitle}

1. Apache版

初期設定

  1. 事前準備/前提

    • 有償版のSDKに同梱されている iplass-ee-wam-apache-[バージョン]-[OS/処理系].[拡張子] (例 : iplass-ee-wam-apache-[バージョン]-linux-gcc.tar.gz)をWebサーバーの任意のパスに配置してください。

    • 以降の説明では、Apacheのインストールディレクトリを %APACHE_HOME% と表記します。

    • Apacheをデーモン形式で実行することを前提とします。

  2. WAMプラグインモジュールの配置

    • Webサーバーの %APACHE_HOME%/modules にWAMプラグインモジュールを配置します。 iplass-ee-wam-apache-[バージョン]-[OS/処理系].[拡張子] 内の以下のファイルが対象です。

      • mod_iplass_ee_wam_apache.so

  3. 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 にコピーします。

  4. 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にビルトインされているため特に何か作業をする必要はありません。