2017-04-14 10 views
0

私はユーザーが属しているOffice 365グループを表示する必要があるネイティブアプリを開発しています。このために、認証が必要なMicrosoft Graph APIを呼び出します。私はADALライブラリを使用しています。別のテナントから私のAzure ADアプリケーションを使用するにはどうすればいいですか?

必要な権限には管理者の同意が必要です。 私のテナントのユーザーはすべて正常に動作しますが、別のテナントのアカウントで認証しようとすると動作しません。これは、この結果を与え続け:

相関ID:9780ed24-9d24-4604-b8bf-28a02c2ea580

タイムスタンプ:2017年4月14日12:05:45Z

AADSTS70001:識別子を使用したアプリケーション " XXXXXXXX-XXX-XXX-XXXX-XXXXXXXXXXXXは、」私は最初の接続の管理者アカウントを使用している場合でも、ディレクトリXXXXXXX.onmicrosoft.com

に見つかりませんでした。私は同意を求めることは一度もなく、アプリは他のテナントに登録されていません。それは、マルチテナントであるべきと私は権威でテナントとして「/共通」を渡すよう


アプリはネイティブとして登録されています。

私はまた、他のテナントと同じ仕様のアプリケーションを登録しようとしましたが、許可に管理者の同意を得ました。 ?それはパラメータコード内の問題

private static string GetAccessToken() 
    { 
     AuthenticationContext authContext = new AuthenticationContext(authority); 

     AuthenticationResult authResult = authContext.AcquireToken(graphResource, clientID, redirectURI, PromptBehavior.RefreshSession); 
     var accessToken = authResult.AccessToken; 
     return accessToken; 
    } 

です:ここで

は、私がアクセストークンを取得する方法ですか?他のテナントには私が気付いていない「特別な紺碧の定期購読」が必要ですか?

簡潔に:他のテナントにどのように働かせるのですか?

編集

AuthenticationResult authResult = authContext.AcquireToken(graphResource, clientID, redirectURI,PromptBehavior.RefreshSession, UserIdentifier.Any, "prompt=admin_consent"); 

しかし、それは「重複クエリパラメータ「プロンプトがあるというエラーをトリガ:私は手動でこのように、要求に「プロンプト= admin_consent」を追加しようとしました'in extraQueryParameters'

+0

エラーメッセージのCorrelationIdとTimestampを含めることはできますか? –

+0

@PhilippeSignoretはい、完了しました。 – Patsuan

+0

ネイティブクライアントアプリケーションをどのように作成しましたか?どのようなインターフェイスですか? –

答えて

3

これは、ネイティブクライアントアプリケーションを登録するときの新しいAzureポータルの既知の問題です。

これらは現在、シングルテナントアプリケーションとして作成されています(2017-04-14現在)。 Azureポータルはネイティブクライアントアプリケーションの「マルチテナント」トグルを公開しないため、アプリケーションマニフェストを更新するか、Azure AD PowerShellを使用してこれを行う必要があります。設定から、Azureのポータルでマニフェスト

  1. からアプリ、マルチテナントを作る

    マニフェストオプションをクリックし、お使いのネイティブ・クライアント・アプリケーション用のブレード。

    enter image description here

  2. trueavailableToOtherTenants値を更新します。

    enter image description here

  3. マニフェストを保存します。

    enter image description here

のAzure AD PowerShellを使用してアプリケーションのマルチテナントを作る

  1. のAzure AD PowerShellのv2のモジュール(AzureAD)をダウンロード:https://docs.microsoft.com/en-us/powershell/azure/install-adv2?view=azureadps-2.0
  2. は、次のコマンドを実行します。

    $appId = "<app ID>" 
    $app = Get-AzureADApplication -Filter "appId eq '$appId'" 
    Set-AzureADApplicatoin -ObjectId $app.ObjectId -AvailableToOtherTenants $true 
    

それはそれを修正する必要があります。少し待ってからもう一度やり直してください。

+0

これはうまくいった!マニフェストをチェックすると、 "AvailableToOtherTenants"は確かに "false"でした。誰が知っていたでしょうか?特に、これまでネイティブのアプリは自動的にマルチテナントであることがわかったので、 – Patsuan

+0

これらは*デフォルトでマルチテナントとして作成されます。これは、新しい(プレビュー)ポータルの既知の問題です。すぐに対応される予定です。 –

関連する問題