微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Azure Bot通道错误“将此消息发送到您的机器人时出错:HTTP状态码未授权”

如何解决Azure Bot通道错误“将此消息发送到您的机器人时出错:HTTP状态码未授权”

当我尝试从天蓝色Bot通道向api发送消息时,出现“未经授权”错误。我已经与pulumi一起部署了Azure应用和Bot频道。在azure应用程序中,我注意到身份验证部分中有关于隐式授予的警告。

Implicit Grant

如果我从天蓝色门户网站禁用“隐式授予”设置,则Bot通道可以正常工作。我正在根据pulumi文档创建具有认设置的Azure应用程序,但是没有选择删除隐式授予设置

我已经使用this link和pulumi创建了Azure应用程序和Bot频道

public static AzureAD.Application Create()
{
    var name = "app-name";
    var azureApp = new AzureAD.Application(name,new AzureAD.ApplicationArgs
    {
        Name = name
        // Tried combinations of the following lines,but it makes no difference
        //,Type = "native"
        //,Oauth2AllowImplicitFlow = false
    });
    
    CreatePrincipal(azureApp);
    
    return azureApp;
}
    
private static void CreatePrincipal(AzureAD.Application azureApp)
{
    var name = "app-principal";
    new AzureAD.ServicePrincipal(name,new AzureAD.ServicePrincipalArgs
    {
        ApplicationId = azureApp.ApplicationId
    });
}

public static ChannelsRegistration Create(ResourceGroup resourceGroup,AzureAD.Application teamsBotAzureApp)
{
    var channelName = "Channel";
    var channel = new ChannelsRegistration(channelName,new ChannelsRegistrationArgs
    {
        Location = "global",ResourceGroupName = resourceGroup.Name,Sku = "F0",MicrosoftAppId = teamsBotAzureApp.ApplicationId,Endpoint = "https://azurefunction.com/api/BotMessagesHandler"
    });
    
    CreateChannel(resourceGroup,channel);
    
    return channel;
}

解决方法

在天蓝色广告中,Implicit Grant的设置由Manifest中的参数控制(您也可以在用户界面中进行设置,然后在清单中对其进行更改),{{1 }}对应于oauth2AllowImplicitFlowAccess tokens对应于oauth2AllowIdTokenImplicitFlow

如果您使用pulumi创建应用,则可以将ID tokens设置为禁用Oauth2AllowImplicitFlow = false,但是看起来pulumi inputs中没有Access tokens,因此您可以不能通过pulumi禁用oauth2AllowIdTokenImplicitFlow

您可以尝试以下解决方法。

1。从警告中,它显示为ID tokens,因此您可以尝试使用具有以下代码的重定向URI(即ReplyUrls)创建应用,看看它是否在不禁用You should remove these settings or register the appropriate redirect URI.的情况下起作用

ID tokens

2。如果接受,则可以在创建后使用Microsoft Graph SDKupdate the application。在enableIdTokenIssuance属性的implicitGrantSettings中将web设置为ReplyUrls = { "https://replyurl",} ,则false将被禁用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。