web-dev-qa-db-ja.com

Azure Active Directoryv2.0デーモンとサーバー側アプリのサポート

現在のv2.0エンドポイントがデーモンとサーバー側アプリのフローをサポートしているかどうかを明確にしようとしています。

この記事では、フローについて説明します: https://docs.Microsoft.com/en-us/Azure/active-directory/develop/active-directory-v2-flows

それは述べています:

この記事では、使用する言語やプラットフォームに関係なく、Azure ADv2.0を使用して構築できるアプリの種類について説明します。この記事の情報は、コードの操作を開始する前に、高レベルのシナリオを理解するのに役立つように設計されています。

さらにそれは述べています:

現在、このセクションのアプリの種類はv2.0エンドポイントではサポートされていませんが、将来の開発のロードマップに含まれています。 v2.0エンドポイントの追加の制限と制限について

結局、私はGraph APIに接続するアプリを構築しようとしています。このアプリは、スケジュールに従って、許可したユーザーに代わってAPIにアクセスできる「資格情報」を使用してAPIに接続します。

私のテストハーネスでは、次を使用してトークンを取得できます。

var pca = new PublicClientApplication(connector.AzureClientId)
          {
             RedirectUri = redirectUrl
          };
var result = await pca.AcquireTokenAsync(new[] {"Directory.Read.All"},
                (Microsoft.Identity.Client.User) null, UiOptions.ForceLogin, string.Empty);

同じハーネスで、次を使用してトークンを取得できません。

var cca = new ConfidentialClientApplication(
                connector.AzureClientId,
                redirectUrl,
                new ClientCredential(connector.AzureClientSecretKey),
                null) {PlatformParameters = new PlatformParameters()};

var result = await cca.AcquireTokenForClient(new[] { "Directory.Read.All" }, string.Empty);

これにより、次のようになります。

スローされた例外:mscorlib.dllの「Microsoft.Identity.Client.MsalServiceException」

追加情報:AADSTS70011:入力パラメーター 'scope'に指定された値が無効です。スコープDirectory.Read.Allが無効です。トレースID:dcba6878-5908-44a0-95f3-c51b0b4f1a00相関ID:1612e41a-a283-4557-b462-09653d7e4c21タイムスタンプ:2017-04-10 20:53:05Z

MSALパッケージのMicrosoft.Identity.Client(1.0.304142221-alpha)は、2016年4月16日以降更新されていません。それでも、使用する必要があるパッケージですか?

8

Azure AD V2.0でクライアント資格情報フローを使用する場合、この要求でscopeパラメーターに渡される値は、必要なリソースのリソースID(アプリケーションID URI)であり、.defaultサフィックスが付加されている必要があります。 Microsoft Graphの例の場合、値は https://graph.Microsoft.com/.default です。

詳細については、 こちら をクリックしてください。そして ここ は、Azure ADV2.0エンドポイントでクライアント資格情報フローを使用するためのチュートリアルです。

15
Nan Yu