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の設定が必要になります。 -
X(Twitter)
管理コンソールに設定する事でX(Twitter)ユーザーでのログインが可能となります。
利用する場合はX(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全般の設定です。
org.iplass.wam.api.WamPreference
項目 | 説明 | 初期値 |
---|---|---|
wamUserIdentifierRole |
WAMユーザーを識別するためのロール |
WAM |
homeUrl |
認証後にリダイレクトされる画面のURL。 |
https://[your_apps_home_page_fqdn]/ |
customCssPath |
独自のCSSを組み込みたい場合に指定します。
パスの先頭に |
|
faviconPath |
faviconを設定したい場合に指定します。
パスの先頭に |
|
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 |
登録時に利用する |
signUpLayout |
activateByOutOfBandVerification |
メール等を利用した本人確認を実施するかを指定します。 |
true |
authenticationPolicyWithoutTwoStepVerification |
2段階認証の有効化/無効化(2段階認証ポリシーの切り替え)で利用する認証ポリシー(2段階認証が設定されていない認証ポリシー) |
|
authenticationPolicyWithTwoStepVerification |
2段階認証の有効化/無効化(2段階認証ポリシーの切り替え)で利用する認証ポリシー(2段階認証が設定されている認証ポリシー) |
セルフメンテナンスで利用する設定です。
項目 | 説明 | 初期値 |
---|---|---|
settingsLayoutName |
個人情報の編集時に利用する |
|
showAuthApplication |
セルフメンテナンス画面にアプリケーション情報を表示するかを指定します。 |
true |
showRememberMe |
セルフメンテナンス画面に自動ログイン情報を表示するかを指定します。 |
true |
メール、SMSなどのユーザーの本人確認(アクティベーション)に利用する項目に関する設定です。
項目 | 説明 | 初期値 |
---|---|---|
type |
verification方式を一意に識別するための名称 |
|
propertyName |
検証に利用する |
|
verifier |
アクティベーション処理時に利用するOutOfBandVerifierのverifier名 |
|
validDurationMinute |
検証処理の有効期間(分) |
1440 |
maxFailureCount |
検証処理の最大失敗許容回数。-1を指定した場合はvalidDurationMinute間であれば何度でも失敗可能となります。 |
-1 |
パスワードリカバリに関する設定です。
項目 | 説明 | 初期値 |
---|---|---|
propertyForSecretQuestion |
パスワードリカバリで使用する秘密の質問となるプロパティ名。 複数指定可能。 |
lastName |
propertyForSecretQuestion |
同上 |
firstName |
propertyForSecretQuestion |
同上 |
管理対象サイトの設定です。サイト毎に設定します。
項目 | 説明 | 初期値 |
---|---|---|
siteId |
管理対象サイトを識別するIDを設定します。 WAMプラグインモジュールに設定したものと同じ文字列を設定します。 |
local |
siteSecret |
管理対象サイトのシークレットキーを設定します。 WAMプラグインモジュールに設定したものと同じ文字列を設定します。 |
123 |
siteDomain |
管理対象サイトのドメイン名を設定します。 |
[homeUrlDomain] |
httpsOnly |
接続可能なプロトコルをhttpsのみに設定します。 |
false |
mappingActionPath |
管理対象サイトのコンテンツ閲覧権限チェックに利用されるiPLAssのAction権限設定で、Action名と管理対象サイトのコンテンツのURLパスをマッピングする際にAction名のprefixとして利用される文字列を設定します。 |
local |
userInfoSupplier |
|
|
publicUserProperty |
ユーザー情報取得WebApiで返却するユーザー情報に含まれる |
|
authCallbackUrl |
WAM機能の認証フローにおいて、ログイン完了後にiPLAssから管理対象サイトへリダイレクトする際に使用されるURLです。 当該URLは、サイトコンテンツのURLに該当しない任意のURLを設定してください。 形式は以下の通りです。 http[s]://<サイトのドメイン名>/<任意のパス> WAMプラグインモジュールにおける設定と異なり、URL全体(http[s]~)を記述する点に注意してください。 |
http://[homeUrlDomain]/wamauthcallback |
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]
org.iplass.wam.auth.idp.facebook.FacebookIdProvider
項目 | 説明 | 初期値 |
---|---|---|
clientId |
アプリで発行されたApp ID |
yourClientId |
clientSecret |
アプリで発行されたApp Secret |
yourClientSecret |
iconUrl |
ログイン画面表示用ラベルにロゴ画像を表示する場合に設定します。設定する値は画像のURLです。 |
- |
buttonLabel |
ログイン画面表示用のラベル |
<span> Facebook</span> |
buttonStyle |
ログイン画面表示用ラベルのスタイル |
color: #3b5998 |
supportSelfRegistration |
ユーザー自らIdProviderとの紐づけ、解除を設定可能とするか否か |
true |
X(Twitter)のアカウントで認証を行う際の設定です。
X(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]
org.iplass.wam.auth.idp.twitter.TwitterIdProvider
項目 | 説明 | 初期値 |
---|---|---|
consumerKey |
アプリで発行されたコンシューマキー |
yourConsumerKey |
consumerSecret |
アプリで発行されたコンシューマーシークレット |
yourConsumerSecret |
iconUrl |
ログイン画面表示用ラベルにロゴ画像を表示する場合に設定します。設定する値は画像のURLです。 |
- |
buttonLabel |
ログイン画面表示用のラベル |
<span> Twitter</span> |
buttonStyle |
ログイン画面表示用ラベルのスタイル |
color: #4099FF |
supportSelfRegistration |
ユーザー自らIdProviderとの紐づけ、解除を設定可能とするか否か |
true |
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]
org.iplass.wam.auth.idp.openidconnect.OpenIdConnectIdProvider
項目 | 説明 | 初期値 | |
---|---|---|---|
providerName |
プロバイダ名 |
||
authUri |
認証先のURL |
||
tokenUri |
トークンのURL |
||
userInfoUri |
ユーザー情報取得URL |
||
clientId |
アプリで発行されたクライアントID |
yourClientId |
|
clientSecret |
アプリで発行されたクライアントシークレット |
yourClientSecret |
|
iconUrl |
ログイン画面表示用ラベルにロゴ画像を表示する場合に設定します。設定する値は画像のURLです。 |
- |
|
buttonLabel |
ログイン画面表示用のラベル |
<span> Google</span> |
|
buttonStyle |
ログイン画面表示用ラベルのスタイル |
color: #dd4b39 |
|
supportSelfRegistration |
ユーザー自らIdProviderとの紐づけ、解除を設定可能とするか否か |
true |
|
subjectName |
ユーザーのフルネームの属性名 |
name |
|
attributeMapping |
プロバイダ側のプロフィールの属性値と iPLAss上の |
- |
|
propertyName |
|
||
profileAttributeName |
プロバイダ側の属性値(メールアドレス) |
||
attributeMapping |
プロバイダ側のプロフィールの属性値と iPLAss上の |
- |
|
propertyName |
|
firstName |
|
profileAttributeName |
プロバイダ側の属性値(ユーザーの名) |
given_name |
|
attributeMapping |
プロバイダ側のプロフィールの属性値と iPLAss上の |
- |
|
propertyName |
|
lastName |
|
profileAttributeName |
プロバイダ側の属性値(ユーザーの姓) |
family_name |
|
attributeMapping |
プロバイダ側のプロフィールの属性値と iPLAss上の |
- |
|
propertyName |
|
language |
|
profileAttributeName |
プロバイダ側の属性値(ユーザーの優先ロケール) |
locale |
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]
org.iplass.wam.auth.idp.openidconnect.OpenIdConnectIdProvider
項目 | 説明 | 初期値 | |
---|---|---|---|
providerName |
プロバイダ名 |
Yahoo! |
|
authUri |
認証先のURL |
||
useNonce |
リプレイアタック対策有無を設定 |
true |
|
tokenUri |
トークンのURL |
||
tokenEndPointAuthType |
トークンエンドポイント認証タイプ固定文字列(初期値から変更不要) |
BASIC |
|
clientId |
アプリで発行されたクライアントID |
yourClientId |
|
clientSecret |
アプリで発行されたクライアントシークレット |
yourClientSecret |
|
userInfoUri |
ユーザー情報取得URL |
||
subjectName |
ユーザーのフルネームの属性名 |
name |
|
iconUrl |
ログイン画面表示用ラベルにロゴ画像を表示する場合に設定します。設定する値は画像のURLです。 |
- |
|
buttonLabel |
ログイン画面表示用のラベル |
<span> Yahoo!</span> |
|
buttonStyle |
ログイン画面表示用ラベルのスタイル |
color: #ff0033 |
|
supportSelfRegistration |
ユーザー自らIdProviderとの紐づけ、解除を設定可能とするか否か |
true |
|
attributeMapping |
プロバイダ側のプロフィールの属性値と iPLAss上の |
- |
|
propertyName |
|
||
profileAttributeName |
プロバイダ側の属性値(メールアドレス) |
||
attributeMapping |
プロバイダ側のプロフィールの属性値と iPLAss上の |
- |
|
propertyName |
|
firstName |
|
profileAttributeName |
プロバイダ側の属性値(ユーザーの名) |
given_name |
|
attributeMapping |
プロバイダ側のプロフィールの属性値と iPLAss上の |
- |
|
propertyName |
|
lastName |
|
profileAttributeName |
プロバイダ側の属性値(ユーザーの姓) |
family_name |
|
attributeMapping |
プロバイダ側のプロフィールの属性値と iPLAss上の |
- |
|
propertyName |
|
language |
|
profileAttributeName |
プロバイダ側の属性値(ユーザーの優先ロケール) |
locale |
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]
org.iplass.wam.auth.idp.oidc.OpenIdConnectIdProvider
項目 | 説明 | 設定例 | |
---|---|---|---|
providerName |
プロバイダ名 |
okta |
|
definitionName |
OpenIDConnect定義の定義名 |
okta |
|
definitionNameResolver |
|
sample.CustomDefinitionNameResolver |
|
iconUrl |
ログイン画面表示用ラベルにロゴ画像を表示する場合に設定します。設定する値は画像のURLです。 |
path/to/icon.png |
|
buttonLabel |
ログイン画面表示用のラベル |
<span>Okta</span> |
|
buttonStyle |
ログイン画面表示用ラベルのスタイル |
color: #007dc1 |
|
supportSelfRegistration |
ユーザー自らIdProviderとの紐づけ、解除を設定可能とするか否か |
true |
|
attributeMapping |
プロバイダ側のプロフィールの属性値と iPLAss上の |
||
propertyName |
|
||
profileAttributeName |
プロバイダ側の属性名を指定 |
SAML準拠のID Providerのアカウントで認証を行う際の設定です。 認証連携における詳細の設定は SAML定義(ServiceProviderの設定) にて行います。
なお、SAMLIdProviderはユーザー自身によるアカウントの紐づけ、解除操作には対応しておりません。事前のプロビジョニング、もしくはAutoUserProvisioningHandlerの仕組みにてJITプロビジョニングする必要があります。
org.iplass.wam.auth.idp.saml.SamlIdProvider
項目 | 説明 | 設定例 | |
---|---|---|---|
providerName |
プロバイダ名 |
okta |
|
definitionName |
SAML定義の定義名 |
okta |
|
definitionNameResolver |
|
sample.CustomDefinitionNameResolver |
|
iconUrl |
ログイン画面表示用ラベルにロゴ画像を表示する場合に設定します。設定する値は画像のURLです。 |
path/to/icon.png |
|
buttonLabel |
ログイン画面表示用のラベル |
<span>Okta</span> |
|
buttonStyle |
ログイン画面表示用ラベルのスタイル |
color: #007dc1 |
1.6. 初期設定
WAMモジュールを利用する際には以下の設定が必要となります。
WAMモジュールの追加
mtp-service-configに以下を追記し、WAMモジュールの設定ファイルを読み込めるようにします。 iplass-ee-skeletonを利用している場合は該当箇所のコメント化を解除します。
<inherits>/wam-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
)にします。
initialAccountPolicy
として利用するアカウントポリシーでは、次の設定を有効化する必要があります。
Create Account with Specific Password
パスワードリカバリ機能を利用する場合、Preferenceの activatedAccountPolicy
(未指定の場合は initialAccountPolicy
)に設定されているアカウントポリシーでは、次の設定を有効化する必要があります。
Reset Password with Specific Password
権限設定
AdminConsoleのPermissionExplorer等を利用して、WAMを利用するユーザーのための権限設定を行います。
WAMユーザーが登録時に所属するグループを作成します。
グループのコードはPreferenceの signUp > initialGroup
で指定した値(デフォルト値 : WAM
)にします。
WAMユーザー用のロールを作成します。
ロールのコードはPreferenceの wamUserIdentifierRole
で指定した値(デフォルト値 : WAM
)にします。
ロール条件を追加し、前項で作成したグループに所属していることを条件にします。
user.memberOf("WAM")
WAMユーザーがWAMを利用する上で必要となる最低限のEntity権限を設定します。 ここで対象とするEntity以外の権限については、アプリケーションの要件にあわせて適宜設定してください。
Entity | 参照権限 | 登録権限 | 更新権限 | 削除権限 |
---|---|---|---|---|
mtp.auth.Group |
○ |
|||
mtp.auth.Rank |
○ |
|||
mtp.auth.User |
○ |
○ |
WAMユーザーが利用するWAMモジュールのActionに対して権限を設定します。
wam
配下の全てのActionに対して許可を設定するため、PermissionExplorerのActionPermissionにて、WAMユーザー用のロールの列と wam
の階層フォルダが交差するセルをクリックし、Nameに適切な名前を設定してOKボタンを押してください。
画面定義
WAMユーザーが自身の情報を更新するための画面で利用するユーザー情報(mtp.auth.User
)の詳細画面定義(DetailView)を作成してください。
View名はPreferenceの settings > settingsLayoutName
で指定した値にします。
なお、この詳細画面定義(DetailView)ではユーザーに必要以上の項目を編集させないよう注意してください。 例えば、権限に絡む項目(グループ、ランク、アカウントポリシー等)を更新してしまった場合、それ以降WAMの画面が操作できなくなる可能性があります。
管理対象サイト用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
)を作成します。

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

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

-
Action権限設定
最後に作成したロールに対するAction権限を設定します。
特定のロール(ロールコード : wamrole
) を持つユーザーに対して、 denytest/*
パスに対するアクセスを許可する設定をしています。
Action名のprefixには、実際のPreferenceの当該管理対象サイトの manageSite > mappingActionPath
の値を設定してください。以下の例では、 local
が設定されている前提です。

ユーザー情報取得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
にサイト側のオリジンを設定する必要があります。
