Аутентификация 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.

Другие вопросы по тегам