先日こんな発表がありました。
要はVSTSのサービスとしてPrivateなNuget リポジトリを提供し、かつその認証・認可にVSTSのユーザー・グループもしくはAzure Active Direcotryが使える、というものです。これは今までのNuget リポジトリではできないことでした。なぜかというと、Nuget クライアント側はBASICもしくはNTLM認証しか対応していなかったためです。Nuget 3.3 になってCredential Providerをサポートしたため、Providerを作成すればおそらく認証・認可の仕組みを自前で構築できますが、SaaSとしてすべて準備された状態ですぐに使える、AADで既存の認証・認可をそのまま使える、古いNugetクライアントやVisual Studio Pluginも用意されている、といった点がVSTSの機能を使うメリットになります。
というわけで今回はVSTSのこの機能の使い方を紹介します。
まず準備として、当然ながらVSTSを用意します。Nugetの認証にMicrosoftアカウントを使うかAADを使うかは実はこの時点で決まっており、AADを使う場合にはその組織の属するユーザーでログインした状態でVSTSを作成し、組織のAADとリンクさせておく必要があります。実際の手順はこのあたりに詳しく書いてあります*1。また現時点では、VSTSはUSリージョンに作成しないとPrivate Nugetリポジトリは利用できないようです*2。
Sign up for Visual Studio Team Services
なお、AADとリンクさせている場合、Nugetの認証はその組織に属するユーザーに限定されます*3。VSTSを作成したら下記ページからPrivate Nugetが使えるようになるextensionをインストールします。
追加したら、適当なVSTSのプロジェクトを開くと、Package
>Feeds
というリンクが追加されます。プロジェクトの中に表示されますが、作成してFeed(Nuget リポジトリサーバー)はプロジェクト間で共有されました。New
ボタンを押して、名前と説明、そのFeedの読み取り権限とパッケージの追加権限を指定します。
作成したら、次のような画面が表示され、Nugetクライアントごとに追加の手順が書いてあります。Visual Studio 2015 Update1 以降の場合は次のように普通にNugetソースを追加するだけです。
追加した後、初回のアクセス時にはVisual Studioのライセンス認証などで表示されるポップアップが出てきて、Microsoftアカウントでの認証を求められるので認証します。AADにリンクしたVSTSの場合は企業や学校のアカウントとして認証します。
それより前のVisual StudioやNugetクライアントの場合は専用のユーザー/パスワードを生成します。この画面でGenerate Key
をクリックします。
するとパスワードが生成されるので、このコマンドをそのまま実行します。Nuget 3系と2系はソースURLが違うため、パスワードも異なります。
非常にお手軽にセキュアなPrivate Nuget リポジトリが使えるようになりました。