Доступ к REST API Project Web Access только через приложение Azure AD

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

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

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

Я изменил метод 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:

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

0 ответов

Другие вопросы по тегам