Доступ к API управления API из Excel с использованием учетной записи организации

#excel #azure-active-directory #azure-api-management

#excel #azure-active-directory #azure-api-management

Вопрос:

В нашей организации есть несколько человек, которые используют Excel для доступа к нашим API. Мы хотели бы, чтобы API-интерфейсы предоставлялись управлением API и проходили проверку подлинности с помощью Azure Active Directory.

В Excel это может быть достигнуто с помощью «Учетной записи организации», но в настоящее время я получаю сообщение «Мы не смогли пройти проверку подлинности с предоставленными учетными данными. Пожалуйста, повторите попытку»

excel-enter-api-url

excel-use-organizational-account

Я следовал этому руководству, чтобы настроить зарегистрированное приложение Active Directory и соответствующим образом настроить управление API.

Еще один шаг, который я сделал, — это добавить заголовок «WWW-Authenticate» в следующей конфигурации управления API, чтобы запустить Excel для проверки подлинности в отношении нашего клиента AD:

 <policies>
<inbound>
    <base />
    <validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid.">
        <openid-config url="https://login.microsoftonline.com/<tenant-id>/v2.0/.well-known/openid-configuration" />
        <required-claims>
            <claim name="aud">
                <value>expected-aud</value>
            </claim>
        </required-claims>
    </validate-jwt>
</inbound>
<backend>
    <base />
</backend>
<outbound>
    <base />
</outbound>
<on-error>
    <choose>
        <when condition="@(context.Response.StatusCode == 401)">
            <set-header name="WWW-Authenticate" exists-action="override">
                <value>Bearer realm="<tenant-id>", error="invalid_token", error_description="Access Token missing or malformed.", authorization_uri="https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/authorize", client_id="<client-id>"</value>
            </set-header>
        </when>
    </choose>
    <base />
</on-error>
  

При просмотре HTTP-запросов в Fiddler запрос a, выполненный в login.microsoft.com фактически извлекает токен. Это основная часть ответа:

 {
    "token_type": "Bearer",
    "scope": "some-scope user_impersonation",
    "expires_in": "3599",
    "ext_expires_in": "3599",
    "expires_on": "1600932873",
    "not_before": "1600928973",
    "resource": "https://api-management-host",
    "access_token": "<access-token>",
    "refresh_token": "<refresh-token>",
    "id_token": "<id-token>"
}
  

Но следующий запрос к управлению API не содержит токена — заголовок авторизации содержит только ключевое слово Bearer:

 Authorization: Bearer
  

Кто-нибудь, у кого есть какой-либо опыт работы с этим сценарием, или может помочь мне решить эту проблему?

Комментарии:

1. Удалось ли вам подключиться к APIM с помощью Excel?