Как получить доступ к веб-API из другого веб-приложения, которое находится в том же Azure AD?

Я разместил один веб-API ProductInfo на azure and register that application into Azure AD.

у меня есть другой web app UIProduct и это веб-приложение want to access the web api ProductInfo оба находятся в одном домене и в одном и том же Azure AD.

Как я могу получить доступ к веб-API ProductInfo от web app UIProduct? есть ли токен, который мне нужно сгенерировать снова?

Любой пример кода будет полезен. Пример кода взят по этой ссылке

После успешного входа я нахожусь на домашней странице, затем я нажимаю на странице, где я пишу это

    public async System.Threading.Tasks.Task<ActionResult> About()
    {
        AuthenticationResult result = null;

        string userObjectID = ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value;
        AuthenticationContext authContext = new AuthenticationContext(Startup.Authority, new NaiveSessionCache(userObjectID));
        ClientCredential credential = new ClientCredential(clientId, clientSecret);
        result = await authContext.AcquireTokenSilentAsync("App ID URI", credential, new UserIdentifier(userObjectID, UserIdentifierType.UniqueId));

        HttpClient client = new HttpClient();
        HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://demotest.azurewebsites.net/api/getdata");
        request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);
        HttpResponseMessage response = await client.SendAsync(request);

получение исключения - "Не удалось получить токен в автоматическом режиме, так как токен не был найден в кэше. Вызвать метод AcquireToken"

1 ответ

Решение

Вам нужно зарегистрировать оба приложения на портале Azure как веб-приложения /API.

Затем в вашем веб-API установите App ID URI а также создавать любые области видимости, которые вы хотели бы выставить. Если это единственный клиент, который вы будете использовать, вы можете просто иметь Access охват, но имейте в виду, это то, что конечные пользователи увидят, соглашаясь на ваше приложение.

В своем веб-приложении вы сможете установить Required Permissions для этого нового веб-API и области. Это указывает на то, что клиенту необходимо получить согласие на использование этого веб-API, и ему могут быть предоставлены маркеры доступа.

Этот пример кода описывает именно этот сценарий.

Документ по основам веб-API также охватывает некоторую концептуальную информацию, относящуюся к этому сценарию.

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