ユーザープロファイル画面(管理者用)
ユーザープロファイル画面(管理者用)では、主に以下の画面を提供しています。
- 管理者用画面へのアクセス
- ログイン画面
- ログイン後トップ画面
- ユーザー管理画面
- グループ管理画面
- CSV 一括処理画面
- 履歴一覧画面
- ロール設定画面
- 表示・属性値設定
- デザイン設定画面
- パスワードポリシー設定画面
- 初期値設定
- ユーザーステータス設定画面
- 設定のエクスポート
- 設定のインポート
管理者用画面へのアクセス
https://<ホスト名>/ui/admin/login にアクセスします。
ユーザープロファイル画面へのアクセス URL は環境によって異なります。
ログイン画面
ユーザー名/パスワードを入力し、「ログイン」ボタンを押下してログインを行います。パスワードリセットについては、ID 連携管理画面で行います。
ログイン後トップ画面
以下の画面に遷移するボタンが表示されます。
- ユーザー管理
- グループ管理
- 履歴一覧
- CSV 一括処理
- CSV 一括取込
- CSV 処理結果
- 各種設定
- ロール設定
- 表示・属性値設定
- デザイン設定
- パスワードポリシー設定
- 初期値設定
- ユーザーステータス設定
- 設定のエクスポート
- 設定のインポート
画面左側に以下の各種メニューが表示されます。
- ユーザー管理
- ユーザー管理画面に遷移します。
- グループ管理
- グループ管理画面に遷移します。
- CSV 一括処理
- CSV 一括取込
- CSV 一括取込画面に遷移します。
- CSV 処理結果
- CSV 処理結果画面に遷移します。
- CSV 一括取込
- 履歴一覧
- 履歴一覧画面に遷移します。
- 各種設定
- ロール設定
- ロール設定画面に遷移します。
- 表示・属性値設定
- 表示・属性値設定画面に遷移します。
- デザイン設定
- デザイン設定画面に遷移します。
- パスワードポリシー設定
- パスワードポリシー設定画面に遷移します。
- 初期値設定
- 初期値設定画面に遷移します。
- ユーザーステータス設定
- ユーザーステータス設定画面に遷移します。
- 設定のエクスポート
- 設定のエクスポート画面に遷移します。
- 設定のインポート
- 設定のインポート画面に遷移します。
- ロール設定
画面右上にユーザー名があり、このユーザー名を押下することで、以下の各種メニューが表示されます。
- アカウント情報
- 押下することで、ID 連携管理画面のアカウント情報変更画面に遷移します。
- パスワード変更
- 押下することで、ID 連携管理画面のパスワード変更画面に遷移します。
- ログアウト
- このリンクをクリックすることで、ログアウトが行われます。
- UCIDM について
- 押下することで、UCIDM についての画面に遷移します。
ユーザー管理画面
- ユーザーの管理が行えます。
- キーワード検索では、検索ボックスに検索ワードを入れ検索ボタンを押下すると、表示・属性値設定画面で設定されている「検索対象」属性に対して検索ワードを含むユーザーを検索し、画面上に表示します。
- 詳細検索では、表示・属性値設定画面で設定されている「検索対象」属性の項目が表示されます。オプションを設定している属性に対してはチェックボックスが表示されます。検索ボタンを押下することで絞り込み検索が行えます。「その他」の検索では、オプション値以外で検索を行いますが、値が設定されていないユーザーを検索することはできません。
- 検索結果の表示列は、表示・属性値設定画面で設定されている「表示」属性の項目がデフォルトになります。
- 「CSV エクスポート」ボタンを押下することで、表示されているユーザーの一覧を CSV ファイルとしてエクスポートできます。表示・属性値設定画面で設定している属性が使用されます。「参照のみ」の属性は対象外となります。
- ハンバーガーボタンを押すことで表示項目の一覧が表示されます。チェックボックスを操作することで画面上に表示する項目の on/off を切り替えられます。
- 行内一番左側のアイコンはユーザーのステータスを表します。緑色のユーザーアイコンは有効状態であることを表し、グレーのユーザーアイコンに赤いバツ印のついたアイコンはユーザーが無効状態であることを表します。
- 対象ユーザーの詳細画面に遷移するボタンと削除ボタンとユーザーのステータス切り替えボタンとパスワード変更ボタンと認証デバイスの設定を行うボタンが表示されます。
- 登録ボタンを押下すると、ユーザー登録画面に遷移します。
- 認証デバイス設定を行うボタンは、TOTP と Passkey の登録を行う URL が何も設定されていない場合は表示されません。
- 「仮パスワード発行中ユーザー」ボタンを押下すると、仮パスワード発行中ユーザー画面に遷移します。
ユーザー詳細
- ユーザーの属性を更新します。
- 画面上部の削除ボタンからユーザーの削除が行えます。
- 画面上部の無効化ボタンからユーザーの無効化が行えます。またすでに無効状態のユーザーの場合は有効化ボタンになり、ユーザーの有効化が行えます。無効になったユーザーはユーザープロファイル画面にログインできなくなります。
- 編集したい属性の値を書き換えて更新ボタンを押すと、ユーザーの属性を更新出来ます。
- テキストボックス下部のプラスボタンを押すと、テキストボックスが 1 つ追加されます。また、テキストボックス右側のマイナスボタンを押すと、テキストボックスが 1 つ削除されます。
- 更新ボタン上部のプラスボタンを押すと編集属性を追加出来ます。表示・属性値設定に存在する属性が不足している場合は、ドロップダウンが表示されます。不足していない場合は自由入力フォームのみになります。
- 属性名左側のゴミ箱ボタンを押すと編集属性を削除出来ます。
- テキストボックス内が空の場合は更新時には値なしとして無視されます。
- 画面下部の所属グループのテーブルにて、現在所属しているグループの一覧を確認できます。
- 所属グループ名を選択すると、選択した所属グループのグループ詳細画面に遷移します。
- 所属グループのテーブル上部の「所属グループ登録」から、任意のグループへの所属処理が行えます。所属したいグループにチェックを入れて「所属グループ登録」ボタンを押してください。
- 所属グループのテーブル上部の「所属グループ削除」から、任意のグループへの所属解除処理が行えます。所属解除したいグループにチェックを入れて「所属グループ削除」ボタンを押してください。
ユーザーパスワード変更
- ユーザーのパスワードを管理者が設定します。
- このときのパスワードルールとして、パスワードの長さと禁止文字が適用されます。
- ポリシーを満たすパスワードを入力し、更新ボタンを押すことでパスワードを更新出来ます。
- AD に存在するユーザーのパスワード変更の場合、LDAPS 接続である必要があります。
- パスワードを変更した場合、パスワード確認の画面表示になります。再表示できないので、画面を閉じずに必要な操作を行う必要があります。
- ランダムパスワードを使用する場合、パスワードポリシーを満たすパスワードが生成され、手入力のパスワードは無効になります。
- 「次回ログイン時にパスワード変更を要求する」ボタンを押下することで、仮パスワードが発行されます。発行中であるかどうかは仮パスワード発行中ユーザー画面で確認します。パスワードリセットが行われるまで一般ユーザーのステータスは無効のままになります。
- 入力した平文パスワードを UCIDM がハッシュ化することはありません。ハッシュ化したいときは、連携元が OpenLDAP であれば ppolicy_hash_cleartext を使ってください。
- 連携元が OpenLDAP で仮パスワードを発行する場合、ucidmUserEnabled をステータス属性としたときの OpenLDAP 側の設定例は以下になります。
access to filter="(ucidmUserEnabled=False)" attrs=userPassword
by * none
access to attrs=userPassword
by anonymous auth
by self =wx
by * none
ユーザー登録
- ユーザーの登録が行えます。ユーザー登録、所属グループ設定、パスワード確認の順番で画面が切り替わります。
- 値のテキストボックスに設定する値を入力し、画面下部の登録ボタンを押して登録してください。
- マルチバリューのテキストボックス下部のプラスボタンを押すと、テキストボックスが 1 つ追加されます。また、テキストボックス右側のマイナスボタンを押すと、テキストボックスが 1 つ削除されます。
- 登録ボタン上部のプラスボタンを押すと属性を追加出来ます。
- テキストボックス内が空の場合、登録時にはその属性は無視されます。また、更新時には値なしとして無視されます。
- parentDN という属性は特殊な属性になります。ユーザーを登録する OU を指定出来ます。ベースの suffix が
dc=example,dc=comの場合、parentDN にou=Userと指定するとou=User,dc=example,dc=comにユーザーを登録します。parentDN を入力しない場合はデフォルト通りdc=example,dc=comに登録します。 - すべての属性で複数値を設定出来ますが、サーバー側で
SINGLE-VALUE制約をかけていた場合、登録に失敗する場合があります。 - 任意の属性名の属性を設定できますが、サーバー側で未定義の属性は登録に失敗する場合があります。
- パスワード属性(
userPassword)は常にデフォルトのパスワードポリシーでチェックが行われます。このときのルールとして、パスワードの長さと禁止文字のみ適用されます。ポリシーを満たさない場合は登録ボタンが無効化されます。 - 該当するパスワードポリシーは各属性や
parentDNを入力するたびに、適切なパスワードポリシーを検索します。 - パスワードを含めて登録した場合、パスワード確認の画面表示になります。再表示できないので、画面を閉じずに必要な操作を行う必要があります。
- ランダムパスワードを使用する場合、パスワードポリシーを満たすパスワードが生成され、手入力のパスワードは無効になります。
- 所属グループ設定では、グループ一覧から追加・解除を行います。
- uidNumber 属性(表示・属性値設定で単値属性オプションなし)では「自動割当」ボタンを押すことで割り当て可能な番号が自動でセットされます。
- ユーザー更新などで割り当て可能な番号を再取得したい場合は「最新情報取得後に割当」ボタンを使用します。
認証デバイス設定画面
- TOTP と Passkey の設定を行う画面が表示されます。
- 認証デバイス設定画面では、認証デバイスの削除のみ行えます。
- TOTP の設定では、デバイス情報が見つかる場合は現在のデバイス情報が表示されます(リカバリーコードは表示されません)。
- Passkey の設定では、デバイス情報が見つかる場合は現在のデバイス情報の一覧が表示されます。
仮パスワード発行中ユーザー画面
- 仮パスワードを発行中のユーザーの一覧が表示されます。
- 「取消」ボタンを押下することで、仮パスワードの発行を取り消すことができます。
- 一般ユーザーが仮パスワードから新しいパスワードに変更した場合、表示されません。
グループ管理画面
- グループの管理が行えます。
- キーワード検索では、検索ボックスに検索ワードを入れ検索ボタンを押下すると、表示・属性値設定画面で設定されている「検索対象」属性に対して検索ワードを含むグループを検索し、画面上に表示します。
- 詳細検索では、表示・属性値設定画面で設定されている「検索対象」属性の項目が表示されます。オプションを設定している属性に対してはチェックボックスが表示されます。検索ボタンを押下することで絞り込み検索が行えます。「その他」の検索では、オプション値以外で検索を行いますが、値が設定されていないグループを検索することはできません。
- 検索結果の表示列は、表示・属性値設定画面で設定されている「表示」属性の項目がデフォルトになります。
- 「CSV エクスポート」ボタンを押下することで、表示されているグループの一覧を CSV ファイルとしてエクスポートできます。表示・属性値設定画面で設定している属性が使用されます。「参照のみ」の属性は対象外となります。
- ハンバーガーボタンを押すことで表示項目の一覧が表示されます。チェックボックスを操作することで画面上に表示する項目の on/off を切り替えられます。
- 対象グループの詳細画面に遷移するボタンと削除ボタンが表示されます。
- 登録ボタンを押下すると、グループ登録画面に遷移します。
グループ詳細
- グループの属性を更新します。
- 画面上部の削除ボタンからグループの削除が行えます。
- 編集したい属性の値を書き換えて更新ボタンを押すと、グループの属性を更新出来ます。
- テキストボックス下部のプラスボタンを押すと、テキストボックスが 1 つ追加されます。また、テキストボックス右側のマイナスボタンを押すと、テキストボックスが 1 つ削除されます。
- 更新ボタン上部のプラスボタンを押すと編集属性を追加出来ます。表示・属性値設定に存在する属性が不足している場合は、ドロップダウンが表示されます。不足していない場合は自由入力フォームのみになります。
- 属性名左側のゴミ箱ボタンを押すと編集属性を削除出来ます。
- テキストボックス内が空の場合は更新時には値なしとして無視されます。
- 所属メンバーのテーブル上部の「メンバー登録」から、任意のメンバーの登録処理が行えます。登録したいメンバーにチェックを入れて「メンバー登録」ボタンを押してください。
- 所属メンバーのテーブル上部の「メンバー削除」から、任意のメンバーの削除処理が行えます。削除したいメンバーにチェックを入れて「メンバー削除」ボタンを押してください。
グループ登録
- グループの登録が行えます。グループ登録、メンバー設定の順番で画面が切り替わります。
- 値のテキストボックスに設定する値を入力し、画面下部の登録ボタンを押して登録してください。
- マルチバリューのテキストボックス下部のプラスボタンを押すと、テキストボックスが 1 つ追加されます。また、テキストボックス右側のマイナスボタンを押すと、テキストボックスが 1 つ削除されます。
- 登録ボタン上部のプラスボタンを押すと属性を追加出来ます。
- テキストボックス内が空の場合、登録時にはその属性は無視されます。また、更新時には値なしとして無視されます。
- parentDN という属性は特殊な属性になります。グループを登録する OU を指定出来ます。ベースの suffix が
dc=example,dc=comの場合、parentDN にou=Groupと指定するとou=Gropu,dc=example,dc=comにグループを登録します。parentDN を入力しない場合はデフォルト通りdc=example,dc=comに登録します。 - すべての属性で複数値を設定出来ますが、サーバー側で
SINGLE-VALUE制約をかけていた場合、登録に失敗する場合があります。 - 任意の属性名の属性を設定できますが、サーバー側で未定義の属性は登録に失敗する場合があります。
- 画面下部の所属メンバーのテーブルにて、現在所属しているメンバーの一覧を確認できます。
- メンバー名を選択すると、選択したメンバーのユーザー詳細画面に遷移します。
- メンバー設定では、ユーザー一覧から登録・削除を行います。
- gidNumber 属性(表示・属性値設定で単値属性オプションなし)では「自動割当」ボタンを押すことで割り当て可能な番号が自動でセットされます。
- グループ更新などで割り当て可能な番号を再取得したい場合は「最新情報取得後に割当」ボタンを使用します。
CSV 一括処理画面
- CSV 一括取込画面で、CSV 一括処理を行えます。
- CSV ファイル、リソースタイプ、操作種別を選択後、CSV 一括取込ボタンを押下することで、CSV データの内容が送信されます。
- CSV ファイルを選択後、プレビューボタンを押下することで、CSV の内容(最初の 1000 件が表示されます。)
- password に
%{random}と指定すると、ランダムパスワードが生成され、利用されます。 - 属性値に「,」を使用する場合は、CSV ファイル内で
%{comma}と指定することで「,」として処理が行われます。 - uidNumber または gidNumber が空の値になっている場合、自動的に割り当てられます。
- CSV の一括処理が完了した後、CSV 処理結果画面でその結果を確認できます。
- 失敗のレコードがある場合、失敗のレコード数右のダウンロードアイコンを押下することで、一括処理に失敗したレコードだけが抽出された CSV ファイルをダウンロードできます。
- テーブル一番右のアイコンを押下することで、CSV ID に対応する一括処理の履歴の詳細を確認できます。
- 「エクスポート」ボタンを押下することで、エクスポートの画面表示になります。再表示できないので、画面を閉じずに CSV エクスポートや PDF エクスポートを行う必要があります。
履歴一覧画面
- ログイン関係の認証履歴と LDAP の操作履歴の確認が行えます。
- 履歴の検索が行えます。
- エクスポート機能を使うことで特定の期間の全てのログを1つのファイルにまとめられます。
ロール設定画面
- ロールとタイプの権限設定が表示されます。
- 設定したい項目の鉛筆マークを押下することで、その詳細画面に遷移します。
- カスタムロール機能を有効にすると、一般ユーザー画面ではカスタムロール、無効にすると UCIDM のシステムロール
ldap-userが使用されます。 - カスタムロールの設定では、カスタムロールの登録・削除、スクリプトの設定が行えます。
- カスタムロールの登録では、ロール名とそのロールの説明を入力することで登録します。
- 一般ユーザーがログインするときにカスタムロールを使うときの属性名やスクリプトを設定します。
- 「カスタムロール属性のスクリプトを利用する」がオンになっている場合、カスタムロールを取得するときにスクリプトが呼び出されるようになります。オフになっている場合は、スクリプトは呼び出されません。
- 「関数呼び出し確認」ボタンを押下することで、指定した関数の動作を確認することができます。
カスタムロール有効設定のスクリプト例
- ユーザーステータス設定のスクリプトとは仕様が異なります。
- カスタムロール名を返す
getRoleName()という名前で関数を設定します。 - 必ず関数の戻り値を返す必要があります。
- 関数の戻り値として null または undefined を返した場合は一般ログイン時のときはデフォルトロールが使われます。
例えば、カスタムロール属性の値の 2 番目の要素をカスタムロール名とするときは次のようになります。
function getRoleName(values) {
// カスタムロールを取得するときにこの関数が呼ばれる
// 第1引数の values にはカスタムロール属性の値が文字列の配列として渡される
// 関数の戻り値はカスタムロールの名前を表す string 値を返す
return values[1];
}
ロール設定詳細画面
- メニュー設定では、ユーザーのホーム画面で表示する画面を設定します。カスタムロールを使用することで、一部のユーザーには表示しないようにすることが可能になります。
- 属性名は、ユーザーの表示・属性値設定がセットされます。使用しない場合は、全ての権限をオフにします。属性を追加したい場合は、ユーザーの表示・属性値設定で属性を追加する必要があります。
- 属性に対して、「参照」、「編集」、「削除」を設定し、「更新」ボタンを押下することで、更新できます。
- 参照権限が与えられていない属性は、ユーザー属性変更画面に表示されません。
- 参照権限は、一般ユーザーは更新できず、表示のみになります。
- 編集権限は、一般ユーザーが変更できるようになります。
- 削除権限は、一般ユーザーが何も入力しない状態で更新を行うと、その属性が削除されます。
- 「編集」ボタンを押下してオンにすると、自動で「参照」ボタンがオンになります。
- 「削除」ボタンを押下してオンにすると、自動で「編集」ボタンがオンになります。
- 通知設定は、一般ユーザーのホーム画面にメッセージを表示する設定を行います。
- 日本語と英語のメッセージを両方設定する必要があります。
- メッセージで HTML を使用する場合は、
<div>で囲む必要があります。 - 多値属性の場合は 1 つでも条件を満たす値が含まれているとメッセージが表示されます。
- 条件は、変数
valueを使用しており、valueに設定している属性の値が入ります。 - 存在条件の記述方法は
value == ""またはvalue != ""になります。 - 一致条件の記述方法は
value == 値またはvalue != 値になります。
表示・属性値設定
表示・属性値設定とは、主にシステム管理者が LDAP サーバーに対してユーザーやグループエントリーを管理するとき、エントリーの属性に対してセットする値の並び替え・入力補助・バリデーション・実行時における動的な値の生成などのために使います。
ここでマッピング設定は 初期値設定 とは用途が異なります。他属性の値の変更に連動して値をセットするなど、より柔軟な要件に対応できます。
- 主な用途
- 画面上で任意の値を設定したい
- 他属性の値を参照して動的に値をセットしたい
- 他属性の値が更新されたときに連動して自動更新したい
- 実行タイミング
- エントリーに値が未設定のときのみ実行される
- 登録時 (初期値設定で値がセットされるときは実行されない)
- 更新時
- 設定値
- 他属性を参照して動的に値を生成
表示・属性値設定画面
- 一般とユーザーとグループと OpenAM の日本語/英語の表示設定が表示されます。
- 設定したい項目の鉛筆マークを押下することで、その詳細画面に遷移します。
表示・属性値設定詳細画面
- 属性に対して以下の設定が可能です。
- 表示名
- 注意事項
- 注意事項においては、HTML 形式での記述が可能となります。
- 表示順(ユーザーとグループのみ)
- 表示(ユーザーとグループのみ)
- 検索対象(ユーザーとグループのみ)
- 必須(ユーザーとグループのみ)
- 多値(ユーザーとグループのみ)
- 参照のみ(ユーザーとグループのみ)
- この設定を on にした場合、対応する属性値の参照のみが許可されます。属性値を更新することはできなくなります。
- 値のバリデーション(ユーザーとグループのみ)
- オプション値(ユーザーとグループのみ)
- マッピング設定(ユーザーとグループのみ)
- ユーザー/グループ登録時に
parentDNを使用したい場合は、属性名にucidmParentDNを入力して設定を行う必要があります。 - 属性順は、各属性の ↑↓ ボタンで入れ替えることができます。
- 表示権限は、ユーザーとグループの検索結果の表示項目として使用されます。
- 検索対象権限は、ユーザーとグループの検索時に使用する属性の対象になります。
- 必須権限は、必須属性になります。対象属性が入力されていないと更新できません。
- 多値権限は、対象属性に対して複数の値を入力できるようになります。
- 表示名と注意事項とオプション値について設定したい場合は、「詳細設定」ボタンを押下することで、設定できます。表示名と注意事項については日本語と英語両方設定する必要があります。オプション値の表示名について設定されていないものは値がそのまま表示されます。
- 値のバリデーションを設定した場合、一般ユーザーのユーザー属性変更画面にて、バリデーションで設定した内容により更新の可否が判断されます。
- バリデーションの値には正規表現を記述できます。
- 入力された値が構文エラーになる場合には本設定画面にてエラーメッセージが表示され、更新ボタンが押せなくなります。
- 細かい設定の仕様については以下になります。
- 一般と OpenAM
- 表示名と注意事項の日本語/英語については必ず入力する必要があります。
- 日本語と英語のどちらかのみの設定はできません。
- 一般の注意事項においては、HTML 形式での記述が可能となります。
- HTML 形式で記述をする際は、div タグがトップの要素となる(
<div>で始まり、</div>で終わる)よう記述をする必要があります。
- HTML 形式で記述をする際は、div タグがトップの要素となる(
- ユーザー/グループ
- 表示名の日本語/英語については必ず入力する必要があります。
- 注意事項については何も入力しない状態で設定できます。
- 日本語と英語のどちらかのみの設定はできません。
- 一般と OpenAM
- 属性値についてマッピングを設定できます。
- スクリプト内で「使用する属性」とスクリプトを入力します。
- リクエストデータに「使用する属性」が存在するときのみ、スクリプトが実行されます。
- 「使用する属性」の値が変更されるときに連動して別属性の値を変更したいときに使います。
- スクリプトはエントリ登録時に add 関数、エントリ更新時に modify 関数が呼び出されます。
- 「関数呼び出し確認」ボタンを押下することで、指定した関数の動作を確認することができます。
- 入力されたスクリプトが構文エラーになる場合には本設定画面にてエラーメッセージが表示され、更新ボタンが押せなくなります。
マッピング設定のスクリプト例
- ステータス設定のスクリプトとは仕様が異なります。
- エントリーに対する処理種別に対応する関数名を設定します。
- 一部の処理種別 (たとえば更新なら modify) のスクリプトのみ定義できます。
- 処理種別に対応する関数が定義されていない場合はスクリプトを実行しません。
- エントリーを変更するときに更新/削除のリクエストデータにセットされている属性のスクリプトは実行しません。
- 一般ユーザーまたは管理者が指定した属性の値はそのまま使います。
- 引数から渡されるオブジェクトのキー (属性名) は全て小文字に変換されます。
- キー (属性名) に対応する値は文字列の配列になります。
- 引数のロール名 (roleName) は取得できない状況があることを考慮する必要があります。
- ユーザーエントリー以外のエントリーを扱うときは空文字になります。
- カスタムロールを使うときにロール属性をリクエストデータから参照できないときは空文字になります。
- 関数の戻り値は文字列の配列を返します。
- 戻り値として空の配列を返した場合はその属性を削除します。
- 戻り値として null または undefined を返した場合は値をセットしません。
function add(req, roleName) {
// エントリーを登録するときにこの関数が呼ばれる
// 第1引数の req にはリクエストデータの属性がセットされる
// 参照例) req.givenname[0], req.uidnumber[0]
// 第2引数の roleName にはユーザー登録のみ、ロール名がセットされる (それ以外は空文字)
return ["value1", "value2"];
}
function modify(attr, reqUpd, reqDel, roleName) {
// エントリーを更新するときにこの関数が呼ばれる
// 第1引数の attr には変更前エントリーの属性がセットされる
// 参照例) attr.givenname[0]
// 第2引数の reqUpd にはリクエストデータの更新属性がセットされる
// 参照例) reqUpd.uidnumber[0]
// 第3引数の reqDel にはリクエストデータの削除属性がセットされる
// 参照例) reqDel.description[0], Object.hasOwn(reqDel, 'displayname')
// 第4引数の roleName にはユーザー更新のみ、ロール名がセットされる (それ以外は空文字)
return ["value3"];
}
function passwordModify(attr, roleName) {
// パスワードを更新するときにこの関数が呼ばれる
// 第1引数の attr には変更前エントリーの属性がセットされる
// 参照例) attr.givenname[0]
// 第2引数の roleName にはユーザー登録のみ、ロール名がセットされる (それ以外は空文字)
return ["value4"];
}
以下に実際のスクリプト設定例をいくつか記載します。
- homeDirectory 属性に対してレコード登録時に
/home/<uid>をセットしたい場合- スクリプトで使用する属性:uid
function add(req, roleName) {
return [`/home/${req.uid[0]}`];
}
- mail 属性に対してレコード登録時に
<uid>@example.comをセットしたい場合- スクリプトで使用する属性:uid
function add(req, roleName) {
return [`${req.uid[0]}@example.com`];
}
- displayName 属性に対してレコード登録時に
<sn> <givenName>をセットしたい場合- スクリプトで使用する属性:sn, givenname
function add(req, roleName) {
return [`${req.sn[0]} ${req.givenname[0]}`];
}
デザイン設定画面
- ヘッダーとフッターとパスワードポリシーの日本語/英語の設定が表示されます。
- 設定したい項目の鉛筆マークを押下することで、その詳細画面に遷移します。
デザイン設定詳細画面
- ヘッダーとフッターとパスワードポリシーデザインとパスワードの印刷デザインをカスタマイズする画面が表示されます。
- 編集項目を選択し、コード編集欄に HTML を記述します(背景色は選択しない場合、transparent になります)。
- 編集後、「プレビュー」ボタンを押下することで、どのような画面になるかを確認できます。ロールが system-superadmin のときのみ確認が行えます。
- 「保存」ボタンを押下することで、編集内容を保存できます。ロールが system-superadmin のときのみ更新が行えます。
- ヘッダーのロゴ画像については、images/header ディレクトリにロゴ画像を置くことで設定できます。ファイル名は logo.xxx(xxx は拡張子)にする必要があります。
- ファビコンの画像については、images/favicon ディレクトリに画像を置くことで設定できます。ファイル名は favicon.xxx(xxx は拡張子)にする必要があります。
- その他の画像については、images ディレクトリに配置することで、サンプルファイルのように画像を表示することが可能になります(パスワードポリシーでは対応していません)。
- パスワードポリシーデザインの内容は、ユーザー登録画面、パスワード変更画面、パスワードリセット画面に表示されます。
- パスワードの印刷デザインの内容は、ユーザー登録、パスワード変更時に表示されるパスワード印刷画面に表示されます。印刷設定によって、デザイン設定内容と異なる場合があります。
パスワードポリシーデザインの埋め込み変数
パスワードポリシーで設定されている値を表示するために埋め込み変数が用意してあります。デザイン設定のプレビュー画面では、デフォルトパスワードポリシーの値が表示されます。
| 埋め込み変数 | 説明 |
|---|---|
| .PwdMaxLength | パスワードの最大長 |
| .PwdMinLength | パスワードの最小長 |
| .PwdAlphabetCount | アルファベットの文字数 |
| .PwdUpperCount | 大文字の文字数 |
| .PwdLowerCount | 小文字の文字数 |
| .PwdSymbolCount | 記号の文字数 |
| .PwdDigitCount | 数字の文字数 |
| .PwdComplexityCount | パスワードの複雑性 |
| .PwdProhibitedString | パスワードの禁止文字 |
| .PwdNotContainName | ユーザー名を含めない |
| .PwdNotSameOldPassword | パスワードが 1 つ前と異なる |
パスワード印刷デザインの埋め込み変数
ユーザー登録、パスワード変更、CSV 一括処理でのパスワード印刷を行うために埋め込み変数が用意してあります。1 人のユーザーに対して複数のパスワードが存在する場合、.PrintPassword が順番に置き換わります。
| 埋め込み変数 | 説明 |
|---|---|
| .PrintUsername | パスワード確認時のユーザー名 |
| .PrintPassword | パスワード確認時のパスワード |
| .PrintIssuedAt | パスワード発行日時 |
サンプルのカスタムファイル
用意しているカスタムファイルの中身は以下になります。
ヘッダーとフッターの html ファイル
<div>
<h1>UCIDM</h1>
<img src="/images/osstech-logo-s.png" alt="サンプルロゴ" width="188" height="64" />
</div>
ヘッダーとフッターの css ファイル
body { background-color: transparent; }
パスワードポリシーデザインの html ファイル
<div style="padding: 1rem">
<table
style="
min-width: 100%;
background-color: rgb(255 255 255);
border-width: 1px;
border-color: rgb(209 213 219);
"
>
<thead>
<tr style="background-color: rgb(229 231 235)">
<th class="tableContents">ルール</th>
<th class="tableContents">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableContents">最大文字数</td>
<td class="tableContents">.PwdMaxLength</td>
</tr>
<tr>
<td class="tableContents">最小文字数</td>
<td class="tableContents">.PwdMinLength</td>
</tr>
<tr>
<td class="tableContents">パスワードに含めるアルファベットの文字数</td>
<td class="tableContents">.PwdAlphabetCount</td>
</tr>
<tr>
<td class="tableContents">パスワードに含める大文字の数</td>
<td class="tableContents">.PwdUpperCount</td>
</tr>
<tr>
<td class="tableContents">パスワードに含める小文字の数</td>
<td class="tableContents">.PwdLowerCount</td>
</tr>
<tr>
<td class="tableContents">パスワードに含める記号の数</td>
<td class="tableContents">.PwdSymbolCount</td>
</tr>
<tr>
<td class="tableContents">パスワードに含める数字の数</td>
<td class="tableContents">.PwdDigitCount</td>
</tr>
<tr>
<td class="tableContents">パスワードの複雑度</td>
<td class="tableContents">
英大文字、英小文字、数字、記号という4つのカテゴリから、.PwdComplexityCountつのカテゴリをパスワードに含める必要があります。
</td>
</tr>
<tr>
<td class="tableContents">禁止文字</td>
<td class="tableContents">
これらの文字(例: .PwdProhibitedString)を含めてはいけません。
</td>
</tr>
<tr>
<td class="tableContents">ユーザー名を含めない</td>
<td class="tableContents">.PwdNotContainName</td>
</tr>
<tr>
<td class="tableContents">1つ前のパスワードと異なる</td>
<td class="tableContents">.PwdNotSameOldPassword</td>
</tr>
</tbody>
</table>
<style>
.tableContents {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
padding-left: 1rem;
padding-right: 1rem;
border-width: 1px;
border-color: rgb(209 213 219);
}
</style>
</div>
パスワードポリシーデザインの css ファイル
body { background-color: transparent; }
パスワード印刷デザインの html ファイル(css ファイルはありません)
<div style="padding: 2rem; max-width: 800px; margin: 0 auto">
<div
style="
text-align: center;
margin-bottom: 2rem;
border-bottom: 2px solid rgb(55 65 81);
padding-bottom: 1rem;
"
>
<h1 style="font-size: 1.875rem; font-weight: bold; color: rgb(55 65 81); margin: 0">
アカウント通知書
</h1>
<p style="font-size: 0.875rem; color: rgb(107 114 128); margin: 0.5rem 0 0 0">
Account Notification
</p>
</div>
<table
style="
width: 100%;
background-color: rgb(255 255 255);
border-width: 1px;
border-color: rgb(209 213 219);
border-collapse: collapse;
margin-bottom: 2rem;
"
>
<thead>
<tr style="background-color: rgb(55 65 81)">
<th class="tableHeader">項目 / Item</th>
<th class="tableHeader">内容 / Content</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableContents tableLabel">ユーザー名 / Username</td>
<td class="tableContents tableValue">.PrintUsername</td>
</tr>
<tr style="background-color: rgb(249 250 251)">
<td class="tableContents tableLabel">パスワード / Password</td>
<td class="tableContents tableValue">.PrintPassword</td>
</tr>
<tr>
<td class="tableContents tableLabel">発行日時 / Issued At</td>
<td class="tableContents tableValue">.PrintIssuedAt</td>
</tr>
</tbody>
</table>
<div
style="
background-color: rgb(254 249 195);
border: 1px solid rgb(251 191 36);
border-radius: 0.375rem;
padding: 1rem;
margin-bottom: 2rem;
"
>
<h3 style="font-size: 1rem; font-weight: bold; color: rgb(146 64 14); margin: 0 0 0.5rem 0">
重要事項 / Important Notes
</h3>
<ul style="margin: 0; padding-left: 1.5rem; color: rgb(146 64 14); font-size: 0.875rem">
<li>
このアカウント情報は機密情報です。第三者との共有は禁止されています。<br />This account
information is confidential. Sharing with third parties is prohibited.
</li>
<li>
不正アクセスを防ぐため、使用後は必ずログアウトしてください。<br />Always log out after use
to prevent unauthorized access.
</li>
<li>
アカウントに関する問題が発生した場合は、システム管理者にお問い合わせください。<br />Contact
the system administrator if you experience any account-related issues.
</li>
</ul>
</div>
<div
style="
text-align: center;
border-top: 1px solid rgb(209 213 219);
padding-top: 1rem;
font-size: 0.75rem;
color: rgb(107 114 128);
"
>
<p style="margin: 0">
本書は機密文書です。適切に管理し、不要になった場合は安全に廃棄してください。<br />This
document is confidential. Please manage it appropriately and dispose of it securely when no
longer needed.
</p>
<p style="margin: 0.25rem 0 0 0">
発行者: システム管理部 / Issued by: System Administration Department
</p>
</div>
</div>
<style>
.tableHeader {
padding: 0.75rem 1rem;
text-align: left;
font-weight: bold;
color: rgb(255 255 255);
border: 1px solid rgb(209 213 219);
font-size: 0.875rem;
}
.tableContents {
padding: 0.75rem 1rem;
border: 1px solid rgb(209 213 219);
font-size: 0.875rem;
}
.tableLabel {
font-weight: bold;
background-color: rgb(243 244 246);
color: rgb(55 65 81);
width: 30%;
}
.tableValue {
color: rgb(17 24 39);
}
@media print {
body {
font-family: 'MS Gothic', monospace;
}
.tableContents {
font-size: 12px;
}
.tableHeader {
font-size: 12px;
}
h1 {
font-size: 18px !important;
}
p,
li {
font-size: 11px !important;
}
}
</style>
パスワードポリシー設定画面
- パスワードポリシーの一覧が表示されます。
- ユーザー登録時はデフォルトパスワードポリシー、パスワード変更、パスワードリセットについては各ユーザーのパスワードポリシーが適用されます
- 管理者による操作については、パスワードの長さと禁止文字のルールのみが適用されます。
- 一般ユーザーによるパスワードリセットでは、1 つ前のパスワードと異なるルールは無視されます。
- 「検索」ボタンを押下することで、設定名と対象ベース DN で検索が行えます。
- 「登録」ボタンを押下することで、パスワードポリシー登録画面に遷移します。
- 鉛筆マークを押下することで詳細画面に遷移します。
- ゴミ箱を押下することで、パスワードポリシーを削除できます。デフォルトポリシーを削除することはできません。
- 選択されたパスワードポリシーを JSON ファイルとして保存できます。
パスワードポリシー設定登録
- パスワードポリシーの設定とランダムパスワードの設定の登録を行います。「登録」ボタンを押下することで、設定内容が登録されます。
- 「インポート」ボタンを押下することで、選択された JSON ファイルの情報をそのままセットできます。「登録」ボタンを押下しないと登録されません。
パスワードポリシー適用条件
パスワードポリシー登録時・更新時にパスワードポリシーを適用するユーザーの条件を設定できます。 ある程度複雑な条件も設定できますので、いくつかの例を以下に示します。
シンプルな例
{"attributes.gidNumber": "10000"}
attributes.<属性名> と値をキーバリューとした JSON 形式で記述します。
属性名のキーは attributes. を付与する必要があり attributes. で始まらない場合は構文エラーになります。
値は文字列で指定する必要があり 10000 (数字)としたり、 [10000, 20000] (配列)とすると構文エラーになります。
and 条件
{"attributes.gidNumber": "10000", "attributes.employeeType": "staff"}
複数の条件を列挙することで and 条件を利用できます。 この場合 gidNumber が 10000 かつ、employeeType が staff のユーザーにのみ適用されるポリシーになります。
or 条件
{"or": [{"attributes.gidNumber": "10000"}, {"attributes.gidNumber": "20000"}]}
or というキーワードを指定し、値に条件のリストを指定することで、
リスト内の条件のいずれかを満たす、or 条件を利用できます。
この場合 gidNumber が 10000 または、gidNumber が 20000 のユーザーにのみ適用されるポリシーになります。
複雑な条件
{
"or": [
{"attributes.gidNumber": "10000"},
{"attributes.gidNumber": "20000"}
],
"attributes.employeeType": "staff"
}
みやすさのために改行入れています。 実際に入力する際は改行は不要です。 前述した and 条件と or 条件を組み合わせた複雑な条件になります。 この場合、gidNumber が 10000 か 20000 かつ、employeeType が staff のユーザーにのみ適用されるポリシーになります。
利用不可能な条件
現在の仕様上利用できない条件をいくつか提示します。
- 否定
- employeeType が student 以外、のような否定条件分は利用出来ません。
- 不等号
- gidNumber が 1000 以上や、uidNumber が 3000 未満のような条件は設定できません。
- 正規表現
- 正規表現を用いたパターンマッチングは利用できません。
条件エディタ
パスワードポリシーの適用条件を作成できる UI です。 属性名と値を設定すると該当するエントリにのみパスワードポリシーが適用されるようになります。 条件の追加には条件エディタ中央下部にあるプラスボタンを押してください。
条件には AND 条件と OR 条件を設定出来ます。 AND 条件に含まれている条件はすべて満たす必要があり、 OR 条件に含まれている条件はいずれかを満たす必要があります。
- AND 条件の中には属性の条件か OR 条件を含めることが出来ます
- OR 条件の中には AND 条件を含めることが出来ます
- AND 条件、OR 条件、属性条件ともに外枠右上のバツボタンを押すと条件が削除されます
パスワードポリシー設定詳細画面
- パスワードポリシーの設定とランダムパスワードの設定を編集します。「更新」ボタンを押下して更新を行います。
- 対象ベース DN と条件に一致したユーザーにそのパスワードポリシーが適用されます。何も一致するパスワードポリシーが存在しない場合はデフォルトポリシーが適用されます。
- 「削除」ボタンを押下することで、表示されているパスワードポリシーは削除されます。デフォルトポリシーを削除することはできません。
パスワードポリシー
- パスワードポリシーでは以下のルールを設定できます。
- 最大文字数
- パスワードの最大文字数を設定します。
- 最小文字数
- パスワードの最小文字数を設定します。
- アルファベットの文字数
- パスワードに含めなければならないアルファベットの最小文字数を設定します。
- 大文字の文字数
- パスワードに含めなければならない大文字アルファベットの最小文字数を設定します。
- 小文字の文字数
- パスワードに含めなければならない小文字アルファベットの最小文字数を設定します。
- 記号の文字数
- パスワードに含めなければならない記号の最小文字数を設定します。
- 数字の文字数
- パスワードに含めなければならない数字の最小文字数を設定します。
- 複雑度
- 英大文字、英小文字、数字、記号という 4 つのカテゴリから、いくつのカテゴリをパスワードに含めるかを設定します。
- 禁止文字
- パスワードに含めてはいけない禁止文字を設定します。
- ユーザー名を含めない
- ユーザー名をパスワードに含めるかどうかを設定します。有効でパスワードにユーザー名を含めてはならないになります。
- 1 つ前のパスワードと異なる
- 1 つ前のパスワードと同じパスワード更新を許可するかどうかを設定します。有効で 1 つ前のパスワードと異なる必要があるになります。
- 最大文字数
ランダムパスワード
- ランダムパスワードの設定では以下のルールを設定できます。
- 文字数
- 生成するランダムパスワードの文字数を設定します。
- 禁止文字
- 生成するランダムパスワードに含めていはいけない禁止文字を設定します。
- 文字数
初期値設定
初期値設定とは、LDAP サーバーに対してユーザーやグループエントリーを新規登録するとき、任意の属性に固定の値をセットするために使います。表示・属性値設定 のマッピング設定とは用途が異なります。
- 主な用途
- 画面で管理する必要のない属性を省略できる
- CSV 一括処理 で同じ値をセットする属性の列を省略できる
- 実行タイミング
- エントリーに値が未設定のときのみ実行される
- 登録時のみ (マッピング設定よりも先に実行される)
- 設定値
- 固定の値のみ
初期値設定画面
- ユーザーとグループの初期値設定が表示されます。
- 「登録」ボタンを押下して必要な情報を入力することで、新しく設定を登録できます。
- 編集したい設定の鉛筆マークを押下することで、詳細画面に遷移します。
- 削除したい設定のゴミ箱マークを押下することで、設定が削除されます。
初期値設定詳細画面
- 設定を編集します。
- objectClass 設定では、ユーザー/グループ登録時に付与される objectClass を設定します。
- その他の属性設定では、各属性の初期値を設定します。
ユーザーステータス設定画面
- ユーザーのステータス変更時に使用される属性名やスクリプトを設定します。
- 「ステータス機能を有効にする」がオンになっている場合、ステータス変更時に設定内容が使用されます。オフになっている場合は、この画面の設定内容は使用されず、ステータス操作を行うことができません。
- ステータス属性に入力した属性の値は、ユーザーのステータス変更時に更新されます。
- 「ステータス属性のスクリプトを利用する」がオンになっている場合、スクリプトがステータス変更時に呼び出されるようになります。オフになっている場合は、スクリプトは呼び出されません。
- 「関数呼び出し確認」ボタンを押下することで、指定した関数の動作を確認することができます。
ユーザーステータス設定のスクリプト例
- 属性マッピング設定のスクリプトとは仕様が異なります。
- ユーザーエントリーに対する処理種別に対応する関数名を設定します。
- 必ず関数の戻り値を返す必要があります。
- 関数の戻り値として null または undefined を返した場合はエラーになります。
例えば Active Directory の userAccountControl 属性を変換するときは次のようになります。
function view(values) {
// ユーザーエントリーが有効か無効かを判別するときにこの関数が呼ばれる
// 第1引数の values にはステータス属性の値が文字列の配列として渡される
// 関数の戻り値は有効・無効を表す boolean 値を返す
return (Number(values[0]) & 2) != 2;
}
function modify(values, enabled) {
// ユーザーエントリーの有効・無効を切り替えるときにこの関数が呼ばれる
// 第1引数の values にはステータス属性の値が文字列の配列として渡される
// 第2引数の enabled には有効・無効を表す boolean 値が渡される
// 関数の戻り値は文字列の配列を返す
return [
enabled ? String(Number(values[0]) & ~2) : String(Number(values[0]) | 2),
];
}
設定のエクスポート
- エクスポートしたい設定を選択します。チェックされている設定内容を JSON ファイルとしてエクスポートします。チェックが外されたものは JSON ファイルに含まれません。
- エクスポートしたファイルは、「設定のインポート」画面で使用できます。
設定のインポート
- 「設定のエクスポート」でエクスポートした JSON ファイルを選択します。ファイル選択後、インポートする設定を選択できます。チェックが外された設定の内容はインポートされません。