6. 付録

6.1. MO定義リファレンス

WebOTX PortalのMO定義については以下のリンクを参照してください。

6.2. 認証サーバ連携機能

本章では、WebOTX Portalの認証を外部の認証サーバに委譲する場合の手順について説明します。

6.2.1. はじめに

WebOTX Portalでは、自身で認証処理を行わずに外部の認証サーバに委譲することが出来ます。 対応している認証サーバは以下の通りです。

本機能を利用することで、SECUREMASTERやActive Directoryで認証されたユーザ情報でWebOTX Portalに自動ログイン出来るようになります。

Memo
WebSAM SECUREMASTERは、Webシステムなどに対してシングルサインオン(SSO)やアクセス制御を提供する弊社製品です。
SECUREMASTERの詳細については、弊社HPをご参照下さい。

Caution
WebOTX Portalの認証を外部の認証サーバに委譲する設定で運用した場合、WebOTX Portalのログイン画面は表示されません。また、パスワード変更機能を利用することができないため、個人設定メニューの「パスワードを変更...」は表示されません。
詳細は、[ 運用ガイド < 3. ポータルサイトの基本操作 < 3.3. 認証操作] をご参照下さい。

6.2.2. SECUREMASTER連携

ここでは、WebOTX Portalの認証をSECUREMASTERに委譲する場合の手順について説明します。

6.2.2.1. 使用上の条件

ここでは、SECUREMASTERに認証を委譲する場合のソフトウェア条件について説明します。

6.2.2.1.1. ソフトウェア条件

SECUREMASTERに認証を委譲する場合に WebOTX Portal がサポートするオペレーティング・システム(OS)、および、必要な関連ソフトウェアは下記の通りです。

Caution
SECUREMASTERに認証委譲する場合は、WebOTX Portalが使用するEDSに対して、WebSAM SECUREMASTER/EIMで使用しているEDSからデータを転記する必要があります。

Memo
詳細は [ 運用ガイド < 2. ユーザ管理 < 2.1.7.4. EDSへのデータ転記] の「他の認証用EDSからの転記」を参照して下さい。

6.2.2.2. 利用手順

ここでは、SECUREMASTERに認証委譲する場合にポータルサービス管理者が行う手順について説明します。 手順は、WebOTX Portalインストールと同時にSECUREMASTER認証委譲環境を構築する場合も、WebOTX Portalの運用開始後に途中からSECUREMASTER認証委譲環境に移行する場合も、同様になります。

SECUREMASTER側の設定
  1. SECUREMASTER/EAM の設定により、SECUREMASTER認証を通らないとWebOTX Portalにアクセス出来ないように、WebOTX Portal全体をSECUREMASTERによるアクセス保護対象にします。[手順1]
  2. SECUREMASTER/ACPIの設定により、SECUREMASTERの認証情報がWebOTX Portalに渡るようにします。[手順2]
事前に以下のコンポーネントのインストールとセットアップが必要です。 インストール・セットアップ手順は、それぞれのマニュアルを参照ください。
WebOTX Portal側の設定
  1. 設定ファイルを変更し、SECUREMASTER認証委譲機能を有効化します。[手順3]
  2. 設定ファイルに、WebOTX PortalがSECUREMASTERからユーザIDを受け取るためのHTTPヘッダ名を設定します。[手順4]
  3. 設定ファイルを変更し、WebOTX Portalログアウト時の動作を変更します。[手順5]
以降、各手順について詳細を説明します。
1. WebOTX PortalをSECUREMASTERでアクセス保護する

WebOTX PortalをSECUREMASTER/認証サーバで保護し、認証サーバでの認証を通らないとWebOTX Portalにアクセス出来ないように設定する必要があります。そのために、システム管理者がSECUREMASTER/EAMの手順に従い、下記の、WebOTX Portal内部で管理するコンテンツのURLをSECUREMASTERのアクセス保護対象として追加して下さい。ユーザ側で開発したポートレットがある場合は、その分も保護対象として指定して下さい。

SECUREMASTERによるアクセス保護対象として追加するURL
コンポーネント名 URL
WebOTX Portal http(s)://${HOSTNAME(FQDN)}(*1)/webotxportal/ 配下
http(s)://${HOSTNAME(FQDN)}(*1)/portal-authlink/ 配下
WebOTX Portal 同梱ポートレット http(s)://${HOSTNAME(FQDN)}(*1)/webotx-portal-portlet/ 配下
http(s)://${HOSTNAME(FQDN)}(*1)/webotx-portal-rssportlet/ 配下
*1 ${HOSTNAME(FQDN)} はWebOTX PortalがインストールされているFQDN(ドメイン名まで含まれたホスト名)になります。 例えば、ドメイン名が「example.local」、ホスト名が「portal」の環境に WebOTX Portal をインストールした場合は、次の4つのURLを追加して下さい。
  • http://portal.example.local/webotxportal/ 配下
  • http://portal.example.local/portal-authlink/ 配下
  • http://portal.example.local/webotx-portal-portlet/ 配下
  • http://portal.example.local/webotx-portal-rssportlet/ 配下
  • http://portal.example.local/webotx-portal-announceportlet/ 配下
2. WebOTX PortalへのユーザIDの引渡し

WebOTX Portalは、SECUREMASTERの「ユーザ情報引渡機能」により、SECUREMASTER認証成功時に認証情報としてユーザIDを受け取る必要があります。そのために、SECUREMASTER/EAMの認証サーバの設定と、SECUREMASTER ACPIの設定を行います。この設定は、SECUREMASTERの設定であるため、システム管理者がSECUREMASTERの手順に従い実施します。

3. 認証委譲機能の有効化

設定ファイル(common-session.properties)を変更し、WebOTX Portalの認証委譲機能を有効にします。 本設定を行うことで、ユーザIDのみでWebOTX Portalにログイン可能になります。

ファイルパス ${WEBOTX_INSTANCE_ROOT}/config/portal/common/common-session.properties
# common-session.properties
[Configuration]

:

authentication.feature.delegated = true

上記設定ファイルにおいて、authentication.feature.delegatedプロパティをfalseからtrueに変更して下さい。

次に、設定ファイル(SSOConfiguration.properties)を変更し、連携先認証サーバとしてSECUREMASTERを指定します。

ファイルパス ${WEBOTX_INSTANCE_ROOT}/config/portal/authentication/SSOConfiguration.properties
# SSOConfiguration.properties
[Configuration]

#
# SSO LoginFilter Class (default: 'com.nec.webotx.portal.login.sso.filter.SecureMasterLoginFilter')
# - for WebSAM/SECUREMASTER
#    com.nec.webotx.portal.login.sso.filter.SecureMasterLoginFilter
# - for MS/Active Directory
#    com.nec.webotx.portal.login.sso.filter.ActiveDirectoryLoginFilter
#
sso.filter.class=com.nec.webotx.portal.login.sso.filter.SecureMasterLoginFilter

# if only for WebSAM/SECUREMASTER

# The HTTP header name or HTTP request parameter name
# with which WebOTX Portal receives uid
#  (default: 'X-UID')
#  i.e. ATTR value of WebSAM/SECUREMASTER Configuration file (sm_acpi_conf.xml)
#
# sso.uid.key=X-UID

#
# WebSAM/SECUREMASTER Logout URL
#  if specified, when we logout from WebOTX Portal,
#  also logout from WebSAM/SECUREMASTER.
#
# sso.logout.uri=https://example.co.jp/AuthServer/Logout

sso.filter.classプロパティに「com.nec.webotx.portal.login.sso.filter.SecureMasterLoginFilter」を指定して下さい。

Memo
common-session.properties については、[ 運用ガイド < 5. コンフィグレーション < 5.2.6. 認証の設定]を、SSOConfiguration.properties については、[ 運用ガイド < 5. コンフィグレーション < 5.2.7. 認証委譲機能の設定]をご参照下さい。

4. SECUREMASTERからのユーザID取得設定

設定ファイル(SSOConfiguration.properties)に、WebOTX PortalがSECUREMASTERからユーザIDを受け取るためのHTTPヘッダ名を設定します。

ファイルパス ${WEBOTX_INSTANCE_ROOT}/config/portal/authentication/SSOConfiguration.properties
:
# The HTTP header name with which WebOTX Portal receives uid
#  (default: 'X-UID')
#  i.e. ATTR value of WebSAM/SECUREMASTER Configuration file (sm_acpi_conf.xml)
#
sso.uid.key=X-UID

上記設定ファイルにおいて、sso.uid.keyプロパティに、SECUREMASTER ACPIの設定ファイル(sm_acpi_conf.xml) の設定項目「ATTR」で指定した値と同じ値を設定して下さい。

5. WebOTX Portalログアウト時の動作変更

設定ファイル(PortalConfiguration.properties)を変更し、WebOTX Portalログアウト時の動作を変更します。

ファイルパス ${WEBOTX_INSTANCE_ROOT}/config/portal/authentication/PortalConfiguration.properties
# PortalConfiguration.properties
[Configuration]

# Login Page URI (default: '${APP_CONTEXT}/login')
# com.nec.webotx.portal.authentication.page.login.uri =
# com.nec.webotx.portal.authentication.XXX.page.login.uri =

# post Logout URI (default: Login Page URI)
com.nec.webotx.portal.authentication.post.logout.uri = /webotxportal/ssoLogout.jsp
# com.nec.webotx.portal.authentication.XXX.post.logout.uri =

# ChangePassword URI
# com.nec.webotx.portal.authentication.XXX.page.changepassword.uri =

# filter ignore suffixes (default: none)
# com.nec.webotx.portal.authentication.filter.ignore.suffixes = .js, .css, .png, .gif, .jpg

上記設定ファイルにおいて、post.logout.uriプロパティに「/webotxportal/ssoLogout.jsp」を設定して下さい。

WebOTX Portalからログアウト時にSECUREMASTERからもログアウトを行う場合は、設定ファイル(SSOConfiguration.properties)を変更し、sso.logout.urlプロパティにSECUREMASTERのログアウトURLを設定して下さい。未設定の場合は、SECUREMASTERからのログアウトは行われません。

Memo
PortalConfiguration.properties については、[ 運用ガイド < 5. コンフィグレーション < 5.2.6. 認証の設定]をご参照下さい。

ファイルパス ${WEBOTX_INSTANCE_ROOT}/config/portal/authentication/SSOConfiguration.properties
:
#
# WebSAM/SECUREMASTER Logout URL
#  if specified, when we logout from WebOTX Portal,
#  also logout from WebSAM/SECUREMASTER.
#
sso.logout.uri=SECUREMASTER/EAM の認証サーバのログアウトURL
動作確認

WebOTX PortalとSECUREMASTERを再起動後に、SECUREMASTER認証委譲機能の動作確認を行います。

  1. ブラウザを起動し、以下のURLへアクセスを行います。
    URL: http(s)://${HOSTNAME(FQDN)}/webotxportal/login

  2. SECUREMASTER/認証サーバのログイン前画面にリダイレクト表示されるので、SECUREMASTERに登録されているIDとパスワードを使用してログイン認証を行います。
    ※ SECUREMASTERで既に認証されている場合、2.は省略されます。

  3. 認証成功後、WebOTX Portalにリダイレクトされ、ログインユーザのメイン画面が表示されます。


6.2.3. Active Directory連携

ここでは、WebOTX Portalの認証をActive Directoryに委譲する場合の手順について説明します。

6.2.3.1. 使用上の条件

ここでは、Active Directoryに認証を委譲する場合のソフトウェア条件について説明します。

6.2.3.1.1. ソフトウェア条件

Active Directoryに認証を委譲する場合に WebOTX Portal がサポートするオペレーティング・システム(OS)、および、必要な関連ソフトウェアは下記の通りです。

Caution
Active Directoryに認証委譲する場合は、WebOTX Portalが使用するEDSに対して、Active Directoryからデータを転記する必要があります。

Memo
詳細は [ 運用ガイド < 2. ユーザ管理 < 2.1.7.4. EDSへのデータ転記] の「Active Directoryからの転記」を参照して下さい。

6.2.3.2. 利用手順

ここでは、Active Directoryに認証委譲する場合にポータルサービス管理者が行う手順について説明します。 手順は、WebOTX Portalインストールと同時にActive Directory認証委譲環境を構築する場合も、WebOTX Portalの運用開始後に途中からActive Directory認証委譲環境に移行する場合も、同様になります。

Active Directory側の設定
  1. WebOTX PortalのWebサーバ(Internet Information Services)の設定により、Active Directory認証を通らないとWebOTX Portalにアクセス出来ないように、WebOTX PortalをActive Directoryによるアクセス保護対象にします。[手順1]
事前にInternet Information Services(IIS)のインストールとセットアップが必要です。

Memo
IISのインストールとセットアップの詳細は、WebOTXマニュアル「セットアップガイド」の2.3. インストール後の作業 を参照して下さい。

WebOTX Portal側の設定
  1. 設定ファイルを変更し、Active Directory認証委譲機能を有効化します。[手順2]
  2. WebOTXの運用管理コマンド(otxadmin)を実行し、WebOTX PortalがActive Directory認証情報を受け取れるようにします。[手順3]
  3. 設定ファイルを変更し、WebOTX Portalログアウト時の動作を変更します。[手順4]
以降、各手順について詳細を説明します。
1. WebOTX PortalをActive Directoryでアクセス保護する

WebOTX PortalのWebサーバ(Internet Information Services)の設定により、Active Directory認証を通らないとWebOTX Portalにアクセス出来ないようにします。
使用するIISのバージョンによって手順が異なります。

2. 認証委譲機能の有効化

設定ファイル(common-session.properties)を変更し、WebOTX Portalの認証委譲機能を有効にします。 本設定を行うことで、ユーザIDのみでWebOTX Portalにログイン可能になります。

ファイルパス ${WEBOTX_INSTANCE_ROOT}/config/portal/common/common-session.properties
# common-session.properties
[Configuration]

:

authentication.feature.delegated = true

上記設定ファイルにおいて、authentication.feature.delegatedプロパティをfalseからtrueに変更して下さい。

次に、設定ファイル(SSOConfiguration.properties)を変更し、連携先認証サーバとしてActive Directoryを指定します。

Memo
common-session.properties については、[ 運用ガイド < 5. コンフィグレーション < 5.2.6. 認証の設定]を、SSOConfiguration.properties については、[ 運用ガイド < 5. コンフィグレーション < 5.2.7. 認証委譲機能の設定]をご参照下さい。

ファイルパス ${WEBOTX_INSTANCE_ROOT}/config/portal/authentication/SSOConfiguration.properties
# SSOConfiguration.properties
[Configuration]

#
# SSO LoginFilter Class (default: 'com.nec.webotx.portal.login.sso.filter.SecureMasterLoginFilter')
# - for WebSAM/SECUREMASTER
#    com.nec.webotx.portal.login.sso.filter.SecureMasterLoginFilter
# - for MS/Active Directory
#    com.nec.webotx.portal.login.sso.filter.ActiveDirectoryLoginFilter
#
sso.filter.class=com.nec.webotx.portal.login.sso.filter.ActiveDirectoryLoginFilter

# if only for WebSAM/SECUREMASTER

# The HTTP header name or HTTP request parameter name
# with which WebOTX Portal receives uid
#  (default: 'X-UID')
#  i.e. ATTR value of WebSAM/SECUREMASTER Configuration file (sm_acpi_conf.xml)
#
# sso.uid.key=X-UID

#
# WebSAM/SECUREMASTER Logout URL
#  if specified, when we logout from WebOTX Portal,
#  also logout from WebSAM/SECUREMASTER.
#
# sso.logout.uri=https://example.co.jp/AuthServer/Logout

sso.filter.classプロパティに「com.nec.webotx.portal.login.sso.filter.ActiveDirectoryLoginFilter」を指定して下さい。

3. Active DirectoryからのユーザID取得設定

WebOTXの運用管理コマンド(otxadmin)を実行し、WebOTX PortalがActive Directory認証情報を受け取れるようにします。

WebOTX Portalが動作しているWebOTX ASにおいて、以下のコマンドを実行して下さい。

otxadmin> set server.http-service.http-listener.ajp-listener-1.property.otxAuthentication=false

本設定を行うことで、WebOTX PortalがWebサーバ(Internet Information Services)から、Active Directory認証の結果(ユーザID)を取得することが可能になります。

4. WebOTX Portalログアウト時の動作変更

設定ファイル(PortalConfiguration.properties)を変更し、WebOTX Portalログアウト時の動作を変更します。

ファイルパス ${WEBOTX_INSTANCE_ROOT}/config/portal/authentication/PortalConfiguration.properties
# PortalConfiguration.properties
[Configuration]

# Login Page URI (default: '${APP_CONTEXT}/login')
# com.nec.webotx.portal.authentication.page.login.uri =
# com.nec.webotx.portal.authentication.XXX.page.login.uri =

# post Logout URI (default: Login Page URI)
com.nec.webotx.portal.authentication.post.logout.uri = /webotxportal/ssoLogout.jsp
# com.nec.webotx.portal.authentication.XXX.post.logout.uri =

# ChangePassword URI
# com.nec.webotx.portal.authentication.XXX.page.changepassword.uri =

# filter ignore suffixes (default: none)
# com.nec.webotx.portal.authentication.filter.ignore.suffixes = .js, .css, .png, .gif, .jpg

上記設定ファイルにおいて、post.logout.uriプロパティに「/webotxportal/ssoLogout.jsp」を設定して下さい。

Memo
PortalConfiguration.properties については、[ 運用ガイド < 5. コンフィグレーション < 5.2.6. 認証の設定]をご参照下さい。

動作確認

WebOTX Portalを再起動後に、Active Directory認証委譲機能の動作確認を行います。

  1. ブラウザを起動し、以下のURLへアクセスを行います。
    URL: http(s)://${HOSTNAME(FQDN)}/webotxportal/login

  2. ログインダイアログが表示されるので、Active Directoryに登録されているIDとパスワードを使用してログイン認証を行います。
    ※ (OSログイン時に)既にActive Directory認証されている場合、2.は省略されます。

  3. 認証成功後、WebOTX Portalにリダイレクトされ、ログインユーザのメイン画面が表示されます。

6.3. 会社毎のログイン画面/パスワード変更画面の設定

WebOTX Portalではマルチテナントモードで運用する場合において、会社毎にログイン画面とパスワード変更画面を設定することが出来ます。本章ではその手順について説明します。

6.3.1. 会社毎のログイン画面

ここでは、自社用のログイン画面を設定する場合の手順について説明します。

  1. サンプルのログイン画面(JSPファイル)を元に自社用のログイン画面を作成する。[手順1]
  2. 1. で作成した自社用のログイン画面を WebOTX Portal に含める。[手順2]
  3. 2. で配置した自社用のログイン画面の配置先URLを WebOTX Portal の設定ファイルに設定する。[手順3]
1. サンプルのログイン画面(JSPファイル)を元に自社用のログイン画面を作成

WebOTX Portal で提供しているサンプルのログイン画面をコピーし、自社用のログイン画面のJSPファイルを作成して下さい(他の会社のJSPファイル名と重複しない限りファイル名は任意です)。
サンプルのログイン画面は以下の場所に格納されています。

その上でJSPファイル内の会社ID部分を自社用のものに書き換えて下さい。また、ロゴやレイアウト等の画面デザインを変更して下さい。

ファイルパス ${AS_INSTALL}/Portal/webapps/webotx-portal/pages/samples/loginForMulticompany.jsp
<%@ page language="java"
                   contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%
// 会社IDを変更してください。
String companyID = "000001";
%>

<html>
<head>
<title>Login Page</title>
<script type="text/javascript">
    // *** 変更不可 ***
    function checkInput() {
        var userID = document.forms[0].ID.value;
        var password = document.forms[0].password.value;
        ifPass = false;
        var info = '';
        if (userID == '') {
            info = info +
            'NO userID\r\n';
            alert(info);
        } else {
            ifPass = true ;
            document.forms[0].userID.value = "<%=companyID%>" + userID;
            document.forms[0].action = '/webotxportal/session/user';
        }

        return ifPass;
    }
    // *** 変更不可 ***
    function setClientTimeZoneOffset() {
        var date = new Date();
        var intMsecPerMinute = 60000;
        var intOffset = date.getTimezoneOffset();
        document.forms[0].timeZoneOffset.value = -intOffset * intMsecPerMinute;
        return true;
    }

</script>
</head>

<!-- form/input タグ以外を編集してください. -->

<body bgColor="#ffffff" onload="setClientTimeZoneOffset()">

<h2>マルチカンパニー用(会社ID: 000001). ログインID部分だけ入力して下さい.</h2>

<form action="login.do" method="POST">
<input type="hidden" name="userID" value="">
<input type="hidden" name="timeZoneOffset" value="">
<input type="hidden" name="locale" value="<%=request.getLocale().toString()%>">
<%
String errorURI = request.getRequestURI();
String queryStr = request.getQueryString();
if (queryStr != null) {
  errorURI = errorURI + "?" + queryStr;
}
%>
<input type="hidden" name="errorURI" value="<%=errorURI%>">

<p>
ID: <input type="text" name="ID" value="">
</p>
<p>
PW: <input type="password" name="password" value="">
</p>
<p>
<input type="submit" value="LOGIN" onclick="return checkInput()">
</p>
</form>
</body>
</html>

太字は変更可能箇所

上記サンプルにおいて、String companyID = "000001"; の 000001 の箇所を自社の会社IDに変更して下さい。さらに <body> タグ以降でロゴ画像を追加したりレイアウト等の変更を行って下さい。スクリプトレット(<%〜%>の部分)、および <form>タグ、<input>タグ部分ついては変更しないで下さい。

2. 自社用のログイン画面を WebOTX Portal 配下に含める

1. で作成した自社用のログイン画面のJSPファイルを WebOTX Portal 配下の以下の場所に配置して下さい。

配置先 ${AS_INSTALL}/Portal/webapps/webotx-portal/pages/

上記の場所に配置することにより、Webブラウザから以下のURLで自社用のログイン画面(JSPファイル)にアクセスすることが出来るようになります。
URL http://<サーバ名>:<ポート番号>/webotxportal/pages/JSPファイル名
例:http://192.168.1.1/webotxportal/pages/MyCompanyLogin.jsp

3. 自社用のログイン画面の配置先URLを WebOTX Portal の設定ファイルに設定する

2. で配置した自社用のログイン画面のJSPファイルのURLをWebOTX Portalの設定ファイル(PortalConfiguration.properties)に設定して下さい。

ファイルパス ${WEBOTX_INSTANCE_ROOT}/config/portal/authentication/PortalConfiguration.properties
# PortalConfiguration.properties
[Configuration]

# Login Page URI (default: '${APP_CONTEXT}/login')
# com.nec.webotx.portal.authentication.page.login.uri =
com.nec.webotx.portal.authentication.XXX.page.login.uri = 会社「XXX」用のログイン画面(JSP)のURL

# post Logout URI (default: Login Page URI)
com.nec.webotx.portal.authentication.post.logout.uri = /webotxportal/ssoLogout.jsp
# com.nec.webotx.portal.authentication.XXX.post.logout.uri =

# ChangePassword URI
# com.nec.webotx.portal.authentication.XXX.page.changepassword.uri =

# filter ignore suffixes (default: none)
# com.nec.webotx.portal.authentication.filter.ignore.suffixes = .js, .css, .png, .gif, .jpg

上記設定ファイルにおいて、com.nec.webotx.portal.authentication.XXX.page.login.uri プロパティに 2. で配置した自社用のログイン画面のJSPファイルのURLを設定して下さい。XXXの箇所は「会社ID」になります。
例えば、会社IDが「000001」で、その会社のログイン画面のJSPファイルの URL が「http://192.168.1.1/webotxportal/pages/MyCompanyLogin.jsp」の場合、「com.nec.webotx.portal.authentication.000001.page.login.uri = /webotxportal/pages/MyCompanyLogin.jsp」というように設定して下さい(URLのホスト部分とポート番号部分は指定不要です)。

動作確認

WebOTXドメインの再起動(Advancedモードの場合はプロセスグループの再起動)後に、動作確認を行います。

  1. ブラウザを起動し、以下のURLへアクセスを行います。
    URL: http(s)://${HOSTNAME(FQDN)}/webotxportal/pages/自社用のログイン画面(JSP)

  2. 自社用のログイン画面が表示されるので、ユーザIDとパスワードを使用してログイン認証を行います。
    ※ ユーザIDは会社IDが含まれない実ID部分のみを入力して下さい。

  3. 認証成功後、ログインユーザのメイン画面が表示されます。

  4. ログアウトボタンを押下後、2. の自社用のログイン画面に戻ります。

6.3.2. 会社毎のパスワード変更画面

ここでは、自社用のパスワード変更画面を設定する場合の手順について説明します。

  1. サンプルのパスワード変更画面(JSPファイル)を元に自社用のパスワード変更画面を作成する。[手順1]
  2. 1. で作成した自社用のパスワード変更画面を WebOTX Portal に含める。[手順2]
  3. 2. で配置した自社用のパスワード変更画面の配置先URLを WebOTX Portal の設定ファイルに設定する。[手順3]
1. サンプルのパスワード変更画面(JSPファイル)を元に自社用のパスワード変更画面を作成

WebOTX Portal で提供しているサンプルのパスワード変更画面をコピーし、自社用のパスワード変更画面のJSPファイルを作成して下さい(他の会社のJSPファイル名と重複しない限りファイル名は任意です)。
サンプルのパスワード変更画面は以下の場所に格納されています。

その上でJSPファイル内の会社ID部分を自社用のものに書き換えて下さい。また、ロゴやレイアウト等の画面デザインを変更して下さい。

ファイルパス ${AS_INSTALL}/Portal/webapps/webotx-portal/pages/samples/changePasswordForMultiCompany.jsp
<%@ page language="java"
                   contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="javax.servlet.http.HttpSession" %>
<%@ page import="com.nec.webotx.portal.login.TokenSession" %>
<%@ page import="com.nec.webotx.portal.common.session.client.Session" %>

<%
// 会社IDを変更してください。
String companyID = "000001";
%>

<html>
<head>
<title>Change Password Page</title>
<script type="text/javascript">
    // *** 変更不可 ***
    function checkInput() {
        var oldpassword = document.forms[0].oldPassword.value;
        var newpassword = document.forms[0].newPassword[0].value;
        var confirm_newpassword = document.forms[0].newPassword[1].value;
        var userID = document.forms[0].userID[0].value;
        var ifPass = false;
        var info = '' ;
        if (userID == '') {
            info = 'ユーザIDが入力されていません';
        } else if (oldpassword == '') {
            info = '現在のパスワードが入力されていません';
        } else if (newpassword == '') {
            info = '新しいパスワードが入力されていません';
        } else if (newpassword != confirm_newpassword) {
            info = '新しいパスワードの入力値と新しいパスワードの入力値が一致しません';
        }
        if (info != '') {
            alert(info);
        } else {
            ifPass = true;
            document.forms[0].userID[0].value = "<%=companyID%>" + userID;
            document.forms[0].action = '/webotxportal/session/user/password';
        }
        return ifPass;
    }
</script>
</head>

<!-- form/input タグ以外を編集してください. -->

<body bgColor="#ffffff">

<h2>マルチカンパニー用(会社ID: 000001). ログインID部分だけ入力して下さい.</h2>

<p>
<form action="changePassword.do" method="POST">
<!--<input type="hidden" name="onSession" value="true" />-->
<%
String errorURI = request.getRequestURI();
String queryStr = request.getQueryString();
if (queryStr != null) {
  errorURI = errorURI + "?" + queryStr;
}
%>
<input type="hidden" name="errorURI" value="<%=errorURI%>">
<input type="hidden" name="serviceURI" value="/webotxportal/html/ja/changePasswordOnCompleted.html">

<%
    // *** 変更不可 ***
    String userID = null;
    HttpSession httpSession = request.getSession();
    if (httpSession != null) {
        Session token = TokenSession.getToken(httpSession);
        if (token != null) {
            String userIDWithCompanyID = token.getUserID();
            if (userIDWithCompanyID != null &&
                    userIDWithCompanyID.length() >= companyID.length()) {
                userID = userIDWithCompanyID.substring(companyID.length());
            }
        }
    }
%>

<p>
ユーザID:
<%
                if(userID != null) {
%>
                    <input type="hidden" name="userID" value="<%=userID%>" />
                    <input type="text" name="userID" tabindex="1" disabled="true"
                             maxlength="32" value="<%=userID%>"/>
<%
                } else {
%>
                    <input type="text" name="userID" tabindex="1"
                             maxlength="32" value=""/>
<%
                }
%>
</p>

<p>
現在のパスワード:
<input type="password" name="oldPassword" value="" tabindex="2" maxlength="128"/>
</p>

<p>
新しいパスワード:
<input type="password" name="newPassword" value="" tabindex="3" maxlength="128"/>
</p>

<p>
新しいパスワードの確認:
<input type="password" name="newPassword" value="" tabindex="4" maxlength="128"/>
</p>

<p>
<input type="submit" onclick="return checkInput()" tabindex="5" style="width:50" value="OK" />
 
<input type="reset" tabindex="6" style="width:50" value="Reset" />
</p>

</form>
</body>
</html>

太字は変更可能箇所

上記サンプルにおいて、String companyID = "000001"; の 000001 の箇所を自社の会社IDに変更して下さい。さらに <body> タグ以降でロゴ画像を追加したりレイアウト等の変更を行って下さい。スクリプトレット(<%〜%>の部分)、および <form>タグ、<input>タグ部分ついては変更しないで下さい。

2. 自社用のパスワード変更画面を WebOTX Portal 配下に含める

1. で作成した自社用のパスワード変更画面のJSPファイルを WebOTX Portal 配下の以下の場所に配置して下さい。

配置先 ${AS_INSTALL}/Portal/webapps/webotx-portal/pages/

上記の場所に配置することにより、Webブラウザから以下のURLで自社用のパスワード変更画面(JSPファイル)にアクセスすることが出来るようになります。
URL http://<サーバ名>:<ポート番号>/webotxportal/pages/JSPファイル名
例:http://192.168.1.1/webotxportal/pages/MyCompanyChangePassword.jsp

3. 自社用のパスワード変更画面の配置先URLを WebOTX Portal の設定ファイルに設定する

2. で配置した自社用のパスワード変更画面のJSPファイルのURLをWebOTX Portalの設定ファイル(PortalConfiguration.properties)に設定して下さい。

ファイルパス ${WEBOTX_INSTANCE_ROOT}/config/portal/authentication/PortalConfiguration.properties
# PortalConfiguration.properties
[Configuration]

# Login Page URI (default: '${APP_CONTEXT}/login')
# com.nec.webotx.portal.authentication.page.login.uri =
# com.nec.webotx.portal.authentication.XXX.page.login.uri =

# post Logout URI (default: Login Page URI)
com.nec.webotx.portal.authentication.post.logout.uri = /webotxportal/ssoLogout.jsp
# com.nec.webotx.portal.authentication.XXX.post.logout.uri =

# ChangePassword URI
com.nec.webotx.portal.authentication.XXX.page.changepassword.uri = 会社「XXX」用のパスワード変更画面(JSP)のURL

# filter ignore suffixes (default: none)
# com.nec.webotx.portal.authentication.filter.ignore.suffixes = .js, .css, .png, .gif, .jpg

上記設定ファイルにおいて、com.nec.webotx.portal.authentication.XXX.page.changepassword.uri プロパティに 2. で配置した自社用のパスワード変更画面のJSPファイルのURLを設定して下さい。XXXの箇所は「会社ID」になります。
例えば、会社IDが「000001」で、その会社のログイン画面のJSPファイルの URL が「http://192.168.1.1/webotxportal/pages/MyCompanyChangePassword.jsp」の場合、「com.nec.webotx.portal.authentication.000001.page.changepassword.uri = /webotxportal/pages/MyCompanyChangePassword.jsp」というように設定して下さい(URLのホスト部分とポート番号部分は指定不要です)。

動作確認

WebOTXドメインの再起動(Advancedモードの場合はプロセスグループの再起動)後に、動作確認を行います。

  1. WebOTX Portal にログインし、メイン画面を表示します。

  2. [個人設定] → [パスワードを変更..] メニューを選択します。

  3. 自社のパスワード変更画面が表示されます。

6.4. 分散キャッシュ利用時における障害からの復旧

分散キャッシュ利用時に、更新通知に利用するJMSサーバの障害などにより、分散キャッシュ機能が無効になった場合の影響と、復旧方法について説明します。

ここでは、分散キャッシュの設定状況と、障害発生箇所に分けて説明を記載しています。ご利用の設定と、発生している障害の状況により、該当するものを参照してください。

6.4.1. JMSサーバクラスタ利用なし

ここでは、JMSサーバクラスタを利用していない環境における復旧方法について説明します。

6.4.1.1. JMSサーバに障害が発生した場合

ここでは、分散キャッシュの更新通知で利用しているJMSサーバに障害が発生した場合の復旧方法を説明します。

JMSサーバクラスタを利用していないときに、更新通知に利用するJMSサーバに障害が発生した場合、分散システム内のすべてのドメインで分散キャッシュ機能は利用できなくなり、キャッシュの不整合が発生します(図6.4.1.1-1(2))。

JMSサーバに障害発生した場合(JMSサーバクラスタ利用なし)
図6.4.1.1-1

6.4.1.1.1. JMSサーバのみの再起動で復旧可能な場合

JMSサーバのプロセス停止など、JMSサーバのみに障害が発生し、JMSサーバの再起動により復旧が可能な場合は、 JMSサーバ復旧後、すべてのドメインにおいて、キャッシュ機能有効化操作と、キャッシュクリア操作を行うことにより、分散キャッシュ機能を復旧します。

JMSサーバのみの再起動で復旧可能な場合
図6.4.1.1-2

キャッシュ機能有効化操作と、キャッシュクリア操作のコマンドは次のとおりです。永続ユニット名(デフォルト:unit_001)は、環境に合わせて変更してください。

otxadmin > invoke server.portal.portal-storage.enableCache
otxadmin > invoke server.portal.portal-storage.clearCache unit_001
6.4.1.1.2. JMSサーバの接続先を変更して復旧する場合

これまで接続していたJMSサーバを変更して、正常稼動しているJMSサーバに接続することで分散キャッシュを復旧するための手順です。

更新通知に利用するJMSサーバを1つ決定し、分散キャッシュ関連の設定を行います。その後、コネクションファクトリリソースの設定で、接続先のJMSサーバを変更します(図6.4.1.1.2-1(1))。変更後、すべてのドメインにおいて、キャッシュ機能有効化操作と、キャッシュクリア操作を行うことにより、分散キャッシュ機能を復旧します(図6.4.1.1.2-1(2))。

JMSサーバの接続先を変更して復旧する場合
図6.4.1.1-3

更新通知用のJMSサーバに対する分散キャッシュの設定方法については、[ 運用ガイド > 5. コンフィグレーション > 5.3. 分散キャッシュの利用 > 5.3.1. 分散キャッシュ利用設定 > 5.3.1.1. JMSサーバクラスタ利用なし ]を参照してください。

接続先のJMSサーバの変更方法は次のとおりです。1つのドメインには、分散キャッシュで利用するコネクションファクトリリソースが2つ存在しますので、2つとも変更する必要があります。

otxadmin> set server.resources.jms-resource.jms-connection-factory.<JNDI名>.wojmsBrokerHostName=localhost
例) コネクションファクトリリソース名が、jms/portalTCF(TopicConnectionFactory)、jms/portalQCF(QueueConnectionFactory)であるコネクションファクトリリソースの接続先をhost1にする場合
otxadmin> set server.resources.jms-resource.jms-connection-factory.jms/portalTCF.wojmsBrokerHostName=host1
otxadmin> set server.resources.jms-resource.jms-connection-factory.jms/portalQCF.wojmsBrokerHostName=host1

キャッシュ機能有効化操作と、キャッシュクリア操作のコマンドは次のとおりです。永続ユニット名(デフォルト:unit_001)は、環境に合わせて変更してください。

otxadmin > invoke server.portal.portal-storage.enableCache
otxadmin > invoke server.portal.portal-storage.clearCache unit_001
6.4.1.1.3. WebOTXドメインの再起動が必要な場合

ドメイン再起動によりJMSサーバが復旧した後も、分散キャッシュは復旧していないため、キャッシュの不整合が発生したままの状態です(図6.4.1.1.3-1(1))。この場合、再起動を行っていないすべてのドメインで、キャッシュ機能有効化操作と、キャッシュクリア操作を行うことにより、分散キャッシュ機能を復旧します(図6.4.1.1.3-1(2))。

WebOTXドメインの再起動が必要な場合
図6.4.1.1-4

キャッシュ機能有効化操作と、キャッシュクリア操作のコマンドは次のとおりです。永続ユニット名(デフォルト:unit_001)は、環境に合わせて変更してください。

otxadmin > invoke server.portal.portal-storage.enableCache
otxadmin > invoke server.portal.portal-storage.clearCache unit_001

6.4.1.2. WebOTXドメインに障害が発生した場合

6.4.1.2.1. JMSサーバが動作する系に障害が発生した場合

JMSサーバクラスタを利用していないときに、更新通知に利用するJMSサーバが動作するドメインに障害が発生した場合、分散システム内のすべてのドメインで分散キャッシュ機能は利用できなくなり、キャッシュの不整合が発生します(図6.4.1.2.1-1(2))。

JMSサーバが動作する系に障害が発生した場合
図6.4.1.2-1

ドメイン再起動によりJMSサーバが復旧した後も、分散キャッシュは復旧していないため、キャッシュの不整合が発生したままの状態です(図6.4.1.2.1-2(1))。この場合、再起動を行っていないすべてのドメインで、キャッシュ機能有効化操作と、キャッシュクリア操作を行うことにより、分散キャッシュ機能を復旧します(図6.4.1.2.1-2(2))。

JMSサーバが動作する系に障害が発生した場合
図6.4.1.2-2

キャッシュ機能有効化操作と、キャッシュクリア操作のコマンドは次のとおりです。永続ユニット名(デフォルト:unit_001)は、環境に合わせて変更してください。

otxadmin > invoke server.portal.portal-storage.enableCache
otxadmin > invoke server.portal.portal-storage.clearCache unit_001
6.4.1.2.2. もう一方の系(JMSクライアント)に障害が発生した場合

JMSクライアントに相当するドメインに障害が発生した場合、分散キャッシュには影響はありません(図6.4.1.2.2-1(1))。

もう一方の系(JMSクライアント)に障害が発生した場合
図6.4.1.2-3

障害が発生していたドメインの再起動により、当該ドメインの分散キャッシュ機能を復旧します(図6.4.1.2.2-2)。

もう一方の系(JMSクライアント)に障害が発生した場合
図6.4.1.2-4

6.4.1.3. Portalが動作するプロセスグループに障害が発生した場合

6.4.1.3.1. JMSサーバが動作する系のプロセスグループに障害が発生した場合

更新通知に利用するJMSサーバが動作するドメインのプロセスグループに障害が発生した場合、分散キャッシュ機能には影響はありません(図6.4.1.3.1-1(2))。

JMSサーバが動作する系のプロセスグループに障害が発生した場合
図6.4.1.3-1

当該プロセスグループの再起動により、そのプロセスグループの分散キャッシュ機能を復旧します(図6.4.1.3.1-1(3))。

JMSサーバが動作する系のプロセスグループに障害が発生した場合
図6.4.1.3-2

6.4.1.3.2. もう一方の系(JMSクライアント)のプロセスグループに障害が発生した場合

プロセスグループに障害が発生した場合、分散キャッシュ機能には影響はありません(図6.4.1.3.2-1(2))。

もう一方の系(JMSクライアント)のプロセスグループに障害が発生した場合
図6.4.1.3-3

当該プロセスグループの再起動により、そのプロセスグループの分散キャッシュ機能を復旧します(図6.4.1.3.2-2(3))。

JMSサーバが動作する系のプロセスグループに障害が発生した場合
図6.4.1.3-4

6.4.2. JMSサーバクラスタ利用あり

ここでは、分散キャッシュでJMSサーバクラスタを利用する環境における復旧方法について説明します。

6.4.2.1. JMSサーバに障害が発生した場合

ここでは、分散キャッシュの更新通知で利用しているJMSサーバに障害が発生した場合の復旧手順を説明します。

JMSサーバクラスタ利用時に、あるJMSサーバに障害が発生した場合、そのJMSサーバに接続していたドメインの分散キャッシュは利用できなくなります。ただし、障害の発生していないドメインには影響しませんので、それらのドメインの分散キャッシュは正常に動作します(図6.4.2.1-1(2))。

JMSサーバのみの再起動で復旧可能な場合
図6.4.2.1-1

6.4.2.1.1. JMSサーバのみの再起動で復旧可能な場合

JMSサーバの再起動を行うとJMSサーバ間の接続が行われ、JMSサーバクラスタが復旧します。 ただし、この状態では、再起動を行ったJMSサーバを接続先としていた分散キャッシュは復旧していないため、キャッシュの不整合が発生したままの状態です(図6.4.2.1.1-1(1))。 JMSサーバクラスタ復旧後、障害が発生していたJMSサーバが存在するドメインでキャッシュ機能有効化操作を実行します。その後、すべてのドメインにおいてキャッシュクリア操作を行うことにより、分散キャッシュ機能を復旧します(図6.4.2.1.1-1(2))。

JMSサーバのみの再起動で復旧可能な場合
図6.4.2.1-2

キャッシュ機能有効化操作のコマンドは次のとおりです。障害が発生していたJMSサーバが存在するドメインに対してコマンドを実行します。

otxadmin > invoke server.portal.portal-storage.enableCache

キャッシュクリア操作のコマンドは次のとおりです。すべてのドメインで実行します。永続ユニット名(デフォルト:unit_001)は、環境に合わせて変更してください。

otxadmin > invoke server.portal.portal-storage.clearCache unit_001
6.4.2.1.2. JMSサーバの接続先を変更して復旧する場合

これまで接続していたJMSサーバを変更して、正常稼動しているJMSサーバに接続することで分散キャッシュを復旧するための手順です。

コネクションファクトリリソースの設定で接続先のJMSサーバを変更し(図6.4.2.1.2-1(1))、接続先を変更したドメインにおいて、キャッシュ機能有効化操作と、キャッシュクリア操作を行うことにより、分散キャッシュ機能を復旧します(図6.4.2.1.2-1(2))。

JMSサーバの接続先を変更して復旧する場合
図6.4.2.1-3

接続先のJMSサーバの変更方法は次のとおりです。1つのドメインには、分散キャッシュで利用するコネクションファクトリリソースが2つ存在しますので、2つとも変更する必要があります。

otxadmin> set server.resources.jms-resource.jms-connection-factory.<JNDI名>.wojmsBrokerHostName=localhost
例) コネクションファクトリリソース名が、jms/portalTCF(TopicConnectionFactory)、jms/portalQCF(QueueConnectionFactory)であるコネクションファクトリリソースの接続先をhost1にする場合
otxadmin> set server.resources.jms-resource.jms-connection-factory.jms/portalTCF.wojmsBrokerHostName=host1
otxadmin> set server.resources.jms-resource.jms-connection-factory.jms/portalQCF.wojmsBrokerHostName=host1

キャッシュ機能有効化操作のコマンドは次のとおりです。接続先を変更したコネクションファクトリリソースが存在するドメインに対してコマンドを実行します。

otxadmin > invoke server.portal.portal-storage.enableCache

キャッシュクリア操作のコマンドは次のとおりです。すべてのドメインで実行します。永続ユニット名(デフォルト:unit_001)は、環境に合わせて変更してください。

otxadmin > invoke server.portal.portal-storage.clearCache unit_001
6.4.2.1.3. WebOTXドメインの再起動が必要な場合

障害が発生したJMSサーバの存在するドメインを再起動することにより、JMSサーバクラスタ、および、分散キャッシュ機能を復旧します(図6.4.2.1.3-1(1))。

WebOTXドメインの再起動が必要な場合
図6.4.2.1-4

6.4.2.2. WebOTXドメインに障害が発生した場合

ドメインに障害が発生した場合の復旧手順です。

JMSサーバクラスタ利用時に、あるドメインに障害が発生した場合、障害の発生していないドメインには影響しませんので、それらのドメインの分散キャッシュは正常に動作します(図6.4.2.2-1(2))。

WebOTXドメインに障害が発生した場合
図6.4.2.2-1

この場合、当該ドメインの再起動により、JMSサーバクラスタ、および、分散キャッシュ機能を復旧します(図6.4.2.2-2(1))。

WebOTXドメインに障害が発生した場合
図6.4.2.2-2

6.4.2.3. Portalが動作するプロセスグループに障害が発生した場合

プロセスグループに障害が発生した場合、分散キャッシュ機能には影響はありません(図6.4.2.3-1(2))。

Portalが動作するプロセスグループに障害が発生した場合
図6.4.2.3-1

当該プロセスグループの再起動により、そのプロセスグループの分散キャッシュ機能を復旧します(図6.4.1.3.1-1(3))。

Portalが動作するプロセスグループに障害が発生した場合
図6.4.2.3-2

6.5. 退職者・休職者ロール情報のキャッシュクリア

ログインポートレットでは、EDSから取得した退職者・休職者のロール情報を一時的にキャッシュしています。 キャッシュは、WebOTX Portalが動作しているサーバの日付が変わった時に自動的にクリアされるようになっていますが、 何らかの特別な理由によりEDSの最新のロール情報をすぐに反映しなければならないケースに備えて、 手動でキャッシュをクリアする手段が提供されています。

キャッシュクリアの手順を以下に示します。

  1. 以下のコマンドを実行し、WebOTX Portalが動作しているドメインにログインします。
    otxadmin > login --user <管理ユーザ名> --password <管理ユーザパスワード> --port <管理ポート番号>
  2. 以下のコマンドを実行し、退職者・休職者ロール情報のキャッシュをクリアします。
    otxadmin > invoke server.portal.clearLoginPortletCache