Доступ к REST API веб-клиента Project только через приложение Azure AD - PullRequest
0 голосов
/ 08 октября 2019

Я пытаюсь получить доступ к REST API для Project Web Access (PWA) только через доступ к приложению Azure AD.

Я создал самозаверяющий сертификат и добавил его в хранилище ключей Azure, как указано Здесь

Я выполнил быстрый запуск для демона dotnetcore для доступа кзащищенный веб-интерфейс: быстрый запуск демона

Я изменил метод ReadCertificate (certificateName), чтобы получить действительный сертификат из Azure KeyVault:

    private static X509Certificate2 GetKeyVaultCertificate()
    {
        var serviceTokenProvider = new AzureServiceTokenProvider();
        var keyVaultClient =
            new KeyVaultClient(
                new KeyVaultClient.AuthenticationCallback(serviceTokenProvider.KeyVaultTokenCallback));

        var secret = keyVaultClient.GetSecretAsync("https://supersecret.vault.azure.net/", "secretname");

        return new X509Certificate2(Convert.FromBase64String(secret.Result.Value));
    }

Я могу успешно получитьтокен:

   AuthenticationResult result = null;
        try
        {
            result = await app.AcquireTokenForClient(scopes)
                .ExecuteAsync();
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("Token acquired");
            Console.ResetColor();
       }

Однако, когда я вызываю конечную точку «Расписания» для API проекта:

if (result != null)
        {
            var httpClient = new HttpClient();
            var apiCaller = new ProtectedApiCallHelper(httpClient);
            await apiCaller.CallWebApiAndProcessResultASync(
                "https://server/sites/pwa/_api/ProjectData/Timesheets", result.AccessToken, Display);
        }

Я получаю исключение оддаты:

{ 
   "odata.error":{ 
      "code":"-1, System.InvalidOperationException",
      "message":{ 
         "lang":"en-US",
         "value":"User:<customercontent></customercontent> not found in Active directory or in project db."
      }
   }
}
...