ユーザープロファイル画面(管理者用)

ユーザープロファイル画面(管理者用)では、主に以下の画面を提供しています。

管理者用画面へのアクセス

https://<ホスト名>/ui/admin/login にアクセスします。

ユーザープロファイル画面へのアクセス URL は環境によって異なります。

ログイン画面

ユーザー名/パスワードを入力し、「ログイン」ボタンを押下してログインを行います。パスワードリセットについては、ID 連携管理画面で行います。

ログイン後トップ画面

以下の画面に遷移するボタンが表示されます。

  • ユーザー管理
  • グループ管理
  • 履歴一覧
  • CSV 一括処理
    • CSV 一括取込
    • CSV 処理結果
  • 各種設定
    • ロール設定
    • 表示・属性値設定
    • デザイン設定
    • パスワードポリシー設定
    • 初期値設定
    • ユーザーステータス設定

画面左側に以下の各種メニューが表示されます。

  • ユーザー管理
    • ユーザー管理画面に遷移します。
  • グループ管理
    • グループ管理画面に遷移します。
  • CSV 一括処理
    • CSV 一括取込
      • CSV 一括取込画面に遷移します。
    • CSV 処理結果
      • CSV 処理結果画面に遷移します。
  • 履歴一覧
    • 履歴一覧画面に遷移します。
  • 各種設定
    • ロール設定
      • ロール設定画面に遷移します。
    • 表示・属性値設定
      • 表示・属性値設定画面に遷移します。
    • デザイン設定
      • デザイン設定画面に遷移します。
    • パスワードポリシー設定
      • パスワードポリシー設定画面に遷移します。
    • 初期値設定
      • 初期値設定画面に遷移します。
    • ユーザーステータス設定
      • ユーザーステータス設定画面に遷移します。

画面右上にユーザー名があり、このユーザー名を押下することで、以下の各種メニューが表示されます。

  • アカウント情報
    • 押下することで、ID 連携管理画面のアカウント情報変更画面に遷移します。
  • パスワード変更
    • 押下することで、ID 連携管理画面のパスワード変更画面に遷移します。
  • ログアウト
    • このリンクをクリックすることで、ログアウトが行われます。

ユーザー管理画面

  • ユーザーの管理が行えます。
  • キーワード検索では、検索ボックスに検索ワードを入れ検索ボタンを押下すると、表示・属性値設定画面で設定されている「検索対象」属性に対して検索ワードを含むユーザーを検索し、画面上に表示します。
  • 詳細検索では、表示・属性値設定画面で設定されている「検索対象」属性の項目が表示されます。オプションを設定している属性に対してはチェックボックスが表示されます。検索ボタンを押下することで絞り込み検索が行えます。「その他」の検索では、オプション値以外で検索を行いますが、値が設定されていないユーザーを検索することはできません。
  • 検索結果の表示列は、表示・属性値設定画面で設定されている「表示」属性の項目がデフォルトになります。
  • 「CSV エクスポート」ボタンを押下することで、表示されているユーザーの一覧を CSV ファイルとしてエクスポートできます。表示・属性値設定画面で設定している属性が使用されます。「参照のみ」の属性は対象外となります。
  • ハンバーガーボタンを押すことで表示項目の一覧が表示されます。チェックボックスを操作することで画面上に表示する項目の on/off を切り替えられます。
  • 行内一番左側のアイコンはユーザーのステータスを表します。緑色のユーザーアイコンは有効状態であることを表し、グレーのユーザーアイコンに赤いバツ印のついたアイコンはユーザーが無効状態であることを表します。
  • 対象ユーザーの詳細画面に遷移するボタンと削除ボタンとユーザーのステータス切り替えボタンとパスワード変更ボタンと認証デバイスの設定を行うボタンが表示されます。
  • 登録ボタンを押下すると、ユーザー登録画面に遷移します。
  • 認証デバイス設定を行うボタンは、TOTP と Passkey の登録を行う URL が何も設定されていない場合は表示されません。

ユーザー詳細

  • ユーザーの属性を更新します。
  • 画面上部の削除ボタンからユーザーの削除が行えます。
  • 画面上部の無効化ボタンからユーザーの無効化が行えます。またすでに無効状態のユーザーの場合は有効化ボタンになり、ユーザーの有効化が行えます。無効になったユーザーはユーザープロファイル画面にログインできなくなります。
  • 編集したい属性の値を書き換えて更新ボタンを押すと、ユーザーの属性を更新出来ます。
  • テキストボックス下部のプラスボタンを押すと、テキストボックスが 1 つ追加されます。また、テキストボックス右側のマイナスボタンを押すと、テキストボックスが 1 つ削除されます。
  • 更新ボタン上部のプラスボタンを押すと編集属性を追加出来ます。また、属性名左側のゴミ箱ボタンを押すと編集属性を削除出来ます。
  • テキストボックス内が空の場合は更新時には値なしとして無視されます。
  • 画面下部の所属グループのテーブルにて、現在所属しているグループの一覧を確認できます。
  • 所属グループ名を選択すると、選択した所属グループのグループ詳細画面に遷移します。
  • 所属グループのテーブル上部の「所属グループ登録」から、任意のグループへの所属処理が行えます。所属したいグループにチェックを入れて「所属グループ登録」ボタンを押してください。
  • 所属グループのテーブル上部の「所属グループ削除」から、任意のグループへの所属解除処理が行えます。所属解除したいグループにチェックを入れて「所属グループ削除」ボタンを押してください。

ユーザーパスワード変更

  • ユーザーのパスワードを管理者が設定します。
  • このときのパスワードルールとして、パスワードの長さと禁止文字が適用されます。
  • ポリシーを満たすパスワードを入力し、更新ボタンを押すことでパスワードを更新出来ます。
  • AD に存在するユーザーのパスワード変更の場合、LDAPS 接続である必要があります。

ユーザー登録

  • ユーザーの登録が行えます。
  • 値のテキストボックスに設定する値を入力し、画面下部の登録ボタンを押して登録してください。
  • マルチバリューのテキストボックス下部のプラスボタンを押すと、テキストボックスが 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 を入力するたびに、適切なパスワードポリシーを検索します。

認証デバイス設定画面

  • 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 制約をかけていた場合、登録に失敗する場合があります。
  • 任意の属性名の属性を設定できますが、サーバー側で未定義の属性は登録に失敗する場合があります。
  • 画面下部の所属メンバーのテーブルにて、現在所属しているメンバーの一覧を確認できます。
  • メンバー名を選択すると、選択したメンバーのユーザー詳細画面に遷移します。
  • 所属メンバーのテーブル上部の「メンバー登録」から、任意のメンバーの登録処理が行えます。登録したいメンバーにチェックを入れて「メンバー登録」ボタンを押してください。
  • 所属メンバーのテーブル上部の「メンバー削除」から、任意のメンバーの削除処理が行えます。削除したいメンバーにチェックを入れて「メンバー削除」ボタンを押してください。

CSV 一括処理画面

  • CSV 一括取込画面で、CSV 一括処理を行えます。
    • CSV ファイル、リソースタイプ、操作種別を選択後、CSV 一括取込ボタンを押下することで、CSV データの内容が送信されます。
    • CSV ファイルを選択後、プレビューボタンを押下することで、CSV の内容(最初の 1000 件が表示されます。)
  • CSV の一括処理が完了した後、CSV 処理結果画面でその結果を確認できます。
    • 失敗のレコードがある場合、失敗のレコード数右のダウンロードアイコンを押下することで、一括処理に失敗したレコードだけが抽出された CSV ファイルをダウンロードできます。
    • テーブル一番右のアイコンを押下することで、CSV ID に対応する一括処理の履歴の詳細を確認できます。

履歴一覧画面

  • ログイン関係の認証履歴と LDAP の操作履歴の確認が行えます。
  • 履歴の検索が行えます。
  • エクスポート機能を使うことで特定の期間の全てのログを1つのファイルにまとめられます。

ロール設定画面

  • ロールとタイプの権限設定が表示されます。
  • 設定したい項目の鉛筆マークを押下することで、その詳細画面に遷移します。
  • カスタムロール機能を有効にすると、一般ユーザー画面ではカスタムロール、無効にすると UCIDM のシステムロール ldap-user が使用されます。
  • カスタムロールの設定では、カスタムロールの登録・削除、スクリプトの設定が行えます。
    • カスタムロールの登録では、ロール名とそのロールの説明を入力することで登録します。
    • 一般ユーザーがログインするときにカスタムロールを使うときの属性名やスクリプトを設定します。
    • 「カスタムロール属性のスクリプトを利用する」がオンになっている場合、カスタムロールを取得するときにスクリプトが呼び出されるようになります。オフになっている場合は、スクリプトは呼び出されません。
    • 「関数呼び出し確認」ボタンを押下することで、指定した関数の動作を確認することができます。

カスタムロール有効設定のスクリプト例

  • ユーザーステータス設定のスクリプトとは仕様が異なります。
  • カスタムロール名を返す getRoleName() という名前で関数を設定します。
  • 必ず関数の戻り値を返す必要があります。
    • 関数の戻り値として null または undefined を返した場合は一般ログイン時のときはデフォルトロールが使われます。

例えば、カスタムロール属性の値の 2 番目の要素をカスタムロール名とするときは次のようになります。

function getRoleName(values) {
  // カスタムロールを取得するときにこの関数が呼ばれる
  // 第1引数の values にはカスタムロール属性の値が文字列の配列として渡される
  // 関数の戻り値はカスタムロールの名前を表す string 値を返す
  return values[1];
}

ロール設定詳細画面

  • メニュー設定では、ユーザーのホーム画面で表示する画面を設定します。カスタムロールを使用することで、一部のユーザーには表示しないようにすることが可能になります。
  • 属性名は、表示設定画面で設定したユーザーとグループの属性が使用されます。使用しない場合は、全ての権限をオフにします。
  • 属性に対して、「参照」、「編集」、「削除」を設定し、「更新」ボタンを押下することで、更新できます。
  • 参照権限が与えられていない属性は、ユーザー属性変更画面に表示されません。
  • 参照権限は、一般ユーザーは更新できず、表示のみになります。
  • 編集権限は、一般ユーザーが変更できるようになります。
  • 削除権限は、一般ユーザーが何も入力しない状態で更新を行うと、その属性が削除されます。
  • 「インポート」ボタンを押下することで、選択された JSON ファイルの情報をそのままセットできます。「更新」ボタンを押下しないと反映されません。
  • 「エクスポート」ボタンを押下することで、設定された情報を JSON ファイルとして保存できます。
  • 「編集」ボタンを押下してオンにすると、自動で「参照」ボタンがオンになります。
  • 「削除」ボタンを押下してオンにすると、自動で「編集」ボタンがオンになります。
  • 通知設定は、一般ユーザーのホーム画面にメッセージを表示する設定を行います。
    • 日本語と英語のメッセージを両方設定する必要があります。
    • メッセージで HTML を使用する場合は、<div> で囲む必要があります。
    • 多値属性の場合は 1 つでも条件を満たす値が含まれているとメッセージが表示されます。
    • 条件は、変数 value を使用しており、 value に設定している属性の値が入ります。
    • 存在条件の記述方法は value == "" または value != "" になります。
    • 一致条件の記述方法は value == 値 または value != 値 になります。

表示・属性値設定

表示・属性値設定とは、主にシステム管理者が LDAP サーバーに対してユーザーやグループエントリーを管理するとき、エントリーの属性に対してセットする値の並び替え・入力補助・バリデーション・実行時における動的な値の生成などのために使います。

ここでマッピング設定は 初期値設定 とは用途が異なります。他属性の値の変更に連動して値をセットするなど、より柔軟な要件に対応できます。

  • 主な用途
    • 画面上で任意の値を設定したい
    • 他属性の値を参照して動的に値をセットしたい
    • 他属性の値が更新されたときに連動して自動更新したい
  • 実行タイミング
    • エントリーに値が未設定のときのみ実行される
    • 登録時 (初期値設定で値がセットされるときは実行されない)
    • 更新時
  • 設定値
    • 他属性を参照して動的に値を生成

表示・属性値設定画面

  • 一般とユーザーとグループと OpenAM の日本語/英語の表示設定が表示されます。
  • 設定したい項目の鉛筆マークを押下することで、その詳細画面に遷移します。

表示・属性値設定詳細画面

  • 属性に対して以下の設定が可能です。
    • 表示名
    • 注意事項
      • 注意事項においては、HTML 形式での記述が可能となります。
    • 表示順(ユーザーとグループのみ)
    • 必須(ユーザーとグループのみ)
    • 多値(ユーザーとグループのみ)
    • 参照のみ(ユーザーとグループのみ)
      • この設定を on にした場合、対応する属性値の参照のみが許可されます。属性値を更新することはできなくなります。
    • 値のバリデーション(ユーザーとグループのみ)
    • オプション値(ユーザーとグループのみ)
    • マッピング設定(ユーザーとグループのみ)
  • ユーザー/グループ登録時に parentDN を使用したい場合は、属性名に ucidmParentDN を入力して設定を行う必要があります。
  • 必須権限は、必須属性になります。対象属性が入力されていないと更新できません。
  • 多値権限は、対象属性に対して複数の値を入力できるようになります。
  • 「インポート」ボタンを押下することで、選択された JSON ファイルの情報をそのままセットできます。「更新」ボタンを押下しないと反映されません(ユーザーとグループのみ)。
  • 「エクスポート」ボタンを押下することで、設定された情報を JSON ファイルとして保存できます(ユーザーとグループのみ)。
  • 表示名と注意事項とオプション値について設定したい場合は、「詳細設定」ボタンを押下することで、設定できます。表示名と注意事項については日本語と英語両方設定する必要があります。オプション値の表示名について設定されていないものは値がそのまま表示されます。
  • 値のバリデーションを設定した場合、一般ユーザーのユーザー属性変更画面にて、バリデーションで設定した内容により更新の可否が判断されます。
    • バリデーションの値には正規表現を記述できます。
  • 細かい設定の仕様については以下になります。
    • 一般と OpenAM
      • 表示名と注意事項の日本語/英語については必ず入力する必要があります。
      • 日本語と英語のどちらかのみの設定はできません。
    • 一般の注意事項においては、HTML 形式での記述が可能となります。
      • HTML 形式で記述をする際は、div タグがトップの要素となる(<div> で始まり、</div> で終わる)よう記述をする必要があります。
    • ユーザー/グループ
      • 表示名の日本語/英語については必ず入力する必要があります。
    • 注意事項については何も入力しない状態で設定できます。
    • 日本語と英語のどちらかのみの設定はできません。
  • 属性値についてマッピングを設定できます。
    • スクリプト内で「使用する属性」とスクリプトを入力します。
    • リクエストデータに「使用する属性」が存在するときのみ、スクリプトが実行されます。
      • 「使用する属性」の値が変更されるときに連動して別属性の値を変更したいときに使います。
    • スクリプトはエントリ登録時に 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 になります)。
  • 編集後、「確認」ボタンを押下することで、どのような画面になるかを確認できます。
  • 「保存」ボタンを押下することで、編集内容を保存できます。
  • ヘッダーのロゴ画像については、images/header ディレクトリにロゴ画像を置くことで設定できます。ファイル名は logo.xxx(xxx は拡張子)にする必要があります。
  • ファビコンの画像については、images/favicon ディレクトリに画像を置くことで設定できます。ファイル名は favicon.xxx(xxx は拡張子)にする必要があります。
  • その他の画像については、images ディレクトリに配置することで、サンプルファイルのように画像を表示することが可能になります(パスワードポリシーでは対応していません)。
  • パスワードポリシーの内容は、ユーザー登録画面、パスワード変更画面、パスワードリセット画面に表示されます。

パスワードポリシーの埋め込み変数

パスワードポリシーで設定されている値を表示するために埋め込み変数が用意してあります。デザイン設定のプレビュー画面では、デフォルトパスワードポリシーの値が表示されます。

| 埋め込み変数 | 説明 | | :——————— | :––––––––––––– | — | | .PwdMaxLength | パスワードの最大長 | | .PwdMinLength | パスワードの最小長 | | .PwdAlphabetCount | アルファベットの文字数 | | .PwdUpperCount | 大文字の文字数 | | .PwdLowerCount | 小文字の文字数 | | .PwdSymbolCount | 記号の文字数 | | .PwdDigitCount | 数字の文字数 | | .PwdComplexityCount | パスワードの複雑性 | | .PwdProhibitedString | パスワードの禁止文字 | | .PwdNotContainName | ユーザー名を含めない | | .PwdNotSameOldPassword | パスワードが 1 つ前と異なる | |

サンプルのカスタムファイル

用意しているカスタムファイルの中身は以下になります。

ヘッダーとフッターの 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; }

パスワードポリシー設定画面

  • パスワードポリシーが表示されます。
  • ユーザー登録時はデフォルトパスワードポリシー、パスワード変更、パスワードリセットについては各ユーザーのパスワードポリシーが適用されます
    • 管理者による操作については、パスワードの長さと禁止文字のルールのみが適用されます。
    • 一般ユーザーによるパスワードリセットでは、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 と条件に一致したユーザーにそのパスワードポリシーが適用されます。何も一致するパスワードポリシーが存在しない場合はデフォルトポリシーが適用されます。
  • 「インポート」ボタンを押下することで、選択された JSON ファイルの情報をそのままセットできます。「更新」ボタンを押下しないと反映されません。
  • 「エクスポート」ボタンを押下することで、設定された情報を JSON ファイルとして保存できます。
  • 「削除」ボタンを押下することで、表示されているパスワードポリシーは削除されます。デフォルトポリシーを削除することはできません。

パスワードポリシー

  • パスワードポリシーでは以下のルールを設定できます。
    • 最大文字数
      • パスワードの最大文字数を設定します。
    • 最小文字数
      • パスワードの最小文字数を設定します。
    • アルファベットの文字数
      • パスワードに含めなければならないアルファベットの最小文字数を設定します。
    • 大文字の文字数
      • パスワードに含めなければならない大文字アルファベットの最小文字数を設定します。
    • 小文字の文字数
      • パスワードに含めなければならない小文字アルファベットの最小文字数を設定します。
    • 記号の文字数
      • パスワードに含めなければならない記号の最小文字数を設定します。
    • 数字の文字数
      • パスワードに含めなければならない数字の最小文字数を設定します。
    • 複雑度
      • 英大文字、英小文字、数字、記号という 4 つのカテゴリから、いくつのカテゴリをパスワードに含めるかを設定します。
    • 禁止文字
      • パスワードに含めてはいけない禁止文字を設定します。
    • ユーザー名を含めない
      • ユーザー名をパスワードに含めるかどうかを設定します。オンでパスワードにユーザー名を含めてはならないになります。
    • 1 つ前のパスワードと異なる
      • 1 つ前のパスワードと同じパスワード更新を許可するかどうかを設定します。オンで 1 つ前のパスワードと異なる必要があるになります。

初期値設定

初期値設定とは、LDAP サーバーに対してユーザーやグループエントリーを新規登録するとき、任意の属性に固定の値をセットするために使います。表示・属性値設定 のマッピング設定とは用途が異なります。

  • 主な用途
    • 画面で管理する必要のない属性を省略できる
    • CSV 一括処理 で同じ値をセットする属性の列を省略できる
  • 実行タイミング
    • エントリーに値が未設定のときのみ実行される
    • 登録時のみ (マッピング設定よりも先に実行される)
  • 設定値
    • 固定の値のみ

初期値設定画面

  • ユーザーとグループの初期値設定が表示されます。
  • 「インポート」ボタンを押下することで、選択された JSON ファイルの情報をそのまま反映できます。
  • 「エクスポート」ボタンを押下することで、設定された情報を JSON ファイルとして保存できます。
  • 「登録」ボタンを押下して必要な情報を入力することで、新しく設定を登録できます。
  • 編集したい設定の鉛筆マークを押下することで、詳細画面に遷移します。
  • 削除したい設定のゴミ箱マークを押下することで、設定が削除されます。

初期値設定詳細画面

  • 設定を編集します。
    • objectClass 設定では、ユーザー/グループ登録時に付与される objectClass を設定します。
    • その他の属性設定では、各属性の初期値を設定します。

ユーザーステータス設定画面

  • ユーザーのステータス変更時に使用される属性名やスクリプトを設定します。
  • 「インポート」ボタンを押下することで、選択された JSON ファイルの情報をそのままセットできます。「更新」ボタンを押下しないと反映されません。
  • 「エクスポート」ボタンを押下することで、設定された情報を JSON ファイルとして保存できます。
  • 「ステータス機能を有効にする」がオンになっている場合、ステータス変更時に設定内容が使用されます。オフになっている場合は、この画面の設定内容は使用されず、ステータス操作を行うことができません。
  • ステータス属性に入力した属性の値は、ユーザーのステータス変更時に更新されます。
  • 「ステータス属性のスクリプトを利用する」がオンになっている場合、スクリプトがステータス変更時に呼び出されるようになります。オフになっている場合は、スクリプトは呼び出されません。
  • 「関数呼び出し確認」ボタンを押下することで、指定した関数の動作を確認することができます。

ユーザーステータス設定のスクリプト例

  • 属性マッピング設定のスクリプトとは仕様が異なります。
  • ユーザーエントリーに対する処理種別に対応する関数名を設定します。
  • 必ず関数の戻り値を返す必要があります。
    • 関数の戻り値として 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),
  ];
}