こんにちは、Japan Developer Support Core チームです🐈
今回は Azure DevOps でよくお問い合わせいただくサインインのトラブルシューティング ガイドについてのご案内をします。
サインインが失敗するシナリオや要因には様々なものがあります。以下はその一例です。
- ユーザーが複数の Azure AD に参加している場合
- ゲスト ユーザーとして組織に招待されている場合
- Azure AD の条件付きアクセス ポリシーによって、認証が通らない場合
いくつかのシナリオにわけてトラブルシューティング ガイドをご紹介しますので、サインインのトラブル解決 SOS としてお役立てください。
最初のトラブルシューティング
サインインのトラブルシューティングで最初に試してほしい手順をご紹介します。
サインインが失敗する問題の多くはブラウザの Cookie の影響によって発生し、以下の簡単な手順のみで解決する可能性が高いため、まず最初にこの手順をお試しください。
- サインアウト用の URL (https://aka.ms/vssignout) を選択してサインアウトします。
- ブラウザの Cookie を全て削除します。
- ブラウザのプライベートウィンドウから (https://aka.ms/vsprof) へアクセスします。
- 画面左側のコンボボックスから Azure DevOps 組織が存在するディレクトリ (テナント名) を選択します。
- 画面右側からサインインしたい組織を選択します。
401 / 403 エラーが発生した場合のトラブルシューティング
最初のトラブルシューティングでも解決しない場合は、もう少し詳細な確認が必要です。
それぞれの確認ポイントをご用意したので、トラブルシューティングにぜひお役立てください。
401 Unauthorized
401 エラーは以下のような場合に発生します。
- Azure AD からの招待メールを承認していない。
- Azure AD からユーザーを削除した。
- Azure AD のユーザーと Azure DevOps のユーザーが一致しない。
Azure AD に接続された Azure DevOps 組織を利用している場合は、Azure DevOps で外部のユーザー (ゲスト ユーザー) を追加したとき、または Azure AD で外部のユーザーを追加したタイミングにて、Azure AD から登録したユーザーへ招待メールが届きます。
Azure AD に招待されたユーザーが招待を承認することで Azure DevOps にもサインイン可能となるため、サインインできない問題が解決します。
ユーザーが招待を受け入れたかどうかの確認は、Azure AD の画面から [ユーザー] を開いていただき、プロファイルから [招待が受け入れられました] にて確認が可能です。
Azure における ゲスト ユーザー招待 (B2B) のよくある質問 | Japan Azure Identity Support Blog にもよくある質問が詳しく掲載されていますので、合わせてご確認ください。
Azure AD からユーザーを削除することで Azure DevOps にもサインインできなくなっている可能性があります。また、Azure AD からユーザーを削除した後で、同じユーザーを Azure AD に追加したときにも問題が発生します。
これは Azure AD では削除されたユーザーが一時的に「ゴミ箱」に移動するためであり、Azure DevOps ではゴミ箱のユーザーも参照対象となっているためです。この現象が発生したときには Azure DevOps でユーザー名を確認すると 「OID_CONFLICT」から始まるものになっており、これが確認できるユーザーは Azure DevOps へサインインすることが出来ません。
対処方法としては ユーザーの完全な削除 / 最近削除されたユーザーの復元または完全な削除 - Azure AD - Microsoft Entra | Microsoft Learn を行うことでサインインできない問題が解決します。
403 Forbidden
403 エラーは以下のような場合に発生します。
- Azure DevOps 組織またはプロジェクトに対してのアクセス権限がない。
- ポリシーの [External guest access] が [OFF] のため、ゲスト ユーザーがアクセスできない。
- ゲスト ユーザーが Azure DevOps 組織を作成した。
- Azure AD の条件付きアクセス ポリシーに違反している。
組織やプロジェクトに対するアクセス権限がない場合には、ユーザーにアクセス権限を追加することでサインインできない問題が解決します。
Azure DevOps 組織やプロジェクトに対してのアクセス権限は [Organization Settings] > [Users] メニューの 組織にユーザーを追加し、アクセスを管理する - Azure DevOps | Microsoft Learn や、各プロジェクトの [Project Settings] > [Permissions] の [Users] メニューなどから確認できます。
ゲスト ユーザーのみで問題が発生している場合は [External guest access] が [OFF] になっている可能性があります。この設定はゲスト ユーザーのアクセスを制限するためのものであり、現在の既定の設定では [OFF] となっています。
対処方法としては ゲスト外部ユーザーを組織に追加、招待する - Azure DevOps Services | Microsoft Learn にある手順で [Organization Settings] > [Policies] から [External guest access] を [ON] に設定することでサインインできない問題が解決します。
また、上記 [External guest access] は既定値が [OFF] であることから、ゲスト ユーザーが新しい Azure DevOps 組織を作成した直後から問題が発生するケースがあります。
この状況の場合は 孤立した組織に所有者を割り当てる - Azure DevOps Services | Microsoft Learn の手順に従って、Azure AD の組み込みロールである Azure DevOps 管理者を持っているユーザーが作成した Azure DevOps 組織に対してアクセスして、401 エラーの画面から [Claim Ownership] を選択することで操作したユーザーが Azure DevOps 組織のオーナーとなり、Azure DevOps 組織へアクセス可能となります。
その後は必要に応じて [External guest access] を [ON] に設定することでゲスト ユーザーも Azure DevOps 組織へアクセス可能となります。
Azure AD の条件付きアクセス ポリシーに違反している場合は、Azure AD の画面からユーザーの Azure Active Directory のサインイン ログ - Microsoft Entra | Microsoft Learn を参照することで、どのような条件付きアクセス ポリシーによってサインインがブロックされているかを確認できます。
もし条件付きアクセス ポリシーによってサインインがブロックされているようでしたら、条件付きアクセス ポリシーに抵触しないサインインを行うことで問題が解決します。
ほとんどの組織では Azure AD 管理者と Azure DevOps 組織の管理者が別の担当者であることが多いため、条件付きアクセス ポリシーによってブロックされているかどうかの確認、および正常にサインインするための条件付きアクセス ポリシー側の対処方法は、組織の Azure AD 管理者の担当者にご相談ください。
調査のためにご提供いただきたい情報
上記対応の何れによっても自己解決しない場合は、弊社サポートチームにて詳しく状況を確認して調査することができます。
サポートリクエストの際には以下の情報をご提供いただけますとスムーズに調査を進めることが可能ですので、合わせてご確認ください。
- Azure DevOps 組織の URL (dev.azure.com/XXX)
- Azure DevOps に接続している Azure AD のテナント ID
- サインインできない問題が発生したときのブラウザー トレース
- サインインができないユーザーのサインイン ID (メールアドレス)
- 問題発生時の状況(ユーザー追加時に発生した、一部のユーザーのみ発生した、Azure AD との接続など何らかの設定を変更したときに発生した等)
- 問題解決のために試したこと (ブラウザのプライベートウィンドウや、ゲスト ユーザーの再招待・再追加など)
本ブログの内容は弊社の公式見解として保証されるものではなく、開発・運用時の参考情報としてご活用いただくことを目的としています。もし公式な見解が必要な場合は、弊社ドキュメント (https://docs.microsoft.com や https://support.microsoft.com) をご参照いただくか、もしくは私共サポートまでお問い合わせください。