2017-12-01 3 views
0

Microsoftライブアカウントからユーザーデータを読み取ろうとしています。私は以下のようにコードを書かれている:私は私のAADの資格情報を使用する場合私のAADアカウント以外のmsライブアカウントを使用している場合、Azure AD認証に失敗する

public void GetUserData(){ 
     var authContext = new AuthenticationContext("https://login.microsoftonline.com/common/"); 
     var result = _authenticationContext 
       .AcquireTokenAsync("https://graph.microsoft.com", "<my client/app ID>", "<redirect URI>", new PlatformParameters(PromptBehavior.RefreshSession)) 
       .Result;  
     var accessToken = result.AccessToken; 

     var httpClient = new HttpClient(); 
     httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer",accessToken); 
     var userResponse = httpClient.GetStringAsync("https://graph.microsoft.com/beta/me/").Result; 

     //DO SOMTHING WITH DATA 
    } 

私のコードは正常に動作しているが、私は私の個人的なアカウントを使用する場合、それは次のようなエラーを与えています。

AADSTS50020:ユーザーアカウント「[email protected]」をアイデンティティプロバイダ から「live.com」テナント「既定のディレクトリ」に存在しないとすることはできません アクセスアプリケーションのXXXXXXXXXXXXXXXXX 'は テナントに。最初にテナント に外部ユーザーとしてアカウントを追加する必要があります。サインアウトし、別のAzure Active ディレクトリユーザーアカウントで再度サインインします。ここで

スクリーンショットです:

enter image description here

それはthis questionに似ています。誰かが私を助けることができますか?

+0

あなたが個人を追加しました:

おそらく、このためにv2.0のエンドポイントを使用する必要がありますようhttps://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-appmodel-v2-overview

あなたがログインするだけで、消費者MSアカウントを期待する場合は、AUTHORIZEのURLを指定することができますあなたの空白のアクティブディレクトリにライブアカウント? –

+0

このリンクをチェックしてください - https://stackoverflow.com/questions/37255819/azure-native-application-common-authentication – MethodMan

+0

@Wayne Yang、紺碧の広告にアカウントを追加していません。私は自分のアプリがライブアカウントで働きたい。 –

答えて

2

v1エンドポイントでは、ユーザーがディレクトリのメンバーであることが必要です。

https://login.microsoftonline.com/consumers/oauth2/v2.0/authorize 
1

まず最初に、あなたの質問のエラーマッサージのために、あなたのディレクトリにライブアカウントを追加してからAzure AD v2エンドポイントを使って認証しようとする必要があります。 そのディレクトリにない外部アカウントでアプリにサインインすることはできません

マイクロソフトのライブアカウントにあなたのアプリを使用してもらいたいと思っています。

この要件に基づいて、これを達成するためにAzure AD B2Cを使用することをお勧めします。 Azure AD B2Cを使用すると、任意のMicrosoftアカウントでアプリケーションを認証できます。ソーシャルIDプロバイダとしてMicrosoftアカウントを追加できます。どんなライブアカウントでも、Azure AD B2Cを通じてサインアップしてサインインすることができます。

Microsoftアカウントin this official documentを使用して、消費者にサインアップとサインインを提供する方法の詳細を参照できます。

これが役に立ちます。

+0

B2C権限を使用しているときにMS Graph APIを使用してユーザーに関する情報を取得することはできません。これは実際にv2.0 +コンシューマエンドポイントにとって最適なシナリオのように聞こえます。 – juunas

+0

こんにちは、@ jununas、そうです、私もあなたの意見に同意します。 –

関連する問題