NetValidatePasswordPolicy 関数 (lmaccess.h)
NetValidatePasswordPolicy 関数を使用すると、アプリケーションは、アプリケーションによって指定されたアカウント データベースに対するパスワード コンプライアンスをチェックし、パスワードがパスワード ポリシーの複雑さ、古い期間、最小長、履歴の再利用要件を満たしていることを確認できます。
構文
NET_API_STATUS NET_API_FUNCTION NetValidatePasswordPolicy(
[in] LPCWSTR ServerName,
[in] LPVOID Qualifier,
[in] NET_VALIDATE_PASSWORD_TYPE ValidationType,
[in] LPVOID InputArg,
[out] LPVOID *OutputArg
);
パラメーター
[in] ServerName
関数を実行するリモート サーバーの名前を指定する定数 Unicode 文字列へのポインター。 この文字列は、 \ で始まり、その後にリモート サーバー名が続く必要があります。 このパラメーターが NULL の場合は、ローカル コンピューターが使用されます。
[in] Qualifier
将来利用するために予約されています。 このパラメーターは NULL である必要があります。
[in] ValidationType
実行するパスワード検証の種類。 このパラメーターは、次の列挙定数値のいずれかである必要があります。
typedef enum _NET_VALIDATE_PASSWORD_TYPE {
NetValidateAuthentication = 1,
NetValidatePasswordChange,
NetValidatePasswordReset,
} NET_VALIDATE_PASSWORD_TYPE, *PNET_VALIDATE_PASSWORD_TYPE;
これらの値には、次の意味があります。
値 | 意味 |
---|---|
|
アプリケーションが認証中にパスワードの検証を要求しています。 InputArg パラメーターは、NET_VALIDATE_AUTHENTICATION_INPUT_ARG構造体を指します。 この種類の検証では、パスワードの有効期限とアカウント ロックアウト ポリシーが適用されます。 |
|
アプリケーションは、パスワード変更操作中にパスワードの検証を要求しています。 InputArg パラメーターは、NET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG構造体を指します。 |
|
アプリケーションは、パスワード リセット操作中にパスワードの検証を要求しています。 InputArg パラメーターは、NET_VALIDATE_PASSWORD_RESET_INPUT_ARG構造体を指します。 この構造を指定することで、ユーザー アカウントの "ロックアウト状態" をリセットすることもできます。 |
[in] InputArg
実行するパスワード検証の種類に依存する構造体へのポインター。 構造体の型は、 ValidationType パラメーターの値によって異なります。 詳細については、 ValidationType パラメーターの説明を参照してください。
[out] OutputArg
NetValidatePasswordPolicy 関数が成功した場合 (戻り値がNerr_Success)、関数は操作の結果を含むバッファーを割り当てます。 OutputArg パラメーターには、NET_VALIDATE_OUTPUT_ARG構造体へのポインターが含まれています。 アプリケーションは、OutputArg パラメーターが指すNET_VALIDATE_OUTPUT_ARG構造体の ValidationStatus メンバーを調べて、パスワード ポリシー検証チェックの結果を確認する必要があります。 NET_VALIDATE_OUTPUT_ARG構造体には、永続的なパスワード関連情報の変更とパスワード検証の結果を含むNET_VALIDATE_PERSISTED_FIELDS構造体が含まれています。 アプリケーションは、ValidationStatus メンバーとは別に、NET_VALIDATE_PERSISTED_FIELDS構造内のすべての永続化されたフィールドをユーザー オブジェクト情報と共に保持し、今後同じユーザー オブジェクトでこの関数を呼び出すときに、永続化された情報から必要なフィールドを提供することを計画する必要があります。
NetValidatePasswordPolicy 関数が失敗した場合 (戻り値が 0 以外の場合)、OutputArg パラメーターが NULL ポインターに設定され、パスワード ポリシーを調べることができませんでした。
詳細については、「戻り値」および「解説」セクションを参照してください。
戻り値
関数が成功し、パスワードが認証、変更、またはリセットされた場合、戻り値はNERR_Successされ、関数は OutputArg パラメーターを割り当てます。
関数が失敗した場合、 OutputArg パラメーターは NULL で、戻り値はシステム エラー コードであり、次のいずれかのエラー コードになります。 考えられるすべてのエラー コードの一覧については、「 システム エラー コード」を参照してください。
リターン コード | 説明 |
---|---|
|
パラメーターが正しくありません。 InputArg パラメーターまたは OutputArg パラメーターが NULL の場合、このエラーが返されます。 このエラーは、 Qualifier パラメーターが NULL ではない場合、または ValidationType パラメーターが許可される値の 1 つでない場合にも返されます。 |
|
メモリ不足のため、操作を完了できません。 |
注釈
NetValidatePasswordPolicy 関数は、アプリケーションが提供するアカウント データベース内のユーザーのパスワードをアプリケーションが検証できるように設計されています。 この関数を使用して、パスワード がパスワード ポリシーの複雑さ、エージング、最小長、履歴の再利用要件を満たしていることを確認することもできます。 この関数は、アプリケーションがアカウント ロックアウト メカニズムを実装するための手段も提供します。
NetValidatePasswordPolicy 関数は、Active Directory アカウントのパスワードを検証しないため、この目的には使用できません。 この関数が Active Directory アカウントでパスワードをチェックする唯一のポリシーは、パスワードの複雑さ (パスワード強度) です。
NetValidatePasswordPolicy 関数を使用する一般的なシナリオは、パスワードで保護されたドキュメントを許可する Web アプリケーションとアプリケーションに対して、ユーザーによる強力なパスワードの選択を強制することです。 この関数のもう 1 つの用途は、ユーザー アカウントではなく機能操作にパスワードがアタッチされている状況で、パスワードの複雑さを確認することです。たとえば、Secure 多目的インターネット メール拡張機能 (S/MIME) 証明書ベースの公開キーで使用されるパスワードなどです。
Active Directory を実行しているドメイン コントローラーで NetValidatePasswordPolicy 関数が呼び出された場合、 セキュリティ保護可能なオブジェクトの ACL に基づいてアクセスが許可または拒否されます。 既定の ACL では、"Pre-Windows 2000 互換アクセス" グループのすべての認証済みユーザーとメンバーに情報の表示が許可されます。 メンバー サーバーまたはワークステーションでこの関数を呼び出すと、すべての認証済みユーザーが情報を表示できます。 これらのプラットフォームでの匿名アクセスと匿名アクセスの制限については、「 ネットワーク管理機能のセキュリティ要件」を参照してください。 ACL、ACE、アクセス トークンの詳細については、「Access Control モデル」を参照してください。
Domain オブジェクトのセキュリティ記述子は、NetValidatePasswordPolicy 関数のアクセスチェックを実行するために使用されます。
既定ではないセキュリティ コンテキストで NetValidatePasswordPolicy を 呼び出すには、まず LogonUser 関数を呼び出し、 dwLogonType パラメーターに LOGON32_LOGON_NEW_CREDENTIALSを指定してから、偽装の下で NetValidatePasswordPolicy を 呼び出します。 偽装の詳細については、「 クライアントの偽装」を参照してください。
NetValidatePasswordPolicy 関数の戻りコードがNerr_Success場合、関数は、操作の結果を含むNET_VALIDATE_OUTPUT_ARG構造体を含む OutputArg パラメーターが指すバッファーを割り当てます。 アプリケーションは、NET_VALIDATE_OUTPUT_ARG構造体のValidationStatus メンバーを調べて、パスワード ポリシー検証チェックの結果を確認する必要があります。 詳細については、「 NET_VALIDATE_OUTPUT_ARG」を参照してください。
NET_VALIDATE_OUTPUT_ARG構造体の ChangedPersistedFields メンバー内のすべてのデータと User オブジェクト情報を保存するのは、アプリケーションの責任であることに注意してください。 次にアプリケーションが User オブジェクトの同じインスタンスで NetValidatePasswordPolicy を呼び出す場合、アプリケーションは永続的な情報から必要なフィールドを提供する必要があります。
NetValidatePasswordPolicy を呼び出し、InputArg パラメーターでNET_VALIDATE_PASSWORD_CHANGE_INPUT_ARGまたはNET_VALIDATE_PASSWORD_RESET_INPUT_ARGを指定すると、コンピューターが使用するように構成されているパスワード フィルター DLL を介してパスワードを渡すことで、パスワードも検証されます。 パスワード フィルターの詳細については、「パスワード フィルターの 使用」を参照してください。
NetValidatePasswordPolicy 関数の戻り値が 0 以外の場合、OutputArg パラメーターは NULL に設定され、パスワード ポリシーを調べることができませんでした。
NetValidatePasswordPolicyPolicy 関数の呼び出しによって返される OutputArg パラメーターに割り当てられたメモリを解放するには、NetValidatePasswordPolicyPolicy を呼び出した後、NetValidatePasswordPolicyFree 関数を呼び出す必要があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | サポートなし |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | lmaccess.h (include Lm.h) |
Library | Netapi32.lib |
[DLL] | Netapi32.dll |
こちらもご覧ください
NET_VALIDATE_AUTHENTICATION_INPUT_ARG
NET_VALIDATE_OUTPUT_ARG
NET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG