Проблема аутентификации Azure Bot Framework AAD

#azure #azure-active-directory #botframework #azure-web-app-service

#azure #azure-active-directory #botframework #azure-web-app-service

Вопрос:

Я пытаюсь программно зарегистрировать и использовать приложение AAD для развертывания ботов Microsoft Bot Framework в Azure в клиентах других людей (таким образом, az cli для нас сейчас не подходит). К сожалению, несмотря на то, что приложение AAD способно получать токены, мы получаем ошибки аутентификации.

Код PowerShell для создания приложения AAD

 # Create Azure AD Application Registration
$rnd = Get-Random -Maximum 999 -Minimum 1        
$appName = $ApplicationName   [string]$rnd
$createAppBody = @{
    displayName = [string]$appName
    signInAudience = "AzureADandPersonalMicrosoftAccount"
} | ConvertTo-Json
$createAppResponse = Invoke-RestMethod  -Method "POST"  -Uri "https://graph.microsoft.com/v1.0/applications"  -Body $createAppBody -ContentType "application/json"  -Authentication Bearer -Token $AccessToken 

$appObjId = $createAppResponse.id
$appId = $createAppResponse.appId

# Add password to app registration
$addPasswordUri = "https://graph.microsoft.com/v1.0/applications/"   $appObjId   "/addPassword"
$addPasswordBody = [PSCustomObject]@{
    passwordCredential = {
        displayName = $appName   "Password"
    }
} | ConvertTo-Json

$addPasswordResponse = Invoke-RestMethod  -Method  "POST" -Uri $addPasswordUri -Body $addPasswordBodyJson -ContentType "application/json"  -Authentication Bearer -Token $AccessToken 

$secret = $addPasswordResponse.secretText
  

Эти значения успешно передаются в наше ARM-развертывание bot zip на Microsoft.Web / сайты с настройками приложения, включая

         {
          "name": "MicrosoftAppId",
          "value": "[parameters('appId')]"
        },
        {
          "name": "MicrosoftAppPassword",
          "value": "[parameters('appSecret')]"
        },
  

Следуя руководству по устранению неполадок, мы можем успешно получить токен curl -k -X POST https://login.microsoftonline.com/botframework.com/oauth2/v2.0/token -d "grant_type=client_credentialsamp;client_id=appidamp;client_secret=passwordamp;scope=https://api.botframework.com/.default"

Я вижу правильный идентификатор guid в настройках для канала бота. идентификатор приложения, зарегистрированный в службе ботов

Однако, когда мы используем appid и пароль с тестовым клиентом на портале или с эмулятором, мы получаем ошибки типа POST https://webchat.botframework.com/v3/directline/conversations/JzddOS0PMku9aV9tU1HjVB-a/activities 502 с соответствующими ошибками в канале

ошибка аутентификации

Я просмотрел приложение AAD, созданное командой az cli, указанной в документах, и не могу обнаружить никаких различий. Генератор развертывания arm не включает никаких дополнительных переменных и не упоминает о каких-либо требуемых назначениях ролей.

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

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

1. Вы пропустили «amp;» между client_id=appid и client_secret=password . Вы уверены, что сможете успешно получить токен?

2. @AllenWu да, я могу, я просто amp; случайно переписал при удалении идентификаторов guid

3. Вы пытались отправить действие с помощью Postman?

4. Получение токена? Я использовал curl. Для взаимодействия с ботом я не использовал инструменты msft bot (тестовый чат в браузере и локальный эмулятор)

5. Я имею в виду, не могли бы вы попробовать использовать Postman для отправки действия? (не получение токена). Проверьте, не возникнет ли такая же проблема.