バージョン 3.3 では、 nuget.exe 固有の (v1) 資格情報プロバイダーのサポートが追加されました。 それ以来、すべてのコマンド ライン シナリオ (4.8、、nuget.exe) で動作する dotnet.exeのバージョン msbuild.exeサポートが追加されました。
すべての認証方法の詳細については、 認証済みフィードからのパッケージの使用 に関するページを参照してください。
nuget.exe 資格情報プロバイダーの検出
nuget.exe 資格情報プロバイダーは、次の 3 つの方法で使用できます。
グローバル: 現在のユーザーのプロファイルで実行
nuget.exeすべてのインスタンスで資格情報プロバイダーを使用できるようにするには、それを%LocalAppData%\NuGet\CredentialProvidersに追加します。CredentialProvidersフォルダーの作成が必要になる場合があります。 資格情報プロバイダーは、CredentialProvidersフォルダーのルートまたはサブフォルダー内にインストールできます。 資格情報プロバイダーに複数のファイル/アセンブリがある場合は、サブフォルダーを使用してプロバイダーを整理できます。環境変数から:
nuget.exe環境変数をプロバイダーの場所に設定することで、資格情報プロバイダーを任意の場所に格納し、%NUGET_CREDENTIALPROVIDERS_PATH%にアクセスできるようにします。 複数の場所がある場合、この変数はセミコロンで区切られたリスト (たとえば、path1;path2) にすることができます。nuget.exeと共 に:nuget.exe 資格情報プロバイダーは、
nuget.exeと同じフォルダーに配置できます。
資格情報プロバイダーを読み込むときに、 nuget.exe は、 credentialprovider*.exeという名前の任意のファイルについて、上記の場所を順番に検索し、見つかった順序でそれらのファイルを読み込みます。 同じフォルダーに複数の資格情報プロバイダーが存在する場合は、アルファベット順に読み込まれます。
nuget.exe 資格情報プロバイダーの作成
資格情報プロバイダーは、入力を収集し、必要に応じて資格情報を取得し、適切な終了状態コードと標準出力を返す、 CredentialProvider*.exe形式で名前付けされたコマンド ライン実行可能ファイルです。
プロバイダーは、次の操作を行う必要があります。
- 資格情報の取得を開始する前に、対象の URI の資格情報を提供できるかどうかを判断します。 そうでない場合は、資格情報のない状態コード 1 が返されます。
-
NuGet.Configを変更しないでください (資格情報の設定など)。 - NuGet はプラグインにプロキシ情報を提供しないため、HTTP プロキシ構成を単独で処理します。
- UTF-8 エンコードを使用し、JSON 応答オブジェクト(下記参照)を stdout に書き込んで、資格情報またはエラーの詳細を
nuget.exeに返します。 - 必要に応じて、stderr に追加のトレース ログを出力します。 シークレットは決して stderr に書き込むべきではありません。なぜなら、詳細レベルが「normal」や「detailed」の場合、NuGet によりそうしたトレースがコンソールにエコーされるからです。
- 予期しないパラメーターは無視して、将来のバージョンの NuGet との互換性を確保する必要があります。
入力パラメーター
| パラメーター/スイッチ | Description |
|---|---|
| Uri {value} | 資格情報を必要とするパッケージ ソース URI。 |
| 非インタラクティブ | 存在する場合、プロバイダーは対話型プロンプトを発行しません。 |
| IsRetry | 存在する場合は、この試行が以前に失敗した試行の再試行であることを示します。 プロバイダーは通常、このフラグを使用して、既存のキャッシュをバイパスし、可能であれば新しい資格情報を要求します。 |
| 冗長度 {value} | 存在する場合は、"normal"、"quiet"、または "detailed" のいずれかの値を指定します。 値が指定されていない場合、既定値は "normal" になります。 プロバイダーは、標準エラー ストリームに出力する省略可能なログ記録のレベルを示すために、これを使用する必要があります。 |
終了コード
| Code | 結果 | Description |
|---|---|---|
| 0 | Success | 資格情報が正常に取得され、stdout に書き込まれています。 |
| 1 | プロバイダー該当なし | 現在のプロバイダーは、指定された URI の資格情報を提供しません。 |
| 2 | Failure | プロバイダーは、指定された URI の正しいプロバイダーですが、資格情報を指定することはできません。 この場合、nuget.exe は認証を再試行せず、失敗します。 一般的な例は、ユーザーが対話型ログインをキャンセルする場合です。 |
標準出力
| プロパティ | 注記 |
|---|---|
| ユーザー名 | 認証された要求のユーザー名。 |
| パスワード | 認証された要求のパスワード。 |
| メッセージ | 応答に関するオプションの詳細。失敗した場合に追加の詳細を表示するためにのみ使用されます。 |
stdout の例:
{ "Username" : "freddy@example.com",
"Password" : "bwm3bcx6txhprzmxhl2x63mdsul6grctazoomtdb6kfbof7m3a3z",
"Message" : "" }
資格情報プロバイダーのトラブルシューティング
現時点では、NuGet はカスタム資格情報プロバイダーのデバッグを直接サポートしていません。 問題 4598 はこの作業を追跡しています。
次の操作も実行できます。
-verbosityスイッチを使用して nuget.exe を実行して、詳細な出力を検査します。適切な場所の
stdoutにデバッグ メッセージを追加します。nuget.exe 3.3 以降を使用していることを確認します。
次のコード スニペットを使用して、起動時にデバッガーをアタッチします。
while (!Debugger.IsAttached) { System.Threading.Thread.Sleep(100); } Debugger.Break();