Я создал приложение для Windows, которое вызывает приложение, размещенное в Azure.Служба приложений использует AAD для аутентификации.Ниже приведен метод, который я использую для входа в MS и хранения токена.
authContext = new AuthenticationContext(authority, new FileCache());
authContext.AcquireTokenAsync(todoListResourceId, clientId, redirectUri, new PlatformParameters(PromptBehavior.Always)).ContinueWith(t =>
{
result = t.Result;
})
.Wait();
Используя этот метод, я успешно могу войти в систему с использованием учетных данных MS и получить токен доступа из result .
Теперь я передаю этот токен в запросе заголовка, чтобы получить некоторые данные из приложения, для которого включен SSO, например: -
using (var client = new HttpClient())
{
var uri = "http://appservice.azurewebsites.net/api/values/5";
_auth.GetToken().ContinueWith(t => { token = t.Result; }).Wait();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
var TaskAPI = client.GetAsync(uri).ContinueWith(task =>
{
if (task.Status == TaskStatus.RanToCompletion)
{
var response = task.Result;
if (response.IsSuccessStatusCode)
{
flag = 1;
var data = response.Content.ReadAsStringAsync().Result;
}
}
});
TaskAPI .Wait();
}
Функция Get Token автоматически получает токен
Ниже приведен метод GetToken (), используемый для извлечения токена для вызова API
authContext.AcquireTokenSilentAsync(todoListResourceId, clientId)
.ContinueWith(i =>
{
result = i.Result;
}).Wait();
return result.AccessToken;
Когда я вызываю этот URI, передавая извлеченный токен, я получаю ответ Un Authorized (401).
Как я могу проверить, является ли токен правильным, или я что-то упустил, или есть ли другой способ сделать это?
Спасибо
Subham, Nathcorp