Web Account Managerは、BtoC向けの会員管理機能を提供します。
会員管理機能は、「会員サイト化プラグイン」「Web会員管理」に分類されます。
-
会員サイト化プラグイン
静的Webサイトや、CMSで作成されたWebサイトに手を加えることなく、認証処理が必要サイトを構築するプラグインです。 -
Web会員管理
ログイン機能、オンラインサインアップ機能、アカウント情報のセルフメンテナンス機能、コンテンツの閲覧制御機能です。

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サービスが利用できます。
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全般の設定です。
org.iplass.wam.api.WamPreference
項目 | 説明 | 初期値 |
---|---|---|
wamUserIdentifierRole |
WAMユーザを識別するためのロール |
WAM |
homeUrl |
認証後にリダイレクトされる画面のURL |
http[s]://<iPLAssのドメイン名>/<コンテキスト>/<テナント>/wam/ |
customCssPath |
独自のCssを組み込みたい場合に指定。 パスの先頭に${contextPath}を指定した場合はテナントコンテキストパスに、${staticContentPath}を指定した場合は静的コンテントパスに置き換えられる。 |
|
faviconPath |
faviconを設定したい場合に指定。 パスの先頭に${contextPath}を指定した場合はテナントコンテキストパスに、${staticContentPath}を指定した場合は静的コンテントパスに置き換えられる。 |
|
accountPolicy |
サインアップ設定の |
WAM |
signUp |
signUp参照 |
|
settings |
settings参照 |
|
verification |
||
recovery |
recovery参照 |
|
manageSite |
||
idProvider |
||
idProvider |
||
idProvider |
||
idProvider |
サインアップ時の設定です。
項目 | 説明 | 初期値 |
---|---|---|
accountIdProperty |
ユーザIDを直接入力させず、それ以外の項目をユーザIDとして利用する場合に指定。 例えば、メールアドレス(mail)のようなユーザに対して一意となる項目を指定する。 |
|
listener |
アクティベーション完了時に実行するリスナー。
|
|
initialGroup |
初期設定するグループのコード、複数指定可能。 |
WAM |
activatedGroup |
アクティベーション後に設定するグループのコード、複数指定可能。 |
|
initialAccountPolicy |
初期設定するアカウントポリシー |
|
activatedAccountPolicy |
アクティベーション後に設定するアカウントポリシー |
|
captcha |
|
|
signUpLayoutName |
登録時に利用するUserSignUpエンティティの詳細画面定義のレイアウト名 |
signUpLayout |
activateByOutOfBandVerification |
メール等を利用した本人確認を実施するか |
true |
セルフメンテナンスで利用する設定です。
項目 | 説明 | 初期値 |
---|---|---|
settingsLayoutName |
編集時に利用するUserエンティティの詳細画面定義のレイアウト名 |
メール、SMSなどのユーザの本人確認に利用する項目に関する設定です。
項目 | 説明 | 初期値 |
---|---|---|
type |
verification方式を一意に識別するための名称 |
|
propertyName |
検証に利用するUser(および、UserRegistration)のプロパティ名 |
|
verifier |
アクティベーション処理時に利用するOutOfBandVerifierのverifier名 |
|
validDurationMinute |
検証処理の有効期間(分) |
1440 |
maxFailureCount |
検証処理の最大失敗許容回数。-1を指定した場合はvalidDurationMinute間であれば何度でも失敗可能となります。 |
-1 |
パスワードリカバリに関する設定です。
項目 | 説明 | 初期値 |
---|---|---|
propertyForSecretQuestion |
パスワードリカバリで使用する秘密の質問となるプロパティ名。 複数指定可能。 |
lastName |
propertyForSecretQuestion |
同上 |
firstName |
propertyForSecretQuestion |
同上 |
認証を管理されているサイトの設定です。 サイト毎に設定します。
項目 | 説明 | 初期値 |
---|---|---|
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設定ファイルと一致させます。 |
Facebookのアカウントで認証を行う際の設定です。
org.iplass.wam.api.auth.idp.facebook.FacebookIdProvider
項目 | 説明 | 初期値 |
---|---|---|
clientId |
アプリで発行されたApp ID |
yourClientId |
clientSecret |
アプリで発行されたApp Secret |
yourClientSecret |
Twitterのアカウントで認証を行う際の設定です。
org.iplass.wam.api.auth.idp.twitter.TwitterIdProvider
項目 | 説明 | 初期値 |
---|---|---|
consumerKey |
アプリで発行されたコンシューマキー |
yourConsumerKey |
consumerSecret |
アプリで発行されたコンシューマーシークレット |
yourConsumerSecret |
Googleのアカウントで認証を行う際の設定です。
org.iplass.wam.api.auth.idp.openidconnect.OpenIdConnectIdProvider
項目 | 説明 | 初期値 | |
---|---|---|---|
providerName |
プロバイダ名 |
||
authUri |
認証先のURL |
||
tokenUri |
トークンのURL |
||
userInfoUri |
ユーザ情報取得のURL |
||
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のプロパティ(メールアドレス) |
||
profileAttributeName |
プロバイダ側の属性値(メールアドレス) |
||
attributeMapping |
プロバイダ側のプロフィールの属性値:iPLAssのプロパティの値をマッピング。 |
- |
|
propertyName |
iPLAssのプロパティ(ユーザーの名) |
firstName |
|
profileAttributeName |
プロバイダ側の属性値(ユーザーの名) |
given_name |
|
attributeMapping |
プロバイダ側のプロフィールの属性値:iPLAssのプロパティの値をマッピング。 |
- |
|
propertyName |
iPLAssのプロパティ(ユーザーの姓) |
lastName |
|
profileAttributeName |
プロバイダ側の属性値(ユーザーの姓) |
family_name |
|
attributeMapping |
プロバイダ側のプロフィールの属性値:iPLAssのプロパティの値をマッピング。 |
- |
|
propertyName |
iPLAssのプロパティ(ユーザの言語) |
language |
|
profileAttributeName |
プロバイダ側の属性値(ユーザーの優先ロケール) |
locale |
Yahooのアカウントで認証を行う際の設定です。
org.iplass.wam.api.auth.idp.openidconnect.OpenIdConnectIdProvider
項目 | 説明 | 初期値 | |
---|---|---|---|
providerName |
プロバイダ名 |
Yahoo |
|
authUri |
認証先のURL |
||
responseType |
レスポンスの形式 固定文字列(初期値から変更不要) |
code id_token |
|
useNonce |
リプレイアタック対策有無を設定 |
true |
|
tokenUri |
トークンのURL |
||
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のプロパティ(メールアドレス) |
||
profileAttributeName |
プロバイダ側の属性値(メールアドレス) |
||
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に以下を追記し、WAMの設定ファイルを読み込めるようにします。
<inherits>/wem-service-config.xml</inherits>
build.gradleに以下を追記し、WAMモジュールの参照を追加します。 iplass-ee-skeletonを利用している場合は該当箇所のコメント化を解除します。
runtime group: 'org.iplass.ee', name: 'iplass-ee-wam', version: iPLAssVersion
追記後、プロジェクトのコンテキストメニューから Gradle プロジェクトのリフレッシュ
を行ってください。
アカウントポリシーの追加
WAMを利用してユーザアカウントを登録する際に適用するアカウントポリシーを作成します。
アカウントポリシーの名前はPreferenceの initialAccountPolicy
で指定した値(デフォルト値:WAM)にします。
権限設定
AdminConsoleのPermissonExplorer等を利用して、WAMを利用するユーザのための権限設定を行います。
WAMユーザが登録時に所属するグループを作成します。
グループのコードはPreferenceの signUp > initialGroup
で指定した値(デフォルト値:WAM)にします。
WAMユーザ用のロールを作成します。
ロールのコードはPreferenceの wamUserIdentifierRole
で指定した値(デフォルト値:WAM)にします。
RoleConditionを追加し、前項で作成したグループを条件にします。
user.memberOf("WAM")
WAMユーザがWAMを利用する上で必要となる最低限のEntity権限を設定します。 ここで対象とするEntity以外の権限については、アプリケーションの要件にあわせて適宜設定してください。
Entity | 参照権限 | 登録権限 | 更新権限 | 削除権限 |
---|---|---|---|---|
mtp.auth.Group |
○ |
|||
mtp.auth.Rank |
○ |
|||
mtp.auth.User |
○ |
○ |
WAMユーザが利用するActionに対して権限を設定します。
wam
配下の全てのActionに対して許可を設定するため、PermissonExplorerのActionPermissyonにて、WAMユーザ用のロールの列と wam
の階層フォルダが交差するセルをクリックし、Nameに適切な名前を設定してOKボタンを押してください。
画面定義
ユーザが自身の情報を更新するための画面で利用するユーザ情報(mtp.auth.User)の詳細画面定義を作成してください。
viewを追加する際の名前はPreferenceの settings > settingsLayoutName
で指定した値にします。
なお、このviewではユーザに必要以上の項目を編集させないよう注意してください。 例えば権限に絡む項目(グループ、ランク、アカウントポリシー等)を更新してしまった場合、それ以降WAMの画面が操作できなくなる可能性があります。
2. WAM plugin
事前に作成されたサイトに対して、サイトを修正する事なく、認証処理を組み込む事のできるプラグインです。
エンドユーザが作成した静的サイトに、後から認証処理を追加したい場合や、
認証情報の一元化など、他システムの認証処理にiPLAssを利用する場合に利用します。
プラグインには、以下の機能が含まれています。
-
認証されてないユーザをiPLAssのログイン画面へリダイレクトさせる機能
-
コンテンツ表示の際、当該コンテンツが表示可能かどうかをiPLAssへ問合せし、認証要否に応じて閲覧制御を行う機能
サイト側プラグインとして、JavaEE向け、Apache向け、IIS向けを提供しています。
設定方法は、以下のとおりです。
2.1. サイトの設定/Apache利用の場合
-
事前準備
-
iplass-ee-wam-apache-[バージョン]-[OS/処理系].[拡張子](例: iplass-ee-wam-apache-[バージョン]-linux-gcc.tar.gz)をWebサーバに配置してください。
-
以降の説明では、Apacheのインストールディレクトリを「apache_home」と表記します。
-
Apacheをデーモン形式で実行することを前提とします。
-
-
リリースモジュールの配置
-
Apacheの「{apache_home}/modules」にWAMモジュールを配置します。iplass-ee-wam-apache-[バージョン]-[OS/処理系].[拡張子]内の以下のファイルが対象です。
-
mod_iplass_ee_wam_apache.so
-
-
-
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」にコピーします。
-
-
WAM設定ファイルの設定
wamsettingfile参照 -
WAMシステムライブラリ
wampluginapachesystemlibs参照
2.2. サイトの設定/IIS利用の場合
-
事前準備
-
iplass-ee-wam-iis-[バージョン].zipをIISサーバに配置してください。
-
以降の説明では、IISのインストールディレクトリを「iis_home」と表記します。
-
サイトのルートフォルダを「wwwroot」と表記します。
-
IISのインストール時の「機能の選択」でASP.NET4.5を選択していることを前提とします。
-
-
リリースモジュールの配置
-
IISの「{wwwroot}/bin」にWAMモジュールを配置します。iplass-wam-iis-[バージョン].zip内の以下のファイルが対象です。
-
DynamicJson.dll
-
IplassEEWamIIS.dll
-
log4net.dll
-
-
-
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>
-
-
-
WAM設定ファイルの設定
※以下の表の項目名から、「Iplass」を省略して読み替えてください。
wamsettingfile参照
2.3. サイトの設定/JavaEE利用の場合
-
事前準備
-
iplass-ee-wam-jee-[バージョン].zipをアプリケーションサーバに配置してください。
-
以降の説明では、tomcatのインストールディレクトリを「tomcat_home」と表記します。
-
-
リリースモジュールの配置
-
アプリケーションサーバの「{tomcat_home}/{プロジェクト名}/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}/{プロジェクト名}/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通信を行います。 |
-
WAM設定ファイルの設定
※以下の表の項目名から、「Iplass」を省略して読み替えてください。
wamsettingfile参照
2.4. サーバ(iPLAss)の設定
Admin Console
対象Webサイトにモジュールインストール後、Admin Consoleで以下を設定します。
-
Tenant画面
Tenant画面にて、認証ポリシーを利用する
に設定します。 -
Preference画面
Prefrence画面にて、以下の項目を設定します。-
wamUserIdentifierRole
-
homeUrl
-
customCssPath
-
faviconPath|favicon
-
accountPolicy
-
manageSite
wam/wamPreference参照
-
-
WebAPI画面(wam/auth/user)
WebAPI画面にて、wam/auth/userを開いて、Access-Control-Allow-Credentialにチェック、
Access-Control-Allow-Originにサイト側のオリジンを設定します。 -
サイト毎のアクション権限設定
-
iPLAss側で、コンテンツのURLパターンとユーザーの権限に応じて参照可否を制御可能です。ユースケースとして
「特定のURLは特定のグループに所属しているユーザーのみ参照可能」
とする場合の設定方法を以下に図示します。 -
権限情報メニュー>ロールで制御用ロール(ロールコード”wamrole”)を作成します。
-
グループ(グループコード”wam_allow”)を作成します。
-
参照可能としたいユーザーを上記で作成したグループに所属させます。
-
最後にロールに対するアクション権限を設定します。
以下の例ではwam_role_name(ロールコード”wamrole”)
を持つユーザーがdenytest/*
パスに対してアクセスを許可しています。
-
サイト毎にアクション権限を分ける場合は、この手順をサイト毎に実施します。 |
WAMの静的コンテンツ
ApacheでTomcatにリバースプロキシしている環境など、必要に応じてWAMの静的コンテンツをiPLAssサーバのApacheドキュメントフォルダに配置してください。
iplass-ee-wam-[バージョン].jarファイルを展開して、META-INF/resources/から取得できます。
2.5. WAM設定ファイル
項目 | 説明 | デフォルト | 変更要 |
---|---|---|---|
IplassWamBaseUrl |
iPLAssサーバ側のURLを指定します。 |
- |
○ |
IplassWamRedirectUrl |
サイトとiPLAss本体が同一サーバで稼動させる際に、定義します。
ブラウザからiPLAss本体にアクセスする際のURLを指定します。 |
IplassWamBaseUrlの定義値 |
|
IplassWamCookieName |
iPLAssサーバで使用されるCookieの名前を指定します。 |
JSESSIONID |
|
IplassWamCookieDomain |
IplassWamCookieName項目のCookieのドメインを指定します。iPLAssサーバのドメインを指定してください。 |
○ |
|
IplassWamCookiePath |
IplassWamCookieName項目のCookieが有効なパスを指定します。 |
/ |
|
IplassWamAuthCallbackPath |
iPLAssからサイトへリダイレクトする際に使用されるURLです。 /<任意のパス> |
||
IplassSiteId |
サイト毎の一意なIDを指定します。会員サイトにしたいサイトが複数ある場合に、サイト毎を識別するために利用します。 |
○ |
|
IplassSiteSecret |
サイトのシークレットキーを指定します。 |
○ |
|
IplassSiteCookieName |
IplassWamCookieName項目はiPLAssサーバで使用されるCookie名に依存しています。 |
ipw |
|
IplassSiteCookieDomain |
IplassSiteCookieName項目のCookieのドメインを指定します。 |
○ |
|
IplassSiteCookiePath |
IplassSiteCookieName項目のCookieが有効なパスを指定します。 * IplassProtectedPathPattern
* IplassAddScriptTagPathPattern |
||
IplassSiteScheme |
サイトのURLスキームを指定します。 |
https |
|
IplassCharset |
iPLAss側でコンテンツの参照権限チェックのパラメータに使用します。 |
utf-8 |
|
IplassUrlEncodeCharset |
サイトからiPLAssへのHTTP通信の際、クエリパラメータにURLを含むことがあります。 |
utf-8 |
|
IplassCsrfTokenCookieName |
WAMモジュールは、ログインする際にCSRF対策のトークンが発行されます。 |
_csrft |
|
IplassProtectedPathPattern |
サイトのコンテンツの参照制限をかけるURLのパターンを正規表現で指定します。 |
○ |
|
IplassHttpComponentProvider |
HTTP通信実装クラスを指定します。 |
CurlHttp ComponentProvider |
|
IplassWamVerbose |
ログの冗長化を設定する際に利用します。 |
Off |
|
IplassAttributeMap |
ヘッダ情報にとiPLAssのユーザ情報を格納する際に利用します。
設定した場合、ユーザ情報のプロパティに紐づく値がセットされます。 設定例 x-wam-user-id accountId |
||
IplassMapUserAttribute |
上記のIplassAttributeMapの機能を有効にします。 |
Off |
|
IplassIntegrateBasicAuth |
基本認証のID/PWでiPLAssの認証を行います。認証に成功した場合、そのままサイトの画面が表示されます。 |
Off |
|
IplassAllowedIp |
WAMの認証処理をスキップできる接続元のIPアドレスを指定します。 |
||
IplassAllowedIpHeaderName |
IplassAllowedIpで許可対象のIPが含まれるかどうかチェックするリクエストヘッダの名前を指定します。 |
X-Forwarded-For |
|
IplassAllowedIpHeaderFieldIndex |
IplassAllowedIpHeaderFieldIndexで指定したヘッダフィールドの |
0 (0で最終要素を指します) |
|
IplassLoadBalancerCookieName |
iPLAss側のAPサーバが冗長化されており、ロードバランサのスティッキーセッション機能がCookieで実装されている場合に利用します。 |
||
IplassSiteLoadBalancerCookieName |
IplassLoadBalancerCookieName項目のCookie名はロードバランサの実装に依存していますので、変更できない場合があります。 |
||
IplassAddScriptTagPathPattern |
WAMの機能により、HTTPレスポンスの末尾にscriptタグを追加することができます。 |
○ |
|
IplassJavaScriptPath |
上記のscriptタグのsrc属性に設定するjsファイルのパスを指定します。 |
○ |
|
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通信時、サーバ証明書の検証するか否かを設定します。 |
On |
|
IplassSslVerifyHost |
WAMからiPLAssへのHTTP/HTTPS通信時、通信先のドメイン名の検証(証明書のcommonNameの定義と一致しているか)するか否かを設定します。 |
On |
|
IplassSslVersion |
SSLプロトコルバージョンを指定します。以下から設定可能です。
0:SSLv3かTLSv1から通信先で有効なプロトコルが使用されます |
1(TLSv1.x) |
|
IplassHttpVerbose |
WAMモジュールのHTTP通信のログを冗長化します。 |
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版のみのオプションです。 |
ファイル | 説明 | 変更要 |
---|---|---|
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が交換されます。

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との多くの通信が行われます。
以下、認証処理の流れとエラー時のステータスコードを示します。
処理の流れ

-
ユーザがWebサイトにアクセスします。
-
Apacheがコンテンツ生成処理前に、WAMモジュールをフックします。
-
リクエストが設定したパスパターンにマッチした場合、iPLAssサーバに問合せします。
-
認証の問合せ結果を返却します。認証済みの場合、ユーザ情報も一緒に返却されます。
-
ユーザ情報がある場合、ここで元のリクエストヘッダに付加します。
-
問合せ結果に応じて、以下の画面遷移を行います。
-
未認証の場合: ログインページへリダイレクト
-
認証済みの場合: 元のリクエストに対するコンテンツを応答
-
認証済みで権限がない場合: 権限エラーページへリダイレクト
-
その他: エラーとして、状況に応じたステータスコードをApacheコアモジュールに渡します。
通常のコンテンツ処理や後続Apacheモジュール(PHP等)の処理は実行されません。Figure 3. ログイン画面~コンテンツへのアクセスまで
-
-
ユーザがログインページでID、パスワードを入力します。
-
ログイン認証に成功すると、WebサイトのWAMモジュール専用URLパスへリダイレクトされます。
-
iPLAssにWAMセッションの払出しをリクエストします。上記②のリダイレクトパスでもらった認証コード値、
iPLAssに予め登録しておいたWebサイトのサイトID、サイトシークレットがiPLAssサーバに送られます。 -
iPLAssからWAMモジュールにWAM専用のセッションIDが返却されます。このセッションIDがサイトドメインの
クッキーへセットされ、以降、iPLAssとのリクエストのクッキーに使用されます。 -
元のリクエストパスへリダイレクトします。 再度②~⑤の処理が発生しますが、
WAMセッションIDがあるため認証済みとして扱われます。
ステータスコード
iPLAssの許可API(permission)、トークンAPI(token)の返却結果によっては、WAMモジュールからApacheにエラーのステータスコードを指示します。
その結果、コンテンツ処理が中断されてエラーページが表示されます。以下、ステータスコード及び想定される状況です。
上記番号 | ステータスコード | 状況 |
---|---|---|
⑥ |
400 |
WAMモジュールからiPLAssの許可APIへ不正な形式でリクエストしています。 |
503 |
iPLAssの許可APIから正常な応答を得られていません。iPLAssサーバやDB、ネットワークの障害等が考えられます。 |
|
⑪ |
403 |
CSRFトークンのチェックに失敗しています。クッキーに異常がないか、サーバのスティッキーセッションが機能しているか確認してください。 |
503 |
iPLAssのトークンAPIから正常な応答を得られていません。iPLAssサーバやDB、ネットワークの障害等が考えられます。 |