Доступ к 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."
}
}
}