3

尝试将消息从 azure Bot 通道发送到 api 时出现未经授权的错误。我已经使用 pulumi 部署了 azure app 和 Bot 频道。在 azure 应用程序中,我注意到身份验证部分中有关于Implicit Grant的警告。

隐式授权

如果我从 azure 门户禁用隐式授予设置,则 Bot 通道可以正常工作。我正在根据 pulumi 文档使用默认设置创建 azure 应用程序,但没有选项可以删除此隐式授予设置

我使用此链接使用 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;
}

4

1 回答 1

1

在 azure ad 中, 的设置Implicit Grant由 中的参数控制Manifest(您也可以在 UI 中设置,然后在清单中更改),Access tokens对应于oauth2AllowImplicitFlowID tokens 对应于oauth2AllowIdTokenImplicitFlow

如果使用 pulumi 创建应用,可以设置Oauth2AllowImplicitFlow = false禁用Access tokens,但看起来pulumi 输入oauth2AllowIdTokenImplicitFlow中没有,所以无法禁用via pulumi。ID tokens

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

1.从警告中,它说You should remove these settings or register the appropriate redirect URI.所以你可以尝试使用如下代码创建带有重定向URI(即ReplyUrls)的应用程序,看看它是否在不禁用的情况下工作ID tokens

ReplyUrls = 
            {
                "https://replyurl",
            }

2.如果被接受,您可以在创建应用程序后使用Microsoft Graph SDK更新应用程序。将属性设置enableIdTokenIssuancefalsein implicitGrantSettings,则将禁用。webID tokens

于 2020-10-19T07:56:36.430 回答