Azure MSI с использованием служб приложений - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь защитить свои службы поддержки для моего веб-приложения, используя MSI и AAD auth.

Я продолжаю получать 401, когда звоню в свои службы поддержки из открытого веб-приложения. Я добавил общедоступное веб-приложение в качестве читателя в раздел IAM служб поддержки.

Что я не могу понять, так это как получить токен доступа, кажется, что независимо от того, какую конечную точку я использую для получения токена доступа, он говорит, что он не найден.

Вот мой код:

{
var azureServiceTokenProvider = new AzureServiceTokenProvider();
string accessToken = azureServiceTokenProvider.GetAccessTokenAsync("https://<mywebapi>.azurewebsites.net").GetAwaiter().GetResult();

var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Authorization = new 
AuthenticationHeaderValue("Bearer", accessToken);

RemoteIp = httpClient.GetStringAsync("https://<mywebapi>.azurewebsites.net/api/default/remoteIp").GetAwaiter().GetResult();
LocalIp =  httpClient.GetStringAsync("https://<mywebapi>.azurewebsites.net/api/default/localIp").GetAwaiter().GetResult();
ConnectionId = httpClient.GetStringAsync("https://<mywebapi>.azurewebsites.net/api/default/connectionId").GetAwaiter().GetResult();            
}

А вот и сообщение об ошибке:

Parameters: Connectionstring: [No connection string specified], Resource: https://<mywebapi>.azurewebsites.net, Authority: . 
Exception Message: Tried to get token using Managed Service Identity. 
Unable to connect to the Managed Service Identity (MSI) endpoint. 
Please check that you are running on an Azure resource that has MSI setup.

UPDATE: , очевидно, является фактическим значением конечной точки, но здесь не раскрывается в стеке потока. Кроме того, я должен упомянуть, что вызов конечных точек API напрямую работает нормально после того, как я авторизовался с помощью своих личных учетных данных xxx@xxx.xxx. Проблема связана с тем, что веб-приложение пытается идентифицировать себя с веб-интерфейсом, даже если это зарегистрированное приложение, которому назначены необходимые права IAM на ресурсе веб-интерфейса.

1 Ответ

0 голосов
/ 29 июня 2018

Ошибка говорит, что он пытался использовать MSI, но не смог. Вы уверены, что запускаете этот код в веб-приложении с включенным MSI?

Кроме того, вам необходимо заменить "https://<mywebapi>.azurewebsites.net" на URI идентификатора приложения или идентификатор приложения вашего API в Azure AD. Другими словами, это должно соответствовать действительной аудитории, настроенной для API .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...