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;

これらの値には、次の意味があります。

意味
NetValidateAuthentication
アプリケーションが認証中にパスワードの検証を要求しています。 InputArg パラメーターは、NET_VALIDATE_AUTHENTICATION_INPUT_ARG構造体を指します。 この種類の検証では、パスワードの有効期限とアカウント ロックアウト ポリシーが適用されます。
NetValidatePasswordChange
アプリケーションは、パスワード変更操作中にパスワードの検証を要求しています。 InputArg パラメーターは、NET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG構造体を指します。
NetValidatePasswordReset
アプリケーションは、パスワード リセット操作中にパスワードの検証を要求しています。 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 で、戻り値はシステム エラー コードであり、次のいずれかのエラー コードになります。 考えられるすべてのエラー コードの一覧については、「 システム エラー コード」を参照してください。

リターン コード 説明
ERROR_INVALID_PARAMETER
パラメーターが正しくありません。 InputArg パラメーターまたは OutputArg パラメーターが NULL の場合、このエラーが返されます。 このエラーは、 Qualifier パラメーターが NULL ではない場合、または ValidationType パラメーターが許可される値の 1 つでない場合にも返されます。
ERROR_NOT_ENOUGH_MEMORY
メモリ不足のため、操作を完了できません。

注釈

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

こちらもご覧ください

LogonUser

NET_VALIDATE_AUTHENTICATION_INPUT_ARG

NET_VALIDATE_OUTPUT_ARG

NET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG

NET_VALIDATE_PASSWORD_RESET_INPUT_ARG

NET_VALIDATE_PERSISTED_FIELDS

NetValidatePasswordPolicyFree

ネットワーク管理機能

ネットワーク管理の概要