#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;
случайно переписал при удалении идентификаторов guid3. Вы пытались отправить действие с помощью Postman?
4. Получение токена? Я использовал curl. Для взаимодействия с ботом я не использовал инструменты msft bot (тестовый чат в браузере и локальный эмулятор)
5. Я имею в виду, не могли бы вы попробовать использовать Postman для отправки действия? (не получение токена). Проверьте, не возникнет ли такая же проблема.