Web Account Managerは、BtoC向けの会員管理機能を提供します。
会員管理機能は、「会員サイト化プラグイン」「Web会員管理」に分類されます。

  • 会員サイト化プラグイン
    静的Webサイトや、CMSで作成されたWebサイトに手を加えることなく、認証処理が必要サイトを構築するプラグインです。

  • Web会員管理
    ログイン機能、オンラインサインアップ機能、アカウント情報のセルフメンテナンス機能、コンテンツの閲覧制御機能です。

wam overview

1. Web Account Manager

認証処理に関連する機能(Cookie認証、2Step認証、ソーシャルログイン、アクティベーション)を提供しています。 iPLAssモジュールと組み合わせて利用します。

1.1. 認証機能

ユーザーの認証を行います。 提供する機能として、Cookie認証、2Step認証があります。

  • Cookie認証(RememberMe機能)
    認証に必要なユーザーIDとパスワードをCookie情報として保存し、一度認証すれば、2回目以降はユーザーIDとパスワードを入力しなくても直接認証後の画面へ利用できるようになります。
    利用する場合は こちらを参照してください。

  • 2Step認証(email/SMSによるワンタイムコード)
    通常の認証に追加して、ワンタイムコードが記載されたemail、又はSMSが送付されるので、コードを入力して認証できるようになります。
    詳細は 2段階認証を参照してください。

  • ソーシャルログイン(ID連携)
    ログインするアカウントを通常のユーザではなくSNSアカウントを利用する事ができます。 連携先として以下のSNSサービスが利用できます。

    • Facebook
      管理コンソールに設定する事でFacebookユーザでのログインが可能となります。
      利用する場合はFacebookの設定が必要になります。

    • twitter
      管理コンソールに設定する事でtwitterユーザでのログインが可能となります。
      利用する場合はTwitterの設定が必要になります。

    • OpenID Connect準拠のサイト(Google+、Yahoo)
      管理コンソールに設定する事でGoogle+、Yahooユーザでのログインが可能となります。
      利用する場合はGoogle+または Yahooの設定が必要になります。

1.2. セルフレジストレーション(およびアクティベーション)

新規ユーザの登録機能を提供します。 ユーザ登録時のメールアドレスに対して、アクティベーションURLを通知します。 アクティベーションURL押下時に起動画面にてパスワード設定後、ログイン可能となります。 signUpを参照し、各項目を設定してください。

1.3. セルフメンテナンス

登録したユーザ情報をメンテナンスする機能を提供します。 また、メールアドレスを変更した場合、変更後のメールアドレスへアクティベーション用のURLを通知します。 通知する事により、メールアドレス存在確認機能も実施しています。 settingsを参照し、各項目を設定してください。

1.4. パスワードリカバリ

ユーザがパスワードを忘れた際に、事前に設定されている秘密の質問へ回答することにより、ユーザのメールアドレス宛にパスワードリセットURLを通知します。 recoveryを参照し、各項目を設定してください。

1.5. WAMモジュールの設定

service-config

WAMモジュールを有効化するには、 WamServiceが設定されたwam-service-config.xmlをincludeする必要があります。 設定方法については初期設定を参照してください。

Preference

Web会員管理の設定はPreference機能を利用します。

以下はデフォルトで提供しているWAMのPreferenceです。 必要に応じて変更してください。

wam/wamPreference

WAM全般の設定です。

Runtime Class Name
org.iplass.wam.api.WamPreference
項目 説明 初期値

wamUserIdentifierRole

WAMユーザを識別するためのロール

WAM

homeUrl

認証後にリダイレクトされる画面のURL

http[s]://<iPLAssのドメイン名>/<コンテキスト>/<テナント>/wam/

customCssPath

独自のCssを組み込みたい場合に指定。 パスの先頭に${contextPath}を指定した場合はテナントコンテキストパスに、${staticContentPath}を指定した場合は静的コンテントパスに置き換えられる。

faviconPath

faviconを設定したい場合に指定。 パスの先頭に${contextPath}を指定した場合はテナントコンテキストパスに、${staticContentPath}を指定した場合は静的コンテントパスに置き換えられる。

accountPolicy

サインアップ設定の initialAccountPolicy が未指定の場合に、作成されたユーザに割り当てられるポリシー

WAM

signUp

signUp参照

settings

settings参照

verification

verification参照

recovery

recovery参照

manageSite

manageSite参照

idProvider

idProvider(FaceBook)参照

idProvider

idProvider(Twitter)参照

idProvider

idProvider(Google)参照

idProvider

idProvider(Yahoo)参照

signUp

サインアップ時の設定です。

項目 説明 初期値

accountIdProperty

ユーザIDを直接入力させず、それ以外の項目をユーザIDとして利用する場合に指定。 例えば、メールアドレス(mail)のようなユーザに対して一意となる項目を指定する。

listener

アクティベーション完了時に実行するリスナー。 org.iplass.wam.auth.signup.SignUpListener の実装クラスかScriptを指定。

initialGroup

初期設定するグループのコード、複数指定可能。

WAM

activatedGroup

アクティベーション後に設定するグループのコード、複数指定可能。

initialAccountPolicy

初期設定するアカウントポリシー

activatedAccountPolicy

アクティベーション後に設定するアカウントポリシー

captcha

org.iplass.wam.auth.signup.Captcha の実装クラスを指定。

signUpLayoutName

登録時に利用するUserSignUpエンティティの詳細画面定義のレイアウト名

signUpLayout

activateByOutOfBandVerification

メール等を利用した本人確認を実施するか

true

settings

セルフメンテナンスで利用する設定です。

項目 説明 初期値

settingsLayoutName

編集時に利用するUserエンティティの詳細画面定義のレイアウト名

verification

メール、SMSなどのユーザの本人確認に利用する項目に関する設定です。

項目 説明 初期値

type

verification方式を一意に識別するための名称

email

propertyName

検証に利用するUser(および、UserRegistration)のプロパティ名

mail

verifier

アクティベーション処理時に利用するOutOfBandVerifierのverifier名

email

validDurationMinute

検証処理の有効期間(分)

1440

maxFailureCount

検証処理の最大失敗許容回数。-1を指定した場合はvalidDurationMinute間であれば何度でも失敗可能となります。

-1

recovery

パスワードリカバリに関する設定です。

項目 説明 初期値

propertyForSecretQuestion

パスワードリカバリで使用する秘密の質問となるプロパティ名。 複数指定可能。

lastName

propertyForSecretQuestion

同上

firstName

propertyForSecretQuestion

同上

mail

manageSite

認証を管理されているサイトの設定です。 サイト毎に設定します。

項目 説明 初期値

siteId

サイトを識別するIDを設定します。 wam設定ファイルに設定したものと同じ文字列を設定します。

local

siteSecret

サイトのシークレットキーを設定します。 wam設定ファイルに設定したものと同じ文字列を設定します。

123

siteDomain

サイトのドメイン名を設定します。 wam設定ファイルに設定したものと同じ文字列を設定します。

httpsOnly

接続可能なプロトコルをhttpsのみに設定します。

false

mappingActionPath

iPLAssのアクション権限設定で、マッピングする際にprefixとして利用される文字列を設定します。

local

authCallbackUrl

iPLAssからサイトへリダイレクトする際に使用されるURLです。 当該URLは、サイトのコンテンツではなくWAMの処理実行に使います。 従ってコンテンツのURLに該当しない任意のURLを設定してください。

以下の形式です。

http[s]://<サイトのドメイン名>/<任意のパス>

wam設定ファイルと異なり、URL全体(http[s]~)を記述する点に注意してください。 ”/<任意のパス>”の部分をwam設定ファイルと一致させます。

idProvider(Facebook)

Facebookのアカウントで認証を行う際の設定です。

Runtime Class Name
org.iplass.wam.api.auth.idp.facebook.FacebookIdProvider
項目 説明 初期値

clientId

アプリで発行されたApp ID

yourClientId

clientSecret

アプリで発行されたApp Secret

yourClientSecret

idProvider(Twitter)

Twitterのアカウントで認証を行う際の設定です。

Runtime Class Name
org.iplass.wam.api.auth.idp.twitter.TwitterIdProvider
項目 説明 初期値

consumerKey

アプリで発行されたコンシューマキー

yourConsumerKey

consumerSecret

アプリで発行されたコンシューマーシークレット

yourConsumerSecret

idProvider(Google)

Googleのアカウントで認証を行う際の設定です。

Runtime Class Name
org.iplass.wam.api.auth.idp.openidconnect.OpenIdConnectIdProvider
項目 説明 初期値

providerName

プロバイダ名

Google

authUri

認証先のURL

https://accounts.google.com/o/oauth2/auth

tokenUri

トークンのURL

https://accounts.google.com/o/oauth2/token

userInfoUri

ユーザ情報取得のURL

https://www.googleapis.com/plus/v1/people/me/openIdConnect

clientId

アプリで発行されたクライアントID

yourClientId

clientSecret

アプリで発行されたクライアントシークレット

yourClientSecret

buttonLabel

ログイン画面表示用のラベル

<i class="fa fa-google-plus"></i><span> Google</span>

buttonStyle

ログイン画面表示用ラベルのスタイル

color: #dd4b39

subjectName

ユーザのフルネームの属性名

name

attributeMapping

プロバイダ側のプロフィールの属性値:iPLAssのプロパティの値をマッピング。

-

propertyName

iPLAssのプロパティ(メールアドレス)

mail

profileAttributeName

プロバイダ側の属性値(メールアドレス)

email

attributeMapping

プロバイダ側のプロフィールの属性値:iPLAssのプロパティの値をマッピング。

-

propertyName

iPLAssのプロパティ(ユーザーの名)

firstName

profileAttributeName

プロバイダ側の属性値(ユーザーの名)

given_name

attributeMapping

プロバイダ側のプロフィールの属性値:iPLAssのプロパティの値をマッピング。

-

propertyName

iPLAssのプロパティ(ユーザーの姓)

lastName

profileAttributeName

プロバイダ側の属性値(ユーザーの姓)

family_name

attributeMapping

プロバイダ側のプロフィールの属性値:iPLAssのプロパティの値をマッピング。

-

propertyName

iPLAssのプロパティ(ユーザの言語)

language

profileAttributeName

プロバイダ側の属性値(ユーザーの優先ロケール)

locale

idProvider(Yahoo)

Yahooのアカウントで認証を行う際の設定です。

Runtime Class Name
org.iplass.wam.api.auth.idp.openidconnect.OpenIdConnectIdProvider
項目 説明 初期値

providerName

プロバイダ名

Yahoo

authUri

認証先のURL

https://auth.login.yahoo.co.jp/yconnect/v1/authorization

responseType

レスポンスの形式 固定文字列(初期値から変更不要)

code id_token

useNonce

リプレイアタック対策有無を設定

true

tokenUri

トークンのURL

https://auth.login.yahoo.co.jp/yconnect/v1/token

tokenEndPointAuthType

トークンエンドポイント認証タイプ固定文字列(初期値から変更不要)

BASIC

clientId

アプリで発行されたクライアントID

yourClientId

clientSecret

アプリで発行されたクライアントシークレット

yourClientSecret

userInfoUri

ユーザ情報取得のURL

https://userinfo.yahooapis.jp/yconnect/v1/attribute?schema=openid

subjectId

ユーザ識別子の名前

user_id

subjectName

ユーザのフルネームの属性名

name

buttonLabel

ログイン画面表示用のラベル

<span> Yahoo!</span>

buttonStyle

ログイン画面表示用ラベルのスタイル

color: #ff0033

attributeMapping

プロバイダ側のプロフィールの属性値:iPLAssのプロパティの値をマッピング。

-

propertyName

iPLAssのプロパティ(メールアドレス)

mail

profileAttributeName

プロバイダ側の属性値(メールアドレス)

email

attributeMapping

プロバイダ側のプロフィールの属性値:iPLAssのプロパティの値をマッピング。

-

propertyName

iPLAssのプロパティ(ユーザーの名)

firstName

profileAttributeName

プロバイダ側の属性値(ユーザーの名)

given_name

attributeMapping

プロバイダ側のプロフィールの属性値:iPLAssのプロパティの値をマッピング。

-

propertyName

iPLAssのプロパティ(ユーザーの姓)

lastName

profileAttributeName

プロバイダ側の属性値(ユーザーの姓)

family_name

attributeMapping

プロバイダ側のプロフィールの属性値:iPLAssのプロパティの値をマッピング。

-

propertyName

iPLAssのプロパティ(ユーザの言語)

language

profileAttributeName

プロバイダ側の属性値(ユーザーの優先ロケール)

locale

1.6. 初期設定

WAMを利用する際には以下の設定が必要となります。

設定の追加

mtp-service-configの編集

mtp-service-configに以下を追記し、WAMの設定ファイルを読み込めるようにします。

<inherits>/wem-service-config.xml</inherits>
build.gradleの編集

build.gradleに以下を追記し、WAMモジュールの参照を追加します。 iplass-ee-skeletonを利用している場合は該当箇所のコメント化を解除します。

runtime group: 'org.iplass.ee', name: 'iplass-ee-wam', version: iPLAssVersion

追記後、プロジェクトのコンテキストメニューから Gradle プロジェクトのリフレッシュ を行ってください。

アカウントポリシーの追加

WAMを利用してユーザアカウントを登録する際に適用するアカウントポリシーを作成します。 アカウントポリシーの名前はPreferenceinitialAccountPolicy で指定した値(デフォルト値:WAM)にします。

権限設定

AdminConsoleのPermissonExplorer等を利用して、WAMを利用するユーザのための権限設定を行います。

グループ

WAMユーザが登録時に所属するグループを作成します。 グループのコードはPreferencesignUp > initialGroup で指定した値(デフォルト値:WAM)にします。

ロール

WAMユーザ用のロールを作成します。 ロールのコードはPreferencewamUserIdentifierRole で指定した値(デフォルト値:WAM)にします。

RoleConditionを追加し、前項で作成したグループを条件にします。

user.memberOf("WAM")
Entity権限

WAMユーザがWAMを利用する上で必要となる最低限のEntity権限を設定します。 ここで対象とするEntity以外の権限については、アプリケーションの要件にあわせて適宜設定してください。

Entity 参照権限 登録権限 更新権限 削除権限

mtp.auth.Group

mtp.auth.Rank

mtp.auth.User

Action権限

WAMユーザが利用するActionに対して権限を設定します。 wam 配下の全てのActionに対して許可を設定するため、PermissonExplorerのActionPermissyonにて、WAMユーザ用のロールの列と wam の階層フォルダが交差するセルをクリックし、Nameに適切な名前を設定してOKボタンを押してください。

画面定義

ユーザが自身の情報を更新するための画面で利用するユーザ情報(mtp.auth.User)の詳細画面定義を作成してください。 viewを追加する際の名前はPreferencesettings > settingsLayoutName で指定した値にします。

なお、このviewではユーザに必要以上の項目を編集させないよう注意してください。 例えば権限に絡む項目(グループ、ランク、アカウントポリシー等)を更新してしまった場合、それ以降WAMの画面が操作できなくなる可能性があります。

2. WAM plugin

事前に作成されたサイトに対して、サイトを修正する事なく、認証処理を組み込む事のできるプラグインです。
エンドユーザが作成した静的サイトに、後から認証処理を追加したい場合や、
認証情報の一元化など、他システムの認証処理にiPLAssを利用する場合に利用します。

プラグインには、以下の機能が含まれています。

  1. 認証されてないユーザをiPLAssのログイン画面へリダイレクトさせる機能

  2. コンテンツ表示の際、当該コンテンツが表示可能かどうかをiPLAssへ問合せし、認証要否に応じて閲覧制御を行う機能

サイト側プラグインとして、JavaEE向け、Apache向け、IIS向けを提供しています。

設定方法は、以下のとおりです。

2.1. サイトの設定/Apache利用の場合

  1. 事前準備

    • iplass-ee-wam-apache-[バージョン]-[OS/処理系].[拡張子](例: iplass-ee-wam-apache-[バージョン]-linux-gcc.tar.gz)をWebサーバに配置してください。

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

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

  2. リリースモジュールの配置

    • Apacheの「{apache_home}/modules」にWAMモジュールを配置します。iplass-ee-wam-apache-[バージョン]-[OS/処理系].[拡張子]内の以下のファイルが対象です。

      • mod_iplass_ee_wam_apache.so

  3. Apacheの設定

    • WAMの設定ファイル(iplass-wam.conf )を「{apache_home}/conf.modues.d」に配置します。
      ※httpd.confで、conf.modues.dに格納したファイルをIncludeしていることを確認してください。

    • Linux環境の場合、httpdプロセスの環境変数を編集します。
      Linux環境では、httpdプロセスの環境変数 LD_LIBRARY_PATH からWAMの依存するシステムライブラリを参照可能とする必要があります。
      以下、AWSのAmazonLinuxにて、ライブラリのインストール先を/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設定ファイルの設定
    wamsettingfile参照

  5. WAMシステムライブラリ
    wampluginapachesystemlibs参照

2.2. サイトの設定/IIS利用の場合

  1. 事前準備

    • iplass-ee-wam-iis-[バージョン].zipをIISサーバに配置してください。

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

    • サイトのルートフォルダを「wwwroot」と表記します。

    • IISのインストール時の「機能の選択」でASP.NET4.5を選択していることを前提とします。

  2. リリースモジュールの配置

    • IISの「{wwwroot}/bin」にWAMモジュールを配置します。iplass-wam-iis-[バージョン].zip内の以下のファイルが対象です。

      • DynamicJson.dll

      • IplassEEWamIIS.dll

      • log4net.dll

  3. IISの設定

    • iplass-ee-wam-iis-[バージョン].zipに格納されている設定ファイルを以下のように配置します。

      • WAMの設定ファイル(IplassWamPlugin.xml)を「{wwwroot}/bin」に配置します。

      • ログの設定ファイル(log4net.xml)を「{wwwroot}/bin」に配置します。

      • IISの設定ファイル(Web.config)をサイトのルートフォルダ「{wwwroot}」に配備します。

      • 設定ファイル(applicationHost.config)を参考に、IISの構成システムのルートファイル(applicationHost.config)へserverRuntimeタグを追記してください。
        設定内容を反映すると、キャッシュの抑制が設定されます。 以下、Default Web Siteを対象サイトとした場合の追加内容です。

        <location path="Default Web Site">
          <system.webServer>
            <serverRuntime frequentHitTimePeriod="00:00:00" />
          </system.webServer>
        </location>
  4. WAM設定ファイルの設定
    ※以下の表の項目名から、「Iplass」を省略して読み替えてください。
    wamsettingfile参照

2.3. サイトの設定/JavaEE利用の場合

  1. 事前準備

    • iplass-ee-wam-jee-[バージョン].zipをアプリケーションサーバに配置してください。

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

  2. リリースモジュールの配置

    • アプリケーションサーバの「{tomcat_home}/{プロジェクト名}/WEB-INF/lib」にWAMモジュールを配置します。iplass-wam-jee-[バージョン].zip内の以下のファイルが対象です。

      • iplass-ee-wam-jee-[バージョン].jar

  3. JavaEEの設定

    • iplass-ee-wam-jee-[バージョン].zipに格納されている設定ファイル/ライブラリを以下のように配置します。

      • WAMの設定ファイル(iplass-wam-config.xml)を「{tomcat_home}/{プロジェクト名}/WEB-INF/classes」に配置します。

      • lib/logフォルダ配下のファイルを「{tomcat_home}/{プロジェクト名}/WEB-INF/lib」に配置します。

      • lib/httpclientフォルダ配下のファイルを「{tomcat_home}/{プロジェクト名}/WEB-INF/lib}」に配置します。

lib/httpclientフォルダ配下にはApache HttpClientのjarファイルが格納されています。
対象環境で別のバージョンのHttpClientを利用している等、当該jarを含めない場合は、
WAMモジュールはJava標準ライブラリを使用してHTTP通信を行います。
  1. WAM設定ファイルの設定
    ※以下の表の項目名から、「Iplass」を省略して読み替えてください。
    wamsettingfile参照

2.4. サーバ(iPLAss)の設定

Admin Console

対象Webサイトにモジュールインストール後、Admin Consoleで以下を設定します。

  1. Tenant画面
    Tenant画面にて、 認証ポリシーを利用する に設定します。

  2. Preference画面
    Prefrence画面にて、以下の項目を設定します。

    • wamUserIdentifierRole

    • homeUrl

    • customCssPath

    • faviconPath|favicon

    • accountPolicy

    • manageSite
      wam/wamPreference参照

      wam preference
  3. WebAPI画面(wam/auth/user)
    WebAPI画面にて、wam/auth/userを開いて、Access-Control-Allow-Credentialにチェック、
    Access-Control-Allow-Originにサイト側のオリジンを設定します。

    wam webapi
  4. サイト毎のアクション権限設定

    1. iPLAss側で、コンテンツのURLパターンとユーザーの権限に応じて参照可否を制御可能です。ユースケースとして
      「特定のURLは特定のグループに所属しているユーザーのみ参照可能」
      とする場合の設定方法を以下に図示します。

    2. 権限情報メニュー>ロールで制御用ロール(ロールコード”wamrole”)を作成します。

      wam auth 1
    3. グループ(グループコード”wam_allow”)を作成します。

      wam auth 2
    4. 参照可能としたいユーザーを上記で作成したグループに所属させます。

      wam auth 3
    5. 最後にロールに対するアクション権限を設定します。
      以下の例では wam_role_name(ロールコード”wamrole”) を持つユーザーが denytest/* パスに対してアクセスを許可しています。

      wam auth 4
サイト毎にアクション権限を分ける場合は、この手順をサイト毎に実施します。

WAMの静的コンテンツ

ApacheでTomcatにリバースプロキシしている環境など、必要に応じてWAMの静的コンテンツをiPLAssサーバのApacheドキュメントフォルダに配置してください。
iplass-ee-wam-[バージョン].jarファイルを展開して、META-INF/resources/から取得できます。

2.5. WAM設定ファイル

WAM設定ファイル内の項目説明
項目 説明 デフォルト 変更要

IplassWamBaseUrl

iPLAssサーバ側のURLを指定します。
サイトとiPLAss間で通信する際に使用されます。
形式は以下のとおりです。

http[s]://<iPLAssのドメイン>/<コンテキスト名>/<テナント名>/

-

IplassWamRedirectUrl

サイトとiPLAss本体が同一サーバで稼動させる際に、定義します。 ブラウザからiPLAss本体にアクセスする際のURLを指定します。
形式はIplassWamBaseUrlと同じです。
(localhostでiPLAss本体と通信させる場合)

IplassWamBaseUrlの定義値

IplassWamCookieName

iPLAssサーバで使用されるCookieの名前を指定します。
サイトからiPLAssへ通信する際に、このCookieにIplassSiteCookieNameのCookieの値をセットして通信します。
iPLAss上ではセッションIDの格納に使用されます。

JSESSIONID

IplassWamCookieDomain

IplassWamCookieName項目のCookieのドメインを指定します。iPLAssサーバのドメインを指定してください。
サイトとiPLAss本体が同一サーバで稼動させる際には、定義不要です。

IplassWamCookiePath

IplassWamCookieName項目のCookieが有効なパスを指定します。

/

IplassWamAuthCallbackPath

iPLAssからサイトへリダイレクトする際に使用されるURLです。
当該URLは、サイトのコンテンツではなくWAMの処理実行に利用します。 コンテンツのURLに該当しない任意のURLを設定してください。

/<任意のパス>

IplassSiteId

サイト毎の一意なIDを指定します。会員サイトにしたいサイトが複数ある場合に、サイト毎を識別するために利用します。
後述のiPLAss Admin Consoleの設定(siteId)と一致させてください。

IplassSiteSecret

サイトのシークレットキーを指定します。
後述のiPLAss Admin Consoleの設定(siteSecret)と一致させてください。

IplassSiteCookieName

IplassWamCookieName項目はiPLAssサーバで使用されるCookie名に依存しています。
サイト側の他のCookie名と重複している場合、この項目で他の名前を指定可能です。

ipw

IplassSiteCookieDomain

IplassSiteCookieName項目のCookieのドメインを指定します。
サイトのドメインを指定してください。

IplassSiteCookiePath

IplassSiteCookieName項目のCookieが有効なパスを指定します。
指定する場合は以下の項目で指定したURLのパターンを包含するようにしてください。

* IplassProtectedPathPattern * IplassAddScriptTagPathPattern
* IplassWamAuthCallbackPath

IplassSiteScheme

サイトのURLスキームを指定します。
有効な値はhttpまたはhttpsです。
リバースプロキシによりHTTPSリクエストがHTTPリクエストとしてApacheに転送される環境で利用します。

https

IplassCharset

iPLAss側でコンテンツの参照権限チェックのパラメータに使用します。
JSONレスポンスにエンコードに使用されます。
サイトの文字コードと同じものを指定します。

utf-8

IplassUrlEncodeCharset

サイトからiPLAssへのHTTP通信の際、クエリパラメータにURLを含むことがあります。
URLエンコードに利用する文字セットを指定します。

utf-8

IplassCsrfTokenCookieName

WAMモジュールは、ログインする際にCSRF対策のトークンが発行されます。
そのトークンを保存するクッキー名を指定します。

_csrft

IplassProtectedPathPattern

サイトのコンテンツの参照制限をかけるURLのパターンを正規表現で指定します。

IplassHttpComponentProvider

HTTP通信実装クラスを指定します。
HTTP通信時のカスタマイズが必要なければ、特に指定する必要はありません。

CurlHttp ComponentProvider

IplassWamVerbose

ログの冗長化を設定する際に利用します。
On:冗長化する
Off:冗長化しない

Off

IplassAttributeMap

ヘッダ情報にとiPLAssのユーザ情報を格納する際に利用します。 設定した場合、ユーザ情報のプロパティに紐づく値がセットされます。
PHPなど、Apache上のWebアプリケーションは当該ヘッダを参照することでユーザ情報を取得できます。

設定例 x-wam-user-id accountId

IplassMapUserAttribute

上記のIplassAttributeMapの機能を有効にします。
On/Offで指定します。

Off

IplassIntegrateBasicAuth

基本認証のID/PWでiPLAssの認証を行います。認証に成功した場合、そのままサイトの画面が表示されます。
On/Offで指定します。

Off

IplassAllowedIp

WAMの認証処理をスキップできる接続元のIPアドレスを指定します。
以下のように複数指定可能です。
 IplassAllowedIp x.x.x.x
 IplassAllowedIp y.y.y.y
また、CIDR表記も可能です。
 IplassAllowedIp x.x.x.x/x
 IplassAllowedIp y.y.y.y/y

IplassAllowedIpHeaderName

IplassAllowedIpで許可対象のIPが含まれるかどうかチェックするリクエストヘッダの名前を指定します。
デフォルトはX-Forwarded-Forです。

X-Forwarded-For

IplassAllowedIpHeaderFieldIndex

IplassAllowedIpHeaderFieldIndexで指定したヘッダフィールドの
何番目の要素をチェックするか指定します。最終要素を0として、先頭に戻る方向に数えます。
例えば、X-Forwarded-Forに5つのIPアドレスが含まれており、後ろから2番目のIPアドレスを
チェックしたい場合、1と指定します。 デフォルトは一番後ろの要素です。

0 (0で最終要素を指します)

IplassLoadBalancerCookieName

iPLAss側のAPサーバが冗長化されており、ロードバランサのスティッキーセッション機能がCookieで実装されている場合に利用します。
そこで利用するCookie名を定義します。

IplassSiteLoadBalancerCookieName

IplassLoadBalancerCookieName項目のCookie名はロードバランサの実装に依存していますので、変更できない場合があります。
その際にサイト側の他のCookieと名称が重複する可能性があるので、変更したい場合に利用します。
例えば、当該項目をMYCOOKIE、IplassLoadBalancerCookieName項目をAWSALBと設定すると、AWSのELBから与えられたスティッキーセッション値xxxは、サイトのCookieとして
MYCOOKIE=xxx で保存され、ELBには AWSALB=xxx として渡されます。

IplassAddScriptTagPathPattern

WAMの機能により、HTTPレスポンスの末尾にscriptタグを追加することができます。
タグを追加したいURLのパターンを正規表現で記述します。

IplassJavaScriptPath

上記のscriptタグのsrc属性に設定するjsファイルのパスを指定します。
複数ファイルを読み込ませたい場合は、カンマ(,)で区切ります。
列挙した順番でsrc属性付のscriptタグが出力されます。

IplassJavaScriptSrc

上記のscriptタグで、タグ内部のjavascriptのソースを記述します。

IplassConnectionTimeout

WAMからiPLAssへの通信時(HTTP/HTTPS)のコネクションタイムアウト時間を設定します。
単位は秒です。

IplassSoTimeout

WAMからiPLAssへの通信時(HTTP/HTTPS)のソケットタイムアウト時間を設定します。
単位は秒です。

IplassProxyHost

WAMからiPLAssへの通信時(HTTP/HTTPS)に利用するプロキシサーバのホスト名を指定します。

IplassProxyPort

上記のプロキシサーバのポート番号を指定します。

IplassNoProxyHost

プロキシサーバを指定した場合に、プロキシを利用しないアドレスを指定します。

localhost

IplassSslVerifyPeer

iPLAssへのHTTP/HTTPS通信時、サーバ証明書の検証するか否かを設定します。
Off:検証をスキップ
On:検証する
※iPLAssのサーバ証明書がWAMの実行環境にバンドルされた証明書ではない場合、Offに設定します。

On

IplassSslVerifyHost

WAMからiPLAssへのHTTP/HTTPS通信時、通信先のドメイン名の検証(証明書のcommonNameの定義と一致しているか)するか否かを設定します。
Off:検証をスキップ
On:検証する
※テスト環境ではIplassSslVerifyPeer項目の設定値と同じ値を設定してください。

On

IplassSslVersion

SSLプロトコルバージョンを指定します。以下から設定可能です。 0:SSLv3かTLSv1から通信先で有効なプロトコルが使用されます
1:TLSv1.xから通信先で有効なプロトコルが使用されます
2:SSLv2が使用されます
3:SSLv3が使用されます
4:TLSv1.0が使用されます
5:TLSv1.1が使用されます
6:TLSv1.2が使用されます
何も設定しない場合、上記1が指定されたものとみなされます。

1(TLSv1.x)

IplassHttpVerbose

WAMモジュールのHTTP通信のログを冗長化します。
Off:冗長化しない
On:冗長化する

Off

IplassJavaScriptSrc/ IplassJavaScriptPath項目について
WAMの機能により、ApacheからのHTTPレスポンスボディの末尾にscriptタグが追加されます。
当該タグの目的は、JavaScriptでユーザー情報を取得し、ユーザ情報毎にコンテンツに変更を加える事に利用できます。
サンプルモジュールが「doc/example/js/iplasswam」にありますので、ご参照ください。
JavaEE版のMapUserAttributeについて
データの受領先をHTTPヘッダかリクエスト属性から選択可能です。 プラグインのxmlファイルで以下のように指定します。
- アプリケーションからHTTPヘッダで参照したい場合
<property name="mapType" value="HEADER" />
- リクエスト属性から参照したい場合
<property name="mapType" value="REQUEST" />
IplassIntegrateBasicAuthについて
当オプションは、Apache版のみのオプションです。
IplassJavaScriptSrc/ IplassJavaScriptPathサンプル
ファイル 説明 変更要

iplass-wam.js

WAMオブジェクトを定義したファイルです。
カスタマイズ不要です。

site.js

サイトのサンプルソースです。

site.css

サイトで利用するcssです。

jQuery-1.11.0.min.js

site.jsで利用するlibのファイルです。

2.6. WAM設定ファイルの例/Apache

Apacheの設定ファイルにおけるWAMモジュールのディレクティブの記述方法を示します。

基本的な設定

# WAMモジュールをロードします.
LoadModule iplass_wam_plugin_apache_module modules/mod_iplass_wam_plugin_apache.so

# Webサイトの識別情報です. iPLAss本体のAdminConsoleで設定した値と一致させてください.
IplassSiteId local
IplassSiteSecret 123

# Webサイトのドメインとプロトコルを指定します.
IplassSiteCookieDomain mysite.example.com
IplassSiteScheme https

# iPLAss本体のURLを指定します.
IplassWamBaseUrl https://my.iplass.jp/myiplassapp/mytenant/
IplassWamCookieDomain my.iplass.jp

# Webサイトで認証処理を組み込みたいパスパターンを正規表現で指定します.
IplassProtectedPathPattern "^/contents/.*$"

# 認証時にコールバックとして使うWebサイトのパスを指定します. そのサイトで未使用のパスとしてください.
IplassWamAuthCallbackPath /wamauthcallback

# iPLAssとWebサイトでWAMセッションをやり取りするためのCookie名とパスを指定します.
IplassWamCookieName JSESSIONID
IplassWamCookiePath /
IplassSiteCookieName ipw
IplassSiteCookiePath /

# CSRFトークンをやり取りするためのCookie名を指定します.
IplassCsrfTokenCookieName _csrft

# iPLAssからのJSONレスポンスの文字コードを指定します.
IplassCharset utf-8

ロードバランサのスティッキーセッションを利用する

iPLAssサーバを冗長化してロードバランサのスティッキセッションー機能を利用する環境では、
次のように設定することでWAMモジュールが当該Cookieをロードバランサに送付するようになります。

# ロードバランサのスティッキーセッションのCookie名を指定します.
IplassLoadBalancerCookieName myLB
# 上記クッキーに対応させるクッキー名を指定します.
IplassSiteLoadBalancerCookieName wamMyLB

この設定では、次のようにCookieが交換されます。

wam cookie
Figure 1. WAMモジュール、ロードバランサ、iPLAssのCookie連携

iPLAssのUserエンティティを連携する

Webサイト側のプログラム言語で独自に認可処理を組み込みたい場合、次のように設定します。
この例では、独自に定義したリクエストヘッダーにiPLAssから返却されたUserエンティティ情報が格納されるようになります。

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/>";
?>

特定のIPアドレスからのリクエストを常に許可する

Webサイトの社内ユーザなど、特定のIPから接続された場合のみ認証処理をスキップしたい場合は、次のように設定します。

IplassAllowedIp 192.168.1.0/24
IplassAllowedIp 192.168.2.0/24
IplassAllowedIpHeaderName X-Forwarded-For (1)
IplassAllowedIpHeaderFieldIndex 0 (2)
1 Webサーバの環境で接続元IPが付与されるヘッダ名を指定します。
2 X-Forwarded-For(あるいは指定した任意名ヘッダ)フィールドに複数IPアドレスが含まれる場合、
どの要素をチェックするか指定します. 最終要素のインデックスを0として先頭に戻る方向に数えます。
この例では、X-Forwarded-Forの一番右のIPアドレスがIplassAllowedIpのアドレスかどうかチェックします。

Apacheの基本認証と統合する

以下は、Apacheの基本認証と統合する設定です。基本認証に成功した場合、WAMの認証処理をスキップできます。

IplassIntegrateBasicAuth On

localhostのiPLAssとの連携する

以下は、Webサイトと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 パスのパターンを指定します。

開発環境向けの設定

WebサイトのサーバとiPLAssのサーバの間にプロキシがある環境では、次のように設定します。

IplassProxyHost my.proxy.host
IplassProxyPort 8080

iPLAssサーバに自己署名のサーバ証明書を利用する場合、次のように設定します。

IplassSslVerifyPeer Off
IplassSslVerifyHost Off

WAMモジュールのデバッグログを有効にする場合、次のように設定します。
合わせて、Apache本体のログレベルをdebugに指定してください。

IplassWamVerbose On
IplassHttpVerbose On

LogLevel debug

2.7. WAM設定ファイルの例/IIS

IIS版WAMモジュールでは、xmlファイル「IplassWamPlugin.xml」を使ってWAMモジュールを設定します。
propertyタグのname属性に設定項目名、value属性に値を定義します。
WAM機能の設定は、type属性がWamPluginConfigのcomponentタグで、
SSLやプロキシなどHTTP通信に関わる設定は、HttpComponentConfigのcomponentタグで定義します。
設定項目の名前は、Apache版のものから頭の"Iplass"を省略して読み替えてください。

サンプル

<?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"/>

    <!-- 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 -->
    <property name="sslCertificateValidation" value="True"/>
  </component>
</componentDefinition>

2.8. WAM設定ファイルの例/JavaEE

JavaEE版WAMモジュールでは、xmlファイル(iplass-wam-plugin.xml)を使ってWAMモジュールを設定します。
propertyタグのname属性に設定項目名、value属性に値を定義します。
WAM機能の設定は、type属性がWamPluginConfigのcomponentタグで、
SSLやプロキシなどHTTP通信に関わる設定は、HttpComponentConfigのcomponentタグで定義します。
設定項目の名前は、Apache版のものから頭の"Iplass"を省略して読み替えてください。

サンプル

<?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" />

        <!-- Webサイトのドメイン/プロトコル -->
        <property name="siteCookieDomain" value="mysite.example.com" />
        <property name="siteScheme" value="https" />

        <!-- 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>

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

2.10. 認証処理の流れとステータスコード

WAMモジュールを利用した認証処理ではiPLAssとの多くの通信が行われます。
以下、認証処理の流れとエラー時のステータスコードを示します。

処理の流れ

wam sequence1
Figure 2. 未認証時アクセス~ログイン画面まで
  1. ユーザがWebサイトにアクセスします。

  2. Apacheがコンテンツ生成処理前に、WAMモジュールをフックします。

  3. リクエストが設定したパスパターンにマッチした場合、iPLAssサーバに問合せします。

  4. 認証の問合せ結果を返却します。認証済みの場合、ユーザ情報も一緒に返却されます。

  5. ユーザ情報がある場合、ここで元のリクエストヘッダに付加します。

  6. 問合せ結果に応じて、以下の画面遷移を行います。

    • 未認証の場合: ログインページへリダイレクト

    • 認証済みの場合: 元のリクエストに対するコンテンツを応答

    • 認証済みで権限がない場合: 権限エラーページへリダイレクト

    • その他: エラーとして、状況に応じたステータスコードをApacheコアモジュールに渡します。
      通常のコンテンツ処理や後続Apacheモジュール(PHP等)の処理は実行されません。

      wam sequence2
      Figure 3. ログイン画面~コンテンツへのアクセスまで
  7. ユーザがログインページでID、パスワードを入力します。

  8. ログイン認証に成功すると、WebサイトのWAMモジュール専用URLパスへリダイレクトされます。

  9. iPLAssにWAMセッションの払出しをリクエストします。上記②のリダイレクトパスでもらった認証コード値、
    iPLAssに予め登録しておいたWebサイトのサイトID、サイトシークレットがiPLAssサーバに送られます。

  10. iPLAssからWAMモジュールにWAM専用のセッションIDが返却されます。このセッションIDがサイトドメインの
    クッキーへセットされ、以降、iPLAssとのリクエストのクッキーに使用されます。

  11. 元のリクエストパスへリダイレクトします。 再度②~⑤の処理が発生しますが、
    WAMセッションIDがあるため認証済みとして扱われます。

ステータスコード

iPLAssの許可API(permission)、トークンAPI(token)の返却結果によっては、WAMモジュールからApacheにエラーのステータスコードを指示します。
その結果、コンテンツ処理が中断されてエラーページが表示されます。以下、ステータスコード及び想定される状況です。

上記番号 ステータスコード 状況

400

WAMモジュールからiPLAssの許可APIへ不正な形式でリクエストしています。
本体とWAMモジュールのバージョン間の不整合が考えられます。

503

iPLAssの許可APIから正常な応答を得られていません。iPLAssサーバやDB、ネットワークの障害等が考えられます。

403

CSRFトークンのチェックに失敗しています。クッキーに異常がないか、サーバのスティッキーセッションが機能しているか確認してください。

503

iPLAssのトークンAPIから正常な応答を得られていません。iPLAssサーバやDB、ネットワークの障害等が考えられます。

WAM(Web Account Manager)