WAM(Web Account Manager)

コンシューマ向けサイトの会員をiPLAss上で管理する機能として、WAM(Web Account Manager)機能を提供します。
WAM機能は、WAMモジュールWAMプラグインモジュール の2つのモジュールから構成されます。

WAMモジュール

iPLAss framework上で動作し、会員管理を行うモジュールです。会員管理機能として、認証機能、アカウント情報のセルフメンテナンス機能、コンテンツの閲覧権限チェック機能などを提供します。

WAMプラグインモジュール

HTTPサーバー上で動作し、サイトコンテンツへのアクセスをフックして閲覧制御を行うモジュールです。WAMモジュールとHTTP連携し、未ログインユーザーのログイン画面へのリダイレクト、閲覧権限に応じたコンテンツアクセス制御などを行います。
Apache HTTP ServerIISJavaEE ServerServerless(JavaScript) で動作するプラグインモジュールを標準で提供します。

1. WAMモジュール

iPLAss framework上で動作し、会員管理を行うモジュールです。会員管理機能として、認証機能、アカウント情報のセルフメンテナンス機能、コンテンツの閲覧権限チェック機能などを提供します。

1.1. 認証機能

コンシューマ向けサイトの会員認証を行います。 認証機能として、ID・パスワード認証、RememberMe機能、2段階認証、ソーシャルログインを提供します。

  • ID・パスワード認証
    mtp.auth.User エンティティとして管理するユーザー情報に対して、ID・パスワードで認証を行う機能を提供します。
    認証済みのセッション情報をCookieに格納し、一度認証すれば、2回目以降はユーザーIDとパスワードを入力しなくても直接サイトコンテンツへアクセスできるようになります。

  • RememberMe機能
    ログイン後、一定期間の間、認証情報の入力を省略するRemember Me機能を提供します。
    詳細はRemember Meを参照してください。

  • 2段階認証
    メールやSMSによるワンタイムコードによる認証、2段階認証アプリ(Google Authenticator等)による認証、あらかじめ設定した質問に対する答えでの認証、 X509規格に基づいたクライアント証明書での認証機能を提供します。
    詳細は2段階認証を参照してください。

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

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

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

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

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

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

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

1.3. セルフメンテナンス

登録したユーザー情報をユーザー自らがメンテナンスする機能を提供します。また、メールアドレスを変更した場合、変更後のメールアドレスへアクティベーション用のURLを通知します。
Preferenceのsettingsを参照し、各項目を設定してください。

1.4. パスワードリカバリ

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

1.5. WAMモジュールの設定

service-config

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

Preference

WAMモジュールの設定にはPreference機能を利用します。

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

wam/wamPreference

WAM全般の設定です。

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

wamUserIdentifierRole

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

WAM

homeUrl

認証後にリダイレクトされる画面のURL。
サイトのホームページを指定してください。iPLAssサーバー内のページである必要はありません。wam/index にサンプル実装が定義されています。

https://[your_apps_home_page_fqdn]/

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 の実装クラス、またはGroovyScriptを指定します。

initialGroup

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

WAM

activatedGroup

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

initialAccountPolicy

初期設定するアカウントポリシー(認証ポリシー)

activatedAccountPolicy

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

captcha

org.iplass.wam.auth.signup.Captcha の実装クラスを指定します。 標準で以下の実装を提供します。

org.iplass.wam.auth.signup.captchas.ReCaptcha

ReCAPTCHAを使用します。 version 項目に使用するバージョンを指定します。
使用可能なバージョンは、 V2V3ENTERPRISE_SCOREENTERPRISE_CHECKBOX です。

signUpLayoutName

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

signUpLayout

activateByOutOfBandVerification

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

true

authenticationPolicyWithoutTwoStepVerification

2段階認証の有効化/無効化(2段階認証ポリシーの切り替え)で利用する認証ポリシー(2段階認証が設定されていない認証ポリシー)

authenticationPolicyWithTwoStepVerification

2段階認証の有効化/無効化(2段階認証ポリシーの切り替え)で利用する認証ポリシー(2段階認証が設定されている認証ポリシー)

settings

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

項目 説明 初期値

settingsLayoutName

個人情報の編集時に利用する mtp.auth.User エンティティの詳細画面定義のレイアウト名(View名)

showAuthApplication

セルフメンテナンス画面にアプリケーション情報を表示するかを指定します。
表示する設定にした場合、ユーザーに設定されているOAuthのクライアント情報のメンテナンス(削除)が可能になります。

true

showRememberMe

セルフメンテナンス画面に自動ログイン情報を表示するかを指定します。
表示する設定にした場合、ユーザーがRememberMeを設定しているか、また設定している場合にメンテナンス(削除)が可能になります。

true

verification

メール、SMSなどのユーザーの本人確認(アクティベーション)に利用する項目に関する設定です。

項目 説明 初期値

type

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

email

propertyName

検証に利用する mtp.auth.User(および、wam.auth.UserSignUp)エンティティのプロパティ名

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

管理対象サイトのドメイン名を設定します。

[homeUrlDomain]

httpsOnly

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

false

mappingActionPath

管理対象サイトのコンテンツ閲覧権限チェックに利用されるiPLAssのAction権限設定で、Action名と管理対象サイトのコンテンツのURLパスをマッピングする際にAction名のprefixとして利用される文字列を設定します。

local

userInfoSupplier

org.iplass.wam.siteauth.UserInfoSupplier の実装クラスを指定します。ユーザー情報取得WebApiで返却する情報をカスタマイズする際に利用します。
未指定の場合、org.iplass.wam.siteauth.DefaultUserInfoSupplier が適用されます。DefaultUserInfoSupplierでは、 publicUserProperty で指定した mtp.auth.User エンティティのプロパティを返却するように実装されています。

publicUserProperty

ユーザー情報取得WebApiで返却するユーザー情報に含まれる mtp.auth.User エンティティのプロパティ名を指定します。複数指定可能です。

authCallbackUrl

WAM機能の認証フローにおいて、ログイン完了後にiPLAssから管理対象サイトへリダイレクトする際に使用されるURLです。 当該URLは、サイトコンテンツのURLに該当しない任意のURLを設定してください。

形式は以下の通りです。

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

WAMプラグインモジュールにおける設定と異なり、URL全体(http[s]~)を記述する点に注意してください。 /<任意のパス> の部分をWAMプラグインモジュールの設定と一致させます。

http://[homeUrlDomain]/wamauthcallback

idProvider(Facebook)

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

Facebook側にはリダイレクト先として以下の3つのURLを設定してください。

http(s)://[server]/[appContext]/[tenantName]/wam/auth/idpcb
http(s)://[server]/[appContext]/[tenantName]/wam/signup/idpcb/[providerName]
http(s)://[server]/[appContext]/[tenantName]/wam/settings/idpcb/[providerName]
Runtime Class Name
org.iplass.wam.auth.idp.facebook.FacebookIdProvider
項目 説明 初期値

clientId

アプリで発行されたApp ID

yourClientId

clientSecret

アプリで発行されたApp Secret

yourClientSecret

iconUrl

ログイン画面表示用ラベルにロゴ画像を表示する場合に設定します。設定する値は画像のURLです。
URLの指定方法については、URLの指定を参照してください。

-

buttonLabel

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

<span> Facebook</span>

buttonStyle

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

color: #3b5998

supportSelfRegistration

ユーザー自らIdProviderとの紐づけ、解除を設定可能とするか否か

true

idProvider(Twitter)

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

Twitter側にはCallback先として以下の3つのURLを設定してください。

http(s)://[server]/[appContext]/[tenantName]/wam/auth/idpcb
http(s)://[server]/[appContext]/[tenantName]/wam/signup/idpcb/[providerName]
http(s)://[server]/[appContext]/[tenantName]/wam/settings/idpcb/[providerName]
Runtime Class Name
org.iplass.wam.auth.idp.twitter.TwitterIdProvider
項目 説明 初期値

consumerKey

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

yourConsumerKey

consumerSecret

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

yourConsumerSecret

iconUrl

ログイン画面表示用ラベルにロゴ画像を表示する場合に設定します。設定する値は画像のURLです。
URLの指定方法については、URLの指定を参照してください。

-

buttonLabel

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

<span> Twitter</span>

buttonStyle

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

color: #4099FF

supportSelfRegistration

ユーザー自らIdProviderとの紐づけ、解除を設定可能とするか否か

true

idProvider(Google)

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

idProvider(Google)の替わりに、 idProvider(汎用OpenID Provider) を利用することを推奨します。認証連携におけるきめ細かな設定が可能です。

OpenID Provider側にはリダイレクト先として以下の3つのURLを設定してください。

http(s)://[server]/[appContext]/[tenantName]/wam/auth/idpcb
http(s)://[server]/[appContext]/[tenantName]/wam/signup/idpcb/[providerName]
http(s)://[server]/[appContext]/[tenantName]/wam/settings/idpcb/[providerName]
Runtime Class Name
org.iplass.wam.auth.idp.openidconnect.OpenIdConnectIdProvider
項目 説明 初期値

providerName

プロバイダ名

Google

authUri

認証先のURL

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

tokenUri

トークンのURL

https://oauth2.googleapis.com/token

userInfoUri

ユーザー情報取得URL

https://openidconnect.googleapis.com/v1/userinfo

clientId

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

yourClientId

clientSecret

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

yourClientSecret

iconUrl

ログイン画面表示用ラベルにロゴ画像を表示する場合に設定します。設定する値は画像のURLです。
URLの指定方法については、URLの指定を参照してください。

-

buttonLabel

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

<span> Google</span>

buttonStyle

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

color: #dd4b39

supportSelfRegistration

ユーザー自らIdProviderとの紐づけ、解除を設定可能とするか否か

true

subjectName

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

name

attributeMapping

プロバイダ側のプロフィールの属性値と iPLAss上の User エンティティのプロパティの値をマッピングする設定

-

propertyName

User エンティティのプロパティ(メールアドレス)

mail

profileAttributeName

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

email

attributeMapping

プロバイダ側のプロフィールの属性値と iPLAss上の User エンティティのプロパティの値をマッピングする設定

-

propertyName

User エンティティのプロパティ(ユーザーの名)

firstName

profileAttributeName

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

given_name

attributeMapping

プロバイダ側のプロフィールの属性値と iPLAss上の User エンティティのプロパティの値をマッピングする設定

-

propertyName

User エンティティのプロパティ(ユーザーの姓)

lastName

profileAttributeName

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

family_name

attributeMapping

プロバイダ側のプロフィールの属性値と iPLAss上の User エンティティのプロパティの値をマッピングする設定

-

propertyName

User エンティティのプロパティ(ユーザーの言語)

language

profileAttributeName

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

locale

idProvider(Yahoo)

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

idProvider(Yahoo)の替わりに、 idProvider(汎用OpenID Provider) を利用することを推奨します。認証連携におけるきめ細かな設定が可能です。

OpenID Provider側にはリダイレクト先として以下の3つのURLを設定してください。

http(s)://[server]/[appContext]/[tenantName]/wam/auth/idpcb
http(s)://[server]/[appContext]/[tenantName]/wam/signup/idpcb/[providerName]
http(s)://[server]/[appContext]/[tenantName]/wam/settings/idpcb/[providerName]
Runtime Class Name
org.iplass.wam.auth.idp.openidconnect.OpenIdConnectIdProvider
項目 説明 初期値

providerName

プロバイダ名

Yahoo!

authUri

認証先のURL

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

useNonce

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

true

tokenUri

トークンのURL

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

tokenEndPointAuthType

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

BASIC

clientId

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

yourClientId

clientSecret

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

yourClientSecret

userInfoUri

ユーザー情報取得URL

https://userinfo.yahooapis.jp/yconnect/v2/attribute

subjectName

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

name

iconUrl

ログイン画面表示用ラベルにロゴ画像を表示する場合に設定します。設定する値は画像のURLです。
URLの指定方法については、URLの指定を参照してください。

-

buttonLabel

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

<span> Yahoo!</span>

buttonStyle

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

color: #ff0033

supportSelfRegistration

ユーザー自らIdProviderとの紐づけ、解除を設定可能とするか否か

true

attributeMapping

プロバイダ側のプロフィールの属性値と iPLAss上の User エンティティのプロパティの値をマッピングする設定

-

propertyName

User エンティティのプロパティ(メールアドレス)

mail

profileAttributeName

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

email

attributeMapping

プロバイダ側のプロフィールの属性値と iPLAss上の User エンティティのプロパティの値をマッピングする設定

-

propertyName

User エンティティのプロパティ(ユーザーの名)

firstName

profileAttributeName

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

given_name

attributeMapping

プロバイダ側のプロフィールの属性値と iPLAss上の User エンティティのプロパティの値をマッピングする設定

-

propertyName

User エンティティのプロパティ(ユーザーの姓)

lastName

profileAttributeName

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

family_name

attributeMapping

プロバイダ側のプロフィールの属性値と iPLAss上の User エンティティのプロパティの値をマッピングする設定

-

propertyName

User エンティティのプロパティ(ユーザーの言語)

language

profileAttributeName

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

locale

idProvider(汎用OpenID Provider)

OpenID Connect準拠のOpenID Providerのアカウントで認証を行う際の設定です。 認証連携における詳細の設定は OpenIDConnect定義 にて行います。

OpenID Provider側にはリダイレクト先として以下の3つのURLを設定してください。

http(s)://[server]/[appContext]/[tenantName]/wam/auth/idpcb
http(s)://[server]/[appContext]/[tenantName]/wam/signup/idpcb/[providerName]
http(s)://[server]/[appContext]/[tenantName]/wam/settings/idpcb/[providerName]
Runtime Class Name
org.iplass.wam.auth.idp.oidc.OpenIdConnectIdProvider
項目 説明 設定例

providerName

プロバイダ名

okta

definitionName

OpenIDConnect定義の定義名

okta

definitionNameResolver

org.iplass.wam.auth.idp.oidc.OpenIdConnectDefinitionNameResolver の実装クラスを指定します。 OpenIDConnect定義名を動的に解決したい場合に利用します。
未指定の場合はdefinitionNameに指定されたOpenIDConnect定義が利用されます。

sample.CustomDefinitionNameResolver

iconUrl

ログイン画面表示用ラベルにロゴ画像を表示する場合に設定します。設定する値は画像のURLです。
URLの指定方法については、URLの指定を参照してください。

path/to/icon.png

buttonLabel

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

<span>Okta</span>

buttonStyle

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

color: #007dc1

supportSelfRegistration

ユーザー自らIdProviderとの紐づけ、解除を設定可能とするか否か

true

attributeMapping

プロバイダ側のプロフィールの属性値と iPLAss上の User エンティティのプロパティの値をマッピングする設定。attributeMappingは複数の設定が可能。

propertyName

User エンティティのプロパティ名を指定

mail

profileAttributeName

プロバイダ側の属性名を指定

email

idProvider(SAML)

SAML準拠のID Providerのアカウントで認証を行う際の設定です。 認証連携における詳細の設定は SAML定義(ServiceProviderの設定) にて行います。

なお、SAMLIdProviderはユーザー自身によるアカウントの紐づけ、解除操作には対応しておりません。事前のプロビジョニング、もしくはAutoUserProvisioningHandlerの仕組みにてJITプロビジョニングする必要があります。

Runtime Class Name
org.iplass.wam.auth.idp.saml.SamlIdProvider
項目 説明 設定例

providerName

プロバイダ名

okta

definitionName

SAML定義の定義名

okta

definitionNameResolver

org.iplass.wam.auth.idp.saml.SamlDefinitionNameResolver の実装クラスを指定します。 SAML定義名を動的に解決したい場合に利用します。
未指定の場合はdefinitionNameに指定されたSAML定義が利用されます。

sample.CustomDefinitionNameResolver

iconUrl

ログイン画面表示用ラベルにロゴ画像を表示する場合に設定します。設定する値は画像のURLです。
URLの指定方法については、URLの指定を参照してください。

path/to/icon.png

buttonLabel

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

<span>Okta</span>

buttonStyle

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

color: #007dc1

1.6. 初期設定

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

WAMモジュールの追加

mtp-service-configの編集

mtp-service-configに以下を追記し、WAMモジュールの設定ファイルを読み込めるようにします。 iplass-ee-skeletonを利用している場合は該当箇所のコメント化を解除します。

<inherits>/wam-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)にします。

initialAccountPolicy として利用するアカウントポリシーでは、次の設定を有効化する必要があります。

Create Account with Specific Password

パスワードリカバリ機能を利用する場合、PreferenceactivatedAccountPolicy(未指定の場合は initialAccountPolicy)に設定されているアカウントポリシーでは、次の設定を有効化する必要があります。

Reset Password with Specific Password

権限設定

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

グループ

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

ロール

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

ロール条件を追加し、前項で作成したグループに所属していることを条件にします。

user.memberOf("WAM")
Entity権限

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

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

mtp.auth.Group

mtp.auth.Rank

mtp.auth.User

Action権限

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

画面定義

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

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

Preference

Admin ConsoleのPreference設定画面で wam/wamPreference の設定を行います。各項目の詳細はPreferenceを参照してください。

wam preference

管理対象サイト用Action権限

WAM機能では、管理対象サイトのコンテンツ閲覧権限チェックをAction権限を用いて行います。
Action名と管理対象サイトのコンテンツのURLパスをマッピングする際、Preferenceの当該管理対象サイトの manageSite > mappingActionPath の値がAction名のprefixとして利用されます。

例)下記URLの管理対象サイトのコンテンツの閲覧制御する場合

当該管理対象サイトの manageSite > mappingActionPath の値が local だった場合には、以下のAction名としてAction権限がチェックされます。

local/demo/test
バインド変数

Action権限の許可条件の設定において、 parameter には管理対象サイトのコンテンツ閲覧時のURLのクエリパラメータがバインドされます。

def value = parameter.クエリパラメータのキー

def value = parameter.getValue("クエリパラメータのキー")

request.externalResourceParameter には org.iplass.wam.siteauth.URIExternalResourceParameter のインスタンスがバインドされます。
JSON形式の requestInfo をパラメータに含めてWAMの権限チェックWebApiを呼び出すことで、以下のような許可条件を設定することができます。
また、許可条件で request.externalResourceParameter.responseStatus に任意の戻り値を指定することで、条件に沿った戻り値が返却されます。

if(request.externalResourceParameter.requestInfo.get("clientIp").equals("xxx.xxx.xxx.xxx")){ request.externalResourceParameter.responseStatus = "IP_ALLOW"; true;}
(例)

ユースケースとして、 「特定のURLパス配下(denytest/*)のコンテンツを、特定のグループ(グループコード : wam_allow)に所属しているユーザーが閲覧可能にする」 といった制御を行う場合の設定方法を説明します。

  • グループ

グループ(グループコード : wam_allow)を作成します。

wam auth 1

特定のURLパス配下(denytest/*)のコンテンツを参照可能としたいユーザー(サイト会員)を作成したグループに所属させます。

wam auth 2
  • ロール

制御用ロール(ロールコード : wamrole)を作成します。
ロール条件を追加し、前項で作成したグループに所属していることを条件にします。

wam auth 3
  • Action権限設定

最後に作成したロールに対するAction権限を設定します。
特定のロール(ロールコード : wamrole) を持つユーザーに対して、 denytest/* パスに対するアクセスを許可する設定をしています。

Action名のprefixには、実際のPreferenceの当該管理対象サイトの manageSite > mappingActionPath の値を設定してください。以下の例では、 local が設定されている前提です。

wam auth 4

ユーザー情報取得WebApi

WAMモジュールでは、ユーザー情報(サイト会員)の取得が可能なWebApi(wam/auth/user)を標準で提供しています。

サイトID(パラメータ名 : siteid) 、サイトシークレット(パラメータ名 : sitesecret) をパラメータに含めてユーザー情報取得WebApiを呼び出すと、Preferenceの当該管理対象サイトの manageSite > publicUserProperty の設定に基づきユーザー情報を返却します。

ユーザー情報取得WebApiを利用するかつ、クロスオリジンでのWebApi呼び出しとなる場合には、 Admin ConsoleのWebApi画面で wam/auth/user を開き、 Access-Control-Allow-Credentials にチェックを入れて Access-Control-Allow-Origin にサイト側のオリジンを設定する必要があります。

wam webapi

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

HTTPサーバー上で動作し、サイトコンテンツへのアクセスをフックして閲覧制御を行うモジュールです。WAMモジュールとHTTP連携し、未ログインユーザーのログイン画面へのリダイレクト、閲覧権限に応じたコンテンツアクセス制御などを行います。
Apache HTTP ServerIISJavaEE ServerServerless(JavaScript) で動作するプラグインモジュールを標準で提供します。

2.1. 処理フロー

WAMプラグインモジュールは、サイトコンテンツへのアクセスをフックし、WAMモジュールとHTTP連携して認証・認可の処理を行います。
以下に Apache のWAMプラグインモジュール実装における、認証・認可処理の流れとエラー時のステータスコードを示します。Apache 以外の実装も概ね同様のフローで処理が行われます。

認証・認可処理の流れ

wam sequence1
Figure 1. 未認証時アクセス~ログイン画面まで
  1. ユーザーが管理対象サイトのコンテンツにアクセスします。

  2. Apacheがコンテンツ生成処理を実行する前に、WAMプラグインモジュールの認証・認可ロジックをフックします。

  3. サイトコンテンツ閲覧時のアクセスURLが、設定上、参照制限をかけるパスとして設定されている場合、WAMモジュールに閲覧権限の有無を問い合わせます (WAMモジュールの許可APIへリクエスト)。

  4. 閲覧権限チェックの問い合わせ結果を返却します。認証済みの場合には、ユーザー情報も併せて返却されます(ユーザー情報の返却有無や返却される情報は、WAMプラグインモジュールの設定に依存します)。

  5. 認証済みかつ、ユーザー情報が返却された場合、元のHTTPリクエストヘッダにユーザー情報を付加します。

  6. 閲覧権限チェックの問い合わせ結果に応じて、以下の画面遷移を行います。

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

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

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

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

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

  8. ログインに成功すると、管理対象サイトのWAMモジュール用URLパス(manageSite > authCallbackUrl)へリダイレクトされます。

  9. WAMモジュールにアクセストークン( = iPLAss上のセッションID)の払出しをリクエストします(WAMモジュールのトークンAPIへリクエスト)。⑧のリダイレクト時にクエリパラメータにセットされた認可コード、WAMプラグインモジュールに設定した管理対象サイトのサイトID、サイトシークレットがパラメータとしてWAMモジュールに送信されます。

  10. WAMモジュールからWAMプラグインモジュールにアクセストークン( = iPLAss上のセッションID)が返却されます。このアクセストークンが管理対象サイト側ドメインのCookieへと格納され、以降、WAMモジュールへの閲覧権限チェックリクエスト時にCookieとして送信するセッションIDとして使用されます。

  11. 元のコンテンツURLへリダイレクトします。 再度②~⑤の処理が発生しますが、アクセストークン( = iPLAss上のセッションID)がCookieとして送信され、認証済みセッションとして扱われます。

エラー時ステータスコード

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

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

400

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

503

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

403

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

503

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

2.2. WAMプラグインモジュールの設定

WAMプラグインモジュールの設定項目の説明です。WAMプラグインモジュールの設定可能項目/設定方法は各実装によって異なります。

Apache版の場合、各設定項目名はパスカル記法となっており、prefixに Iplass が必要です。
項目 説明 デフォルト値 要変更 Apache IIS JavaEE Serverless

wamBaseUrl
(IplassWamBaseUrl)

WAMモジュールが稼働するiPLAssサーバー側のURLを指定します。WAMプラグインモジュールとWAMモジュール間でHTTP通信する際に使用されます。

形式は以下の通りです。
http[s]://<iPLAssのドメイン>/<サーブレットコンテキストパス>/<テナント名>/

-

wamRedirectUrl
(IplassWamRedirectUrl)

ブラウザからWAMモジュールにリダイレクトする際のベースURLを指定します。

形式は以下の通りです。
http[s]://<iPLAssのドメイン>/<サーブレットコンテキストパス>/<テナント名>/

wamBaseUrl の定義値

-

wamCookieName
(IplassWamCookieName)

iPLAssサーバー上でセッションIDとして使用されるCookie名を指定します。
WAMプラグインモジュールからWAMモジュールへ通信する際、このCookie名に管理対象サイトがCookieに保持するアクセストークンを値としてセットして通信します。

JSESSIONID

-

wamCookieDomain
(IplassWamCookieDomain)

iPLAssサーバー上でセッションIDとして使用されるCookieのドメインを指定します。
WAMモジュール( = iPLAssサーバー)が稼働するドメインを指定してください。
WAMプラグインモジュールとWAMモジュールが同一ドメインで稼動する場合には、定義不要です。

-

-

-

wamCookiePath
(IplassWamCookiePath)

iPLAssサーバー上でセッションIDとして使用されるCookieが有効なパスを指定します。

/

-

-

wamAuthCallbackPath
(IplassWamAuthCallbackPath)

WAM機能の認証フローにおいて、ログイン完了後にWAMモジュールから管理対象サイトへリダイレクトする際に使用されるURLです。 当該URLは、サイトコンテンツのURLに該当しない任意のURLを設定してください。

形式は以下の通りです。
/<任意のパス>

-

siteId
(IplassSiteId)

管理対象サイトを識別するための一意なIDを指定します。
Preferenceの当該管理対象サイトの manageSite > siteId と一致させてください。

-

siteSecret
(IplassSiteSecret)

管理対象サイトのシークレットキーを指定します。
Preferenceの当該管理対象サイトの manageSite > siteSecret と一致させてください。

-

siteCookieName
(IplassSiteCookieName)

アクセストークン( = iPLAss上のセッションID)を管理対象サイト側のドメインにCookieとして発行する際のCookie名を指定します。

ipw

-

siteCookieDomain
(IplassSiteCookieDomain)

アクセストークン( = iPLAss上のセッションID)を管理対象サイト側のドメインにCookieとして発行する際のCookieのDomain属性を指定します。

-

siteCookiePath
(IplassSiteCookiePath)

アクセストークン( = iPLAss上のセッションID)を管理対象サイト側のドメインにCookieとして発行する際のCookieの有効パスを指定します。

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

  • protectedPathPattern

  • addScriptTagPathPattern

  • wamAuthCallbackPath

-

-

siteCookieSameSite

アクセストークン( = iPLAss上のセッションID)を管理対象サイト側のドメインにCookieとして発行する際のCookieのSameSite属性を指定します。

-

-

-

-

-

siteScheme
(IplassSiteScheme)

管理対象サイトのURLスキームを指定します。
有効な値は http または https です。

https

-

charset
(IplassCharset)

WAMモジュール側でのコンテンツ閲覧権限チェック時のパラメータのエンコードやJSONレスポンスのエンコードに使用されます。
管理対象サイトの文字コードと同じものを指定します。

utf-8

-

csrfTokenCookieName
(IplassCsrfTokenCookieName)

一連の認証処理時のCSRF対策用トークンを管理対象サイト側のドメインにCookieとして発行する際のCookie名を指定します。

_csrft

-

protectedPathPattern
(IplassProtectedPathPattern)

管理対象サイトのコンテンツについて、閲覧制限をかけるURLのパスパターンを正規表現で指定します。

windows環境において、ファイルパスはcase-insensitiveとなるのでURLパターンの記述の際にはそのことに留意が必要です。また、HTTPサーバの機能やモジュール等でパスの変換処理を行う際も留意が必要です。

-

-

protectedPattern

管理対象サイトのコンテンツについて、閲覧制限をかけるパターンを ドメイン × パスパターンの正規表現 で指定します。複数指定可能です。
当該設定項目のいずれのドメインにも一致しないドメインでのアクセスの場合、認証・認可処理はスキップされます。

Serverless版での設定例
protectedPattern: [
  { domain: "mysite.example.com", pathPattern: /^\/contents\/.*$/ },
],

-

-

-

-

httpComponentProvider
(IplassHttpComponentProvider)

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

各実装の標準HttpComponentProvider

-

-

wamVerboseLog
(IplassWamVerbose)

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

false(Off)

-

-

-

mapUserAttribute
(IplassMapUserAttribute)

許可APIでコンテンツ閲覧が許可された場合、その後のコンテンツへのリクエスト時のHTTPリクエストヘッダーにユーザー情報をセットする機能を有効化するかを指定します。
true(On) : 有効化する
false(Off) : 有効化しない

false(Off)

-

attributeMap
(IplassAttributeMap)

許可APIでコンテンツ閲覧が許可された場合、その後のコンテンツへのリクエスト時のHTTPリクエストヘッダーにユーザー情報をセットする場合に利用します。 リクエストヘッダー名と値として設定する User エンティティのプロパティ名を指定します。
コンテンツを動的に生成する場合、コンテンツサーバーは当該リクエストヘッダーを参照することでユーザー情報を取得できます。

Apache版での設定例
IplassAttributeMap x-wam-user-id accountId

-

-

allowedIp
(IplassAllowedIp)

WAMの認証・認可処理をスキップできる接続元のIPアドレスを指定します。

-

-

allowedIpHeaderName
(IplassAllowedIpHeaderName)

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

X-Forwarded-For

-

allowedIpHeaderFieldIndex
(IplassAllowedIpHeaderFieldIndex)

allowedIpHeaderName で指定したリクエストヘッダーフィールドを , で区切った場合の何番目の要素をチェックするか指定します。最終要素を0として、先頭に戻る方向に数えます。
例えば、X-Forwarded-Forの値の内、後ろから2番目のIPアドレスをチェックしたい場合、1と指定します。 デフォルトは最終要素です。

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

-

loadBalancerCookieName
(IplassLoadBalancerCookieName)

WAMモジュールが稼働するiPLAssサーバーが冗長化されており、ロードバランサーのスティッキーセッション機能が有効化されている場合に、スティッキーセッション機能で用いられるCookie名を指定します。

-

-

siteLoadBalancerCookieName
(IplassSiteLoadBalancerCookieName)

WAMモジュールが稼働するiPLAssサーバーが冗長化されており、ロードバランサーのスティッキーセッション機能が有効化されている場合に、スティッキーセッション機能で用いられるCookieを管理対象サイト側のドメインのCookieとして格納する際のCookie名を指定します。

例えば、当該項目を MYCOOKIE 、loadBalancerCookieName項目を AWSALB と設定すると、AWSのALBから与えられたスティッキーセッション値xxxは、管理対象サイト側のドメインのCookieとして MYCOOKIE=xxx で保存され、ALBには AWSALB=xxx として変換されて渡されます。

-

-

siteLoadBalancerCookieDomain

ロードバランサーのスティッキーセッション機能が有効化されている場合に、スティッキーセッション機能で用いられるCookieを管理対象サイト側のドメインのCookieとして格納する際のDomain属性を指定します。

-

-

-

-

-

siteLoadBalancerCookiePath

ロードバランサーのスティッキーセッション機能が有効化されている場合に、スティッキーセッション機能で用いられるCookieを管理対象サイト側のドメインのCookieとして格納する際の有効パスを指定します。

/

-

-

-

-

siteLoadBalancerCookieDomain

ロードバランサーのスティッキーセッション機能が有効化されている場合に、スティッキーセッション機能で用いられるCookieを管理対象サイト側のドメインのCookieとして格納する際のSameSite属性を指定します。

-

-

-

-

-

addScriptTagPathPattern
(IplassAddScriptTagPathPattern)

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

-

-

javaScriptPath
(IplassJavaScriptPath)

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

-

-

javaScriptSrc
(IplassJavaScriptSrc)

addScriptTagPathPattern 項目で追加するscriptタグで、scriptタグ内部のjavascriptのソースを記述します。

-

-

connectionTimeout
(IplassConnectionTimeout)

WAMプラグインモジュールからWAMモジュールへの通信時(HTTP/HTTPS)のコネクションタイムアウト時間を設定します。
単位はミリ秒です。

-

-

-

soTimeout
(IplassSoTimeout)

WAMプラグインモジュールからWAMモジュールへの通信時(HTTP/HTTPS)のソケットタイムアウト時間を設定します。
単位はミリ秒です。

-

-

proxyHost
(IplassProxyHost)

WAMプラグインモジュールからWAMモジュールへの通信時(HTTP/HTTPS)に利用するプロキシサーバのホスト名を指定します。

-

-

-

proxyPort
(IplassProxyPort)

WAMプラグインモジュールからWAMモジュールへの通信時(HTTP/HTTPS)に利用するプロキシサーバのポート番号を指定します。

-

-

-

noProxyHost
(IplassNoProxyHost)

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

localhost

-

-

includeClientIpToPermissionRequest

接続元IPアドレスをWAMモジュールの許可API呼び出し時にパラメータ(requestInfo)として送信するかをtrue/falseで指定します。
送信する場合、requestInfoのキーは clientIp です。

false

-

-

-

-

clientHeaderToPermissionRequestMapping

ユーザーのコンテンツ要求時のHTTPリクエストヘッダーを、許可API呼び出し時のパラメータ(requestInfo)としてマッピングする場合の設定です。

Serverless版での設定例
clientHeaderToPermissionRequestMapping: [
  { clientHeaderName: "Accept", requestInfoKey: "accept" },
]

-

-

-

-

-

systemErrorPageUrl

500エラー発生時に返却するエラー画面のURLです。絶対パスもしくは相対パスで指定可能です。
この項目が設定されなかった場合、500エラーをJSON形式でレスポンスします。

-

-

-

-

-

unavailableErrorPageUrl

503エラー発生時に返却するエラー画面のURLです。絶対パスもしくは相対パスで指定可能です。
この項目が設定されなかった場合、503エラーをJSON形式でレスポンスします。

-

-

-

-

-

forbiddenErrorPageUrl

403エラー発生時に返却するエラー画面のURLです。絶対パスもしくは相対パスで指定可能です。
この項目が設定されなかった場合、403エラーをJSON形式でレスポンスします。

-

-

-

-

-

defaultErrorRedirectUrl

エラー発生時のデフォルトのリダイレクト先URLです。絶対パスもしくは相対パスで指定可能です。
エラー発生時、エラー画面の取得に失敗した場合などには、当該項目で指定されたURLにリダイレクトします。
この項目が設定されなかった場合、503エラーをJSON形式でレスポンスします。

-

-

-

-

-

IplassIntegrateBasicAuth

基本認証のID/PWでWAMの認証を行います。認証に成功した場合、そのまま管理対象サイトのコンテンツが表示されます。
On/Offで指定します。

Off

-

-

-

-

IplassUrlEncodeCharset

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

utf-8

-

-

-

-

IplassSslVerifyPeer

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

On

-

-

-

-

IplassSslVerifyHost

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

On

-

-

-

-

IplassSslVersion

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

1(TLSv1.x)

-

-

-

-

IplassHttpVerbose

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

Off

-

-

-

-

ロードバランサのスティッキーセッションを利用する
WAMモジュールが稼働するiPLAssサーバーを冗長化してロードバランサーのスティッキセッション機能を利用する環境では、 loadBalancerCookieNamesiteLoadBalancerCookieName を正しく設定することで、WAMプラグインモジュールが当該Cookieをロードバランサーに送付するようになります。
Apache版を例にした場合、以下のような設定では、以下図のようにCookieが交換されます。
# ロードバランサのスティッキーセッションのCookie名を指定します.
IplassLoadBalancerCookieName myLB
# 上記Cookieを管理対象サイト側のドメインのCookieに格納する場合のCookie名を指定します.
IplassSiteLoadBalancerCookieName wamMyLB
wam cookie
Figure 3. WAMプラグインモジュール、ロードバランサー、WAMモジュールのCookie連携
javaScriptSrc(IplassJavaScriptSrc)/ javaScriptPath(IplassJavaScriptPath)項目について
WAMの機能により、WAMプラグインモジュールからのHTTPレスポンスボディの末尾にscriptタグが追加されます。
当該タグの目的は、JavaScriptでユーザー情報を取得し、ユーザー情報毎にコンテンツに変更を加える事に利用できます。
サンプルモジュールが、Apache版の「doc/example/js/iplasswam」にありますので、ご参照ください。
IplassJavaScriptSrc/ IplassJavaScriptPathサンプル
ファイル 説明 変更要

iplass-wam.js

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

site.js

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

site.css

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

jQuery-1.11.0.min.js

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

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

2.4. IIS版

初期設定

  1. 事前準備/前提

    • 有償版のSDKに同梱されている iplass-ee-wam-iis-[バージョン].zip をIISサーバーに配置してください。

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

    • サイトのルートフォルダを %WWW_ROOT% と表記します。

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

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

    • IISサーバーの %WWW_ROOT%/bin にWAMプラグインモジュールを配置します。iplass-wam-iis-[バージョン].zip 内の以下のファイルが対象です。

      • DynamicJson.dll

      • IplassEEWamIIS.dll

      • log4net.dll

  3. 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>

2.5. JavaEE版

初期設定

  1. 事前準備/前提

    • 有償版のSDKに同梱されている iplass-ee-wam-jee-[バージョン].zip をアプリケーションサーバーに配置してください。

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

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

    • アプリケーションサーバーの %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 に配置します。設定項目の詳細はWAMプラグインモジュールの設定を参照してください。

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

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

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

2.6. Serverless(JavaScript)版

Fetch APIに対応したJavaScriptランタイムが提供されるサーバーレスなエッジ環境で動作するWAMプラグインモジュール実装です。
Node.js 18以上、Deno、Workerなど様々なJavaScriptランタイムで動作します。

WAMプラグインモジュールの実装は、JavaScriptライブラリとして提供します。
また、WAMプラグインとしてサーバーレス環境で実行可能なコードを実装/ビルドするための unjs/h3 (HTTP フレームワーク)をベースとしたTypeScriptのスケルトンプロジェクトを提供します。

標準で、以下のサーバーレス環境用のスケルトンプロジェクトを提供します。

  • AWS Lambda@Edge版

  • Cloudflare Workers版

  • Netlify Edge Functions版

初期設定

  1. 事前準備/前提

    • 開発端末にNode.jsがインストールされていない場合、Node.jsのインストールが必要です。

    • 有償版のSDKに同梱されているServerless版スケルトンプロジェクトの内、利用したいサーバーレス環境のスケルトンプロジェクトのフォルダ(例 : iplass-wam-lambdaedge-plugin)を開発端末にコピーしてください。

  2. WAMプラグインの実装/ビルド/配置

    • スケルトンプロジェクトをコピーしたディレクトリで、 npm install コマンドを実行し、依存するJavaScriptライブラリをダウンロードします。

    • スケルトンプロジェクトの src/config.ts 内の defineConfig関数 を実装し、WAMプラグインモジュールの設定を行います。設定項目の詳細はWAMプラグインモジュールの設定を参照してください。

    • 必要に応じて、WAMプラグインモジュールのロジックのカスタマイズ処理やフック処理、その他必要なロジックを実装します。詳細はスケルトンプロジェクト内の README.md を参照してください。

    • ビルド方法やデプロイ方法の詳細は、スケルトンプロジェクト内の README.md を参照してください。

設定方法/設定例

Serverless(JavaScript)版のWAMプラグインモジュールでは、スケルトンプロジェクトの src/config.ts 内の defineConfig関数 を実装することで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",

  // デバッグモード
  debug: false,

  // ヘッダーにiPLAssのユーザー情報を格納するかの判定フラグ
  mapUserAttribute: false,

  // ヘッダーにiPLAssのユーザー情報を格納する場合に利用する
  attributeMap: [
    { headerName: "x-wam-user-id", userAttributeName: "accountId" }
  ],

  // クライアントIPを許可APIのリクエストに含めるか
  includeClientIpToPermissionRequest: true
}));