我正在尝试以编程方式注册并使用AAD应用程序将Microsoft Bot Framework僵尸程序部署到其他人的租户中的Azure(因此,现在我们不可以选择az cli)。不幸的是,尽管AAD应用程序能够获取令牌,但我们仍收到身份验证错误。
AAD应用程序创建PowerShell代码
# 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
这些值已成功传递到我们的bot zip的ARM部署中,该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_credentials&client_id=appid&client_secret=password&scope=https%3A%2F%2Fapi.botframework.com%2F.default"
但是,当我们在门户中的测试客户端或仿真器中使用appid和密码时,会出现类似
POST https://webchat.botframework.com/v3/directline/conversations/JzddOS0PMku9aV9tU1HjVB-a/activities 502
的频道中有相应的错误
我看过由文档中给出的az cli命令创建的AAD应用程序,无法发现任何差异。 Arm部署生成器不包含任何其他变量,也没有提及所需的任何角色分配。
有人知道要解决此身份验证问题或进一步诊断吗?