パスワード同期

この機能を使用すると、以下のパスワード同期ができます。

  1. リアルタイムパスワードシンクロナイザーを介したパスワード
  2. カスタムスクリプトを介したパスワード

[パスワードシンクロナイザー]では、以下の設定が可能です。

  • 実行されたセルフサービスアクション(パスワードリセットまたはパスワード変更)がADに反映された後の、リンクしているユーザーアカウントとのパスワード同期を自動化
  • 実行されたロック解除アクションがADに反映された後の、リンクしているユーザーアカウントのロック解除を自動化
  • リンクしているユーザーアカウントとのパスワード同期を強制。パスワード同期中に、リンクしているアカウントを解除することはできません。
  • ユーザーが自身のADアカウントをパスワード同期から除外できるようにする
  • :ユーザーがWindowsアカウントと、Windows以外のアカウントそれぞれのパスワードを別々に管理したいとします。このオプションを管理者側で設定すると、ユーザーはパスワード同期されるアカウントの一覧からADを解除できます。Windowsパスワードに影響を与えることなく、Windows以外のアカウント(Googleアプリアカウント、Microsoft 365アカウントなど)のパスワードをリセットできるようになります。
  • セルフサービスアクション(パスワードのリセット、アカウントのロック解除、パスワードの変更)を実行する際に、デフォルトでアカウントの選択を解除したままにすることで、パスワード同期を実行したいリンクしているアカウントを、ユーザーが選択できるようにします。
  • ユーザーがSSO用のエンタープライズアプリケーションへのアクセス権限がなく、パスワード同期を行うためにアカウントリンクが有効化されている場合に、ユーザーのセルフサービスポータルからアプリケーションタブを削除するには、[自動アカウントリンクオプションが有効になっている場合は、[アプリケーション]タブを非表示にします。]のチェックボックスにチェックを入れます。

[ポストアクション]では、次の設定が可能です。

  • 他のプロバイダーとパスワード同期するためにカスタムスクリプトを実行する
  • 他のプロバイダーとアカウントロック解除ステータスを同期するカスタムスクリプトを実行する

セキュリティに関する重要な考慮事項

カスタムスクリプトを実装する際は、以下の手順に従う必要があります。

  • スクリプトファイルは、<ADSelfService Plus インストールディレクトリ>\Scripts内に配置する必要があります。サブフォルダーの参照は許可されていません。
  • スクリプトコマンドには、ファイル名と引数のみを含める必要があります。
  • 最初の引数は拡張子を付けたファイル名でなければなりません。VBScript(.vbs)とPowerShellスクリプト(.ps1)のみ使用可能です。
  • スクリプトコマンドでは「..」を使用できません。
  • スクリプトに渡される引数は、コマンドインジェクション攻撃を防ぐためにBase64でエンコードされます。

引数のデコード

コマンドラインコマンドの入力検証が不十分な場合、攻撃者がホストオペレーティングシステム上で無作為にコマンドを実行する可能性があります。これらの攻撃からユーザーを保護するために、スクリプトのすべての引数はBase64でエンコードされます。これらの引数は、実行前にスクリプト内でデコードする必要があります。

注意:上記を円滑に実行するために、scriptsフォルダーには二つのファイル(sample-base64.vbsとSample-base64.ps1)が含まれています。これらのファイルには、Base64からデコードするサンプルコードが含まれています。

VBScriptでBase64をデコード

<インストールディレクトリ>/Scripts/utils/Base64Decoder.vbsにあるヘルパーファイルには、Base64Decode関数が含まれています。スクリプトでこの関数を利用して、Base64値をデコードできます。

  • Base64Decoder.vbsファイルをスクリプトにインポートします。
  • エンコードされた値をBase64Decode関数に渡します。この関数は値をデコードし、UTF-8文字列を返します。

VBScriptでのBase64のデコード

				Include("utils\Base64Decoder.vbs")
For Each arg In WScript.Arguments
        Dim decodedArg
        		decodedArg = Base64Decode(arg)
        f.WriteLine("Before decoding: " + arg)
        f.WriteLine("After decoding: " + decodedArg)
Next
				

PowerShellスクリプトでのBase64のデコード

  • エンコードされた文字列を[System.Convert]::FromBase64String関数に渡します。これにより、デコードされた値がバイト配列として返されます。
  • バイト配列を[System.Text.Encoding]::UTF-8.GetString関数に渡します。これにより、バイト配列がUTF-8文字列に変換されます。

PowerShellスクリプトでのBase64のデコード

foreach ($arg in $args) {
    				$decodedArg = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($arg))
    Add-Content -Path sample-base64-test.txt -Value "Before decoding: $arg"
    Add-Content -Path sample-base64-test.txt -Value "After decoding: $decodedArg"
}
					
       概要