#excel #azure-active-directory #azure-api-management
#excel #azure-active-directory #azure-api-management
Вопрос:
В нашей организации есть несколько человек, которые используют Excel для доступа к нашим API. Мы хотели бы, чтобы API-интерфейсы предоставлялись управлением API и проходили проверку подлинности с помощью Azure Active Directory.
В Excel это может быть достигнуто с помощью «Учетной записи организации», но в настоящее время я получаю сообщение «Мы не смогли пройти проверку подлинности с предоставленными учетными данными. Пожалуйста, повторите попытку»
Я следовал этому руководству, чтобы настроить зарегистрированное приложение 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?