Аутентификация Api-App из веб-приложения
У меня есть приложение Api, размещенное на Azure. У меня есть другой существующий клиент веб-приложения JavaScript. В клиенте веб-приложения я использую внешних провайдеров входа, таких как goolge и Facebook, и сохраняю соответствующие токены доступа.
Прочитав статьи о том, как аутентифицировать Api-App с помощью Azure AD или Facebook, я понимаю, что при вызове службы Api-App мне просто нужно добавить 'x-zumo-auth'
и его значение соответствует заголовку запроса, и это сделает волшебство.
Теперь мой вопрос заключается в том, как я могу повторно использовать токены доступа, которые уже были получены в моем клиенте веб-приложения, при вызове службы Api-App без повторного отдельного вызова http://[gatewayurl]/login/[providername]
?
1 ответ
Вот пример кода, который извлекает токен Azure AD и обменивает его на токен Zumo, не проходя вход в систему через шлюз:
public async Task<AppServiceClient> GetAppServiceClient()
{
var appServiceClient = new AppServiceClient(GATEWAY_URL);
string userObjectID = ClaimsPrincipal.Current.FindFirst
("http://schemas.microsoft.com/identity/claims/objectidentifier").Value;
var authContext = new AuthenticationContext
(ConfigHelper.Authority, new TokenDbCache(userObjectID));
ClientCredential credential = new ClientCredential
(ConfigHelper.ClientId, ConfigHelper.AppKey);
// Get the AAD token.
AuthenticationResult result = authContext.AcquireToken(APP_ID_URI, credential);
var aadToken = new JObject();
aadToken["access_token"] = result.AccessToken;
// Send the AAD token to the gateway and get a Zumo token
var appServiceUser = await appServiceClient.LoginAsync
("aad", aadToken).ConfigureAwait(false);
return appServiceClient;
}
Пошаговое руководство по изменению и тестированию веб-приложения, использующего AAD, см. В разделе Вызов приложения Azure API из клиента веб-приложения, аутентифицированного в Azure Active Directory.