web-dev-qa-db-ja.com

認証を使用するようにNuGetサーバーを構成する

リリースノート NuGet 1.5の状態

NuGet now supports connecting to private repositories that require basic 
or NTLM authentication.

ただし、そこに含まれるリンクは 独自のnugetフィードをホストする ページにつながるだけであり、認証の設定方法についてはこれ以上言及していません。

インターネットからhttps経由でアクセスできるNuGetサーバーをセットアップしたいが、認証に成功したユーザーのみがサーバー上のパッケージを表示またはダウンロードできます。

documentationCreating Remote Feedsセクションで説明されているように、認証なしのアプリケーションを作成しました。イントラネット。このリポジトリで認証を有効にするにはどうすればよいですか?

追加の要件は、ソリューションに数百ドルの費用がかからないことです(最初の2つの回答は、問題を解決する可能性があるが、費用がかかる製品を促進する)。

21
Wilbert

これは、WebサイトでWindows認証を有効にし、ビルドサーバーに Sources コマンドラインオプションを介して資格情報を追加することで実行できます。デフォルトでは、資格情報は、現在のユーザーに制限されたDPAPIキーを使用して保存されます現在のマシン(したがって、ビルドサーバーの場合、サービスアカウントでログインしているときに資格情報を追加する必要があります。)

開発者ワークステーションの場合、NuGetパッケージマネージャーにフィードを追加し、フィードを更新するときに資格情報を入力/保存するだけです(プロンプトが表示されます)。

ステップ1-NuGetサーバーで認証を要求する(IIS構成)

使用する認証モジュールがIIS用にインストールされていることを確認する必要があります。NTLM認証の場合は、Windows認証モジュールが必要です。インストールしたら、IISマネージャーを開いてWebサイトにドリルダウンし、認証設定を開いてWindows認証を有効にします。サポートしたくない認証モジュール(匿名など)を必ず無効にしてください。ベーシックなど)

ユーザー資格情報が使用されていることを確認するには、サイトを右クリックして[詳細設定]を選択し、[物理パス資格情報]のボタンをクリックします。ダイアログで、「アプリケーションユーザー(パススルー認証)」が選択されていることを確認します。

標準の詳細情報IIS Windows認証の構成を参照できます TechNetで コマンドラインからの構成とネゴシエートの有効化を含みます(それが目的の場合)。

ステップ2-ソースをNuGet構成に追加(ビルドサーバー、パブリッシャー)

nuget.exe sources add -Name "Fabrikam Feed" -Source "https://nuget.fabrikam.com:443/nuget/"
nuget.exe sources add -Name "Fabirkam Publish" -Source "https://nuget.fabirkam.com:443/"

ここでは2つのエントリを追加しています。1つは通常の認証済みフィードURLとして使用されます(サーバーからパッケージを取得するため)。2つ目はサーバーへの公開(nupkgファイルの追加または更新)に使用されます。

ステップ3-追加されたソースの資格情報を更新する(ビルドサーバー、パブリッシャー)

nuget.exe sources update -Name "Fabrikam Feed" -Source "https://nuget.fabrikam.com:443/nuget/" -UserName "Developer" -Password "g0d"
nuget.exe sources update -Name "Fabrikam Publish" -Source "https://nuget.fabrikam.com:443/" -UserName "Developer" -Password "g0d"

ここで設定に認証情報を追加しました。%APPDATA%\NuGet\NuGet.configを表示すると、追加したフィードと暗号化された認証情報が表示されます。

サーバーとしてログインする機能がない場合は、StorePasswordInClearTextオプションを使用して資格情報をクリアテキストで保存できますが、共有環境では推奨されません。

ステップ4-(オプション)Visual Studio(開発者)でパブリッシュURLを無効にします

Visual Studioを開き、NuGetパッケージマネージャーの設定ダイアログに移動し、「Fabrikam Publish」フィードのチェックを外します。これは公開機能には影響しませんが、このフィードを無効にしないと、「すべて」のソースのパッケージを更新しようとするとエラーが発生します(フィードURLではなく公開URLであるため)。

ステップ5-(オプション)Visual Studio(開発者)にWindows資格情報を保存します

Visual Studioを開き、NuGetパッケージマネージャーに移動して、[Fabrikam Feed]をクリックします。資格情報の入力を求められます。ここに資格情報を入力して、保存/保存オプションにチェックマークを付けることができます。これにより、Visual Studioでフィードを更新しようとしても、常に資格情報が要求されることがなくなります。 NuGetパッケージマネージャーの最新リリースでは、フィードは標準のHTTPリクエストを使用してフェッチされ、nuget.configに保存した資格情報は使用されません。

注:

  1. プライベートで安全なフィードをホストするためのサードパーティのソリューションは必要ありません。 NuGetサーバーは無料で利用でき、NTLM/AD/WindowsセキュリティはIISとNuGetツールの両方でサポートされています。

  2. フィードに公開する必要がない開発者は、設定に資格情報を保存する必要はありません。また、「公開」フィードを設定する必要もありません。これは、ビルドサーバーまたは他のパブリッシャーにのみ必要です(re:ステップ2および3)。

  3. パッケージフィードを使用するすべての開発者は、ステップ5に関心があります。これは、ほとんどの開発者に必要なものです。 Visual Studio内からフィードを追加し、プロンプトが表示されたら資格情報を入力するだけです。

  4. 資格情報が変更された場合は、[スタート]-> [Windows資格情報の管理]に移動して、「VSCredentials_nuget.fabrikam.com」を削除します。

  5. ステップ2はVisual Studioで実行できますが、明確にするために、ここではコマンドラインを指定しました。ただし、ステップ3はコマンドライン経由で(またはNuGet APIを使用して)実行する必要があります。

  6. NuGetの将来のリリースでは、クレデンシャル情報をソリューションまたはプロジェクトレベルで保存できると噂されています(詳細は不明)。これは、ビルドサーバーにアクセスできないマルチテナントビルド環境のユーザーのみが関心を持つ可能性があります。 。

これが他の誰かを助けることを願っています!

43
Shaun Wilson

私が実際に選択したソリューションは、TeamCityをNuGetサーバーとして使用することでした。 nugetプッシュ機能がないため、セットアップが少し面倒ですが、認証されたユーザーのみにNuGetパッケージを提供する追加コストなしで、うまく機能します。

2
Wilbert

本当に安全なフィードが必要でインターネットに公開する場合は、基本認証を必要とするプライベートフィードを作成できる MyGet.org をご覧ください。デフォルトではSSL/HTTPSです。

希望するIDプロバイダー(Live Id、Facebook、Google、Stackoverflow、GitHub、OAuthなど)、または独自の企業ADFS(エンタープライズ予定)。

詳細: https://www.myget.org/plans Visual Studio内またはビルドサーバーで認証を設定する方法については、 https:// docs。 myget.org および blog 。さらにサポートが必要な場合は、お問い合わせフォームまたはMyGetでタグ付けされたStackOverflowの質問を通じて Twitter をサポートさせていただきます。

0
Xavier Decoster