Я пытаюсь получить доступ к 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."
}
}
}