У меня есть REST API в Интернете, защищенный с помощью Azure AD и требуемый заголовок (пользовательский APIKey). Вы можете вызвать этот API в примере с почтальоном, используя поток учетных данных клиента. Это все работает нормально.
Сейчас я разрабатываю пользовательское расширение Azure DevOps, которое показывает информацию, возвращенную из этого API, в форме рабочего элемента ADO. Я могу вызвать API (если я удалю безопасность из API) из расширения через универсальное подключение к службе. Теперь я хочу, чтобы безопасность работала.
Поэтому я хочу создать пользовательское подключение к службе, которое получит токен доступа из Azure AD, используя ClientID и ClientSecret (поток учетных данных клиента). Когда у меня это работает, я могу безопасно вызывать свой API. Также как добавить обязательный заголовок к вызову API? Мне нужно добавить заголовок как поле к сервисному соединению, верно? Итак, я думаю, что в итоге я получаю экземпляр пользовательского подключения к службе, который запрашивает TenantId
, ClientId
, Client Secret
, Audience/Scope
, List of headers (name/value)
.
В качестве дополнительной справочной записи в блоге я использовал эту: https://thingswithcode.blogspot.com/2019/07/using-azure-devops-service-connections.html
{
"id": "api-service-connection",
"description": "Service connection for api",
"type": "ms.vss-endpoint.service-endpoint-type",
"targets": [
"ms.vss-endpoint.endpoint-types"
],
"properties": {
"name": "Call API",
"displayName": "Call API",
"icon": "img/world.png",
"url": {
"displayName": "API Url",
"value": "https://path-to-api",
"helpText": "Url of the API to connect to."
},
"inputDescriptors": [
{
"id": "api-key",
"name": "API Key",
"description": "The value for the header 'ApiKey'",
"inputMode": "textbox",
"isConfidential": false,
"validation": {
"isRequired": true,
"dataType": "string"
}
}
],
"authenticationSchemes": [
{
"type": "ms.vss-endpoint.endpoint-auth-scheme-oauth2" // this is wrong...
}
],
"headers": [
{
"name": "ApiKey",
"value": "{{endpoint.api-key}}"
}
],
"helpMarkDown": "<a href=\"" target=\"_blank\"><b>Learn more</b></a>"
}
}
Спасибо