问题描述
当我尝试从天蓝色Bot通道向api发送消息时,出现“未经授权”错误。我已经与pulumi一起部署了Azure应用和Bot频道。在azure应用程序中,我注意到身份验证部分中有关于隐式授予的警告。
如果我从天蓝色门户网站禁用“隐式授予”设置,则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 }}对应于oauth2AllowImplicitFlow
,Access 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 SDK至update the application。在enableIdTokenIssuance
属性的implicitGrantSettings
中将web
设置为ReplyUrls =
{
"https://replyurl",}
,则false
将被禁用。