メインコンテンツまでスキップ

Visual Studioのサインインに関する問題のトラブルシューティング

Visual Studioの製品登録やAzureへの接続、GitHub Copilotの利用など、Visual Studioのサインインが必要となる場面は割と多くありますが、企業の環境ではネットワークの制限やプロキシサーバーの構成などによりサインインに失敗することがあります。というか、体感では多くの開発現場ではネットワークで何らかの制限がかかっているため、サインインに苦労することは珍しくありません。過去に私が遭遇した問題とその解決方法を以下にまとめてみたので、同様の問題でお困りの方は参考にしてみてください。

Microsoftアカウントでサインインできない場合

必要なURLがブロックされていないか確認する

Visual Studioを使用する際に許可が必要なURLはドキュメントで表にまとめられています。 サインインで必要となるURLはその中の「サインイン」に記載されている以下のURLです。(内容は本記事執筆時点になりますので、最新の情報はドキュメントを確認してください。)

  • *.msftauth.net
  • *.live.com
  • visualstudio.microsoft.com
  • app.vsspsext.visualstudio.com
  • app.vssps.visualstudio.com
  • api.vstsusers.visualstudio.com
  • go.microsoft.com
  • graph.windows.net
  • graph.microsoft.com
  • login.microsoftonline.com
  • management.core.windows.net
  • management.azure.com
  • api.subscriptions.visualstudio.microsoft.com

サインインで必要なURLがブロックされている場合の挙動は、サインインに使用する方法やブロックされているURLによって異なります。以下にいくつかの例を示します。

■ 埋め込みWebブラウザーの場合

"The browser based authentication dialog failed to complete. Reason: The download has failed (the connection was interrupted)."というメッセージが表示されます。Reasonの後に続く内容はブロックされているURLやブロックされた理由によって異なる可能性があります。この例ではプロキシサーバーがTCP接続を切断した(RSTを返した)場合のメッセージですが、タイムアウトやHTTPエラーコードが表示される場合もあります。

埋め込みWebブラウザー

■ システムWebブラウザーの場合

ブラウザーが起動しますが、サインインページが表示されず、"このサイトにアクセスできません"や"このページは表示できません"などのエラーメッセージが表示されます。既定のブラウザーによって表示されるメッセージは異なりますが、いずれの場合もブロックされているURLやブロックされた理由によって異なる可能性があります。この例ではプロキシサーバーがTCP接続を切断した(RSTを返した)場合のメッセージですが、タイムアウトやHTTPエラーコードが表示される場合もあります。

システムWebブラウザー

■ Windows認証ブローカーの場合

"WAM Error"が表示されます。詳細内容はブロックされているURLやブロックされた理由によって異なる可能性があります。この例ではプロキシサーバーがTCP接続を切断した(RSTを返した)場合のメッセージですが、タイムアウトやHTTPエラーコードが表示される場合もあります。

Windows認証ブローカー

Entra ID(旧Azure AD)の条件付きアクセスポリシーを確認する

Entra IDの条件付きアクセスポリシーでサインインがブロックされている場合、以下のようなエラーメッセージが表示されることがあります。

現時点ではこれにアクセスできません
サインインは完了しましたが、このリソースへのアクセス条件を満たしていません。たとえば、管理者によって制限されているブラウザー、アプリ、または場所からアクセスしている可能性があります。

トラブルシューティングの詳細
管理者に問い合わせる場合、この情報を送信してください。

エラー内容の詳細(クリップボードにコピーされる内容)は以下のようになります。

Error Code: 53003 
Request Id: 897a9fd1-aab8-409b-1e8b-303f65d36b00
Correlation Id: 996ac651-4097-4fcd-337f-a08be8ad0646
Timestamp: 2026-02-01T00:28:37.771Z
アプリ名: Visual Studio
アプリ ID: 04f0c124-f2bc-4f59-8241-bf6df9866bbd
IP アドレス: 123.123.123.123
デバイスの識別子: 使用できません
デバイスのプラットフォーム: Windows 10
デバイスの状態: Unregistered

条件付きアクセスポリシー

このエラーが表示される場合、メッセージに記載されている通りアカウントの管理者によってサインインが制限されている可能性があります。これはMicrosoft Entra IDの条件付きアクセスポリシーの機能によるもので、自分がEntra IDの管理者権限を持っていない場合、管理者に連絡して条件付きアクセスポリシーを確認してもらい、サインインを許可してもらう必要があります。管理者に確認してもらう際は、上記のエラー内容の詳細を提供すると問題の特定がスムーズになります。

ちなみに、Entra IDの条件付きアクセスポリシーが原因でサインインに失敗した場合、Entra IDのサインインログに記録が残ります。サインインログからどの条件付きアクセスポリシーが適用されてサインインがブロックされたのかを確認することができますので、Entra IDの管理者はこの情報を元にポリシーの見直しを行うことができます。

サインインログ

プロキシ認証が求められる場合の対処方法

Visual Studioのサインインでは、プロキシ認証が必要な環境で正しく動作しない場合があります。ネットワーク管理者に依頼してプロキシ認証が求められないようにするのが一番手っ取り早く確実なのですが、客先常駐で作業している場合など依頼することが難しいこともあります。Visual Studio側の対処方法はバージョンによって様々あるようなので、ドキュメントから確認することをお勧めします。

GitHubアカウントでサインインできない場合

必要なURLがブロックされていないか確認する

GitHubアカウントを使用してVisual Studioにサインインする場合はgithub.comへのアクセスが必要です。企業のネットワーク環境でgithub.comへのアクセスがブロックされている場合、Visual Studioのサインインに失敗します。ネットワーク管理者に確認してgithub.comへのアクセスが許可されていることを確認してください。

GitHub Copilotを使用する場合に許可が必要なURLはドキュメントで表にまとめられています。企業のネットワーク環境でGitHub Copilotを使用する場合は、これらのURLへのアクセスが許可されていることを確認してください。

プロキシ認証が必要な環境で起きる問題と回避方法

プロキシ認証が必要な環境でGitHubアカウントを追加する場合、アカウント追加の挙動が不安定になることがあります。例えば以下のようなエラーメッセージが表示されてアカウント追加に失敗する場合があります。

GitHub アカウントの追加で問題が発生しました。

サインインのヘルプについては、https://aka.ms/githubonvs にアクセスしてください。

エラー コード: -1.
例外の種類: GitHubOperationException.
内部例外: System.Net.Http.HttpRequestException | この要求の送信中にエラーが発生しました。

GitHubOperationException

いろいろ試行錯誤した結果、どうもアカウント追加の処理ではプロキシ認証の要求が正しく処理されていないようで、Visual Studioの起動後にニュースフィードや拡張機能マネージャーなどのVisual Studio上の機能で一度でもプロキシ認証を完了させておくとアカウント追加に成功するようです。これは昔のVisual StudioのバージョンでTeam Foundation ServerやVisual Studio Team Serviceにサインインする場合にも見られた挙動でした (参考情報)。Visual Studio 2026の場合、拡張機能マネージャーでプロキシ認証を完了させてからGitHubアカウントの追加を試みるとうまくいく可能性があります。

しかし、事前にプロキシ認証を通す回避方法の場合、Visual Studioを起動するたびに作業が必要になります。それが面倒な場合は、他の回避方法として昔のMSDNの記事で紹介されていたカスタムプロキシモジュールを使用する方法があります。

それぞれの回避方法について以下に手順を示します。

回避方法A. 事前に拡張機能マネージャーでプロキシ認証を完了させる

  1. Visual Studioのメニューバーから[拡張機能] -> [拡張機能の管理]を選択します。
  2. プロキシ認証のダイアログが表示されるので、ユーザー名とパスワードを入力して認証を完了させます。 プロキシ認証
  3. [拡張機能マネージャー]ウィンドウを閉じて、再度GitHubアカウントの追加を試みます。
注意

一度Visual Studio上でプロキシ認証すると資格情報マネージャーにVSCredentials_<プロキシサーバー名>という名前で汎用資格情報が保存されます。この資格情報が保存されている場合、以降はVisual Studio上でプロキシ認証のダイアログが表示されない場合があります。この場合もプロキシ認証を通した状態になるのでGitHubアカウントの追加が成功する可能性がありますが、うまくいかない場合は資格情報マネージャーで該当する資格情報を削除してから再度プロキシ認証を試みてください。

Visual Studioの汎用資格情報

回避方法B. カスタムプロキシモジュールを使用する回避方法

備考

プロキシ認証に必要な資格情報はコード内にハードコードしてもよいのですが、GitHub Copilotなどの他の機能を利用する際にもどのみち環境変数の設定が必要になるので、環境変数から取得する方法で実装しています。

  1. Visual Studioを起動し、メニューバーから[ファイル] -> [新規作成] -> [プロジェクト/ソリューション]を選択します。
  2. 新しいプロジェクトの作成ダイアログでC#の[クラスライブラリ(.NET Framework)]テンプレートを選択し、プロジェクト名に「CustomProxyModule」と入力して[作成]ボタンをクリックします。[クラスライブラリ]プロジェクトは.NET Frameworkではなく.NET向けのプロジェクトなので間違えないように注意してください。 クラスライブラリプロジェクトの作成
  3. ソリューションエクスプローラーでプロジェクト名のノードを右クリックし、[追加] -> [参照]を選択します。
  4. 参照マネージャーで[アセンブリ] -> [フレームワーク]を選択し、一覧から「System.Windows.Forms」にチェックを入れて[OK]ボタンをクリックします。 System.Windows.Formsの参照追加
  5. Class1.csに以下のコードを貼り付けます。
    src/CustomProxyModule/MyWebProxy.cs
    using System;
    using System.Net;
    using System.Windows.Forms;

    namespace CustomProxyModule
    {
    public class MyWebProxy : IWebProxy
    {
    public MyWebProxy()
    {
    try
    {
    this.InitializeWebProxy();
    }
    catch (Exception ex)
    {
    MessageBox.Show("CustomProxyModuleの初期化に失敗しました: " + ex.ToString(), "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    }
    public ICredentials Credentials { set; get; }
    public Uri GetProxy(Uri destination) => m_ProxyUri;
    public bool IsBypassed(Uri host) => host.IsLoopback;

    private Uri m_ProxyUri = null;

    private void InitializeWebProxy()
    {
    var proxySetting = Environment.GetEnvironmentVariable("HTTP_PROXY");
    if (string.IsNullOrEmpty(proxySetting))
    {
    throw new InvalidOperationException("HTTP_PROXY環境変数が設定されていません。");
    }

    m_ProxyUri = new Uri(proxySetting, UriKind.Absolute);
    if (string.IsNullOrEmpty(m_ProxyUri.UserInfo))
    {
    throw new InvalidOperationException("HTTP_PROXY環境変数にユーザー情報が含まれていません。");
    }

    var userInfo = m_ProxyUri.UserInfo.Split(':');
    if (userInfo.Length < 2)
    {
    throw new InvalidOperationException("HTTP_PROXY環境変数のユーザー情報にパスワードが含まれていません。");
    }
    this.Credentials = new NetworkCredential(userInfo[0], userInfo[1]);
    }
    }
    }
  6. メニューバーから[ビルド] -> [ソリューションのビルド]を選択し、プロジェクトをビルドします。
  7. ビルドが成功したら、プロジェクトの出力フォルダーに移動します。通常は<ソリューションフォルダー>\CustomProxyModule\bin\Debug\にあります。
  8. 出力フォルダーにあるCustomProxyModule.dllファイルをVisual Studioのインストールフォルダーにコピーします。通常はC:\Program Files\Microsoft Visual Studio\<バージョン>\<エディション>\Common7\IDE\にあります。例えばVisual Studio Professional 2026の場合、C:\Program Files\Microsoft Visual Studio\18\Professional\Common7\IDE\になります。
  9. 管理者としてメモ帳を起動し、Visual Studioのインストールフォルダーにあるdevenv.exe.configファイルを開いてカスタムプロキシモジュールの設定(defaultProxy/module要素)を追加します。追加する箇所は<system.net>セクションの中です。以下のコードを参考にしてください。
    C:\Program Files\Microsoft Visual Studio\18\Professional\Common7\IDE\devenv.exe.config
    <system.net>
    <defaultProxy>
    <module type="CustomProxyModule.MyWebProxy, CustomProxyModule"/>
    </defaultProxy>
    <settings>
    <ipv6 enabled="true" />
    </settings>
    </system.net>
  10. システムの環境変数にHTTP_PROXYを追加し、プロキシサーバーのURLを設定します。URLにはユーザー名とパスワードを含める必要があります。例えば、プロキシサーバーのアドレスがpainful.proxy.localでポートが3128、ユーザー名がproxyuser1、パスワードが1234の場合、以下のように設定します。
    http://proxyuser1:1234@painful.proxy.local:3128
    環境変数の設定
  11. Visual Studioを再起動し、GitHubアカウントの追加を試みます。
注意

うまくいかない場合は、Process Monitorなどのツールを使用してVisual Studioの動作を監視し、カスタムプロキシモジュールが正しく読み込まれているか確認してみてください。読み込まれているのにうまくいかない場合は、カスタムプロキシモジュールのコードにデバッグ用のメッセージボックスを追加して動作を確認してみてください。