Как пройти аутентификацию при вызове приложения Azure Logic?

#rest #aws-lambda #https #azure-logic-apps #azure-rest-api

Вопрос:

Меня попросили провести рефакторинг AWS Lambda (с использованием Python), который вызывает приложение Azure Logic.

Когда я запускаю свой лямбда-код, он получает ответ 202 (принятый). В Azure я вижу, что запрос не выполнен со следующей ошибкой:

 {
  "error": {
    "code": "AuthenticationFailed",
    "message": "Authentication failed. The 'Authorization' header is missing."
  }
}
 

Как указано в ошибке, заголовок авторизации отсутствует. Странно то, что предыдущая база кода, которая работала до недавнего времени, похоже, также не предоставляет никакого заголовка авторизации.

Вот мой код:

 import requests
import json

url = "https://prod-01.northcentralus.logic.azure.com:443/workflows/sensitive/triggers/manual/paths/invoke?api-version=2016-10-01amp;sp=/run/book/spamp;sv=1.0amp;sig=sensitive"
body = {
    "company": "X",
    "owner": "bob@email.com"
}

requests.post(url, data=json.dumps(body), headers=headers)

 

Код старого лямбда-кода по существу идентичен. Когда я копирую вставляю соответствующую часть в свой лямбда-код, я получаю ту же ошибку.

Как я уже сказал, до недавнего времени это работало нормально.

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

Я пытался выяснить, как собрать этот запрос по частям, используя Postman. Но сообщения, которые я нашел в Интернете, объясняющие, как это сделать, не работают, когда я их пробую. (Когда я пробую это сообщение, в нем говорится, что я должен получить Invalid Auth Key ответ в Postman. Но я просто получаю тот же ответ 202.

И я заметил, что одним из параметров, закодированных в URL-адресе приложения logic, является sp=/run/book/sp or sp=run/book/sp . Это как-то связано с участником службы? У меня нет доступа к Azure Active Directory, чтобы проверить это.

Большое спасибо!

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

1. «В Azure я вижу, что запрос не выполнен со следующей ошибкой» — где именно вы видите эту ошибку в Azure? Можете ли вы предоставить скриншот? Если вы получаете 202 ответа от приложения Logic, это означает, что оно было успешно запущено, проблем с авторизацией нет.

Ответ №1:

Заголовок авторизации должен быть веб-токеном JSON, который вы получаете из Azure Active Directory непосредственно с портала Azure.

Вы можете решить проблему, с которой столкнулись, добавив заголовок авторизации в свой HTTP-запрос. И в качестве значения для него укажите ‘Bearer’, за которым следует пробел, а затем токен. После этого отправьте запрос, и он должен работать нормально.

И заголовок авторизации должен быть таким:

Authorization : Bearer TOKEN .

Проверьте этот раздел «Активировать код для токена доступа» в этом документе Microsoft, чтобы узнать, как мы можем получить JWT из Azure Active Directory.

Для получения дополнительной информации вам также следует проверить этот документ Authenticate Postman по API Azure Service Management.

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

1. Спасибо за четкое руководство. Я собираюсь попробовать.