我们目前有一个机器人(作为应用程序托管在团队中),它调用其余 api(api/消息)来获取详细信息。我们使用
TeamsSSOTokenExchangeMiddleware
进行 SSO,使用 OAuthPrompt
并使用 ConfigurationBotFrameworkAuthentication
进行 Appid 身份验证。
我们希望支持其他机器人(在 Teams 中创建新应用程序)并使用相同的端点和代码,以便我们可以根据传入的请求进行某些自定义。这将避免我们托管另一个 Web 服务并创建新项目。
我尝试查看并发现我可以使用
ICredentialProvider
来验证 appid,尽管根据 MS 这已经过时了。但是为了进行 SSO,我无法成功,我创建了 MultiBotTeamsSSOTokenExchangeMiddleware
并通过根据传入请求传递 connectionName 来实例化 TeamsSSOTokenExchangeMiddleware
。我们现在将有 2 个连接,因此我们将根据连接名称创建 2 个 TeamsSSOTokenExchangeMiddleware
实例,然后我们将调用 OnTurnAsync
事件。完成后,我们将调用 OAuthPrompt
,它不应该显示用户登录提示,因为我们已经注入了 TeamsSSOTokenExchangeMiddleware
,应该小心。
目前我们确实将
TeamsSSOTokenExchangeMiddleware
作为 AdapterWithErrorHandler
的一部分注入,SSO 工作正常,但当我尝试实现多机器人时却失败了。
有人可以提供帮助吗?
Use(new TeamsSSOTokenExchangeMiddleware(storage, configuration["ConnectionName"]));
多个机器人无法使用同一个 AAD 应用程序进行 SSO,因为 AAD 只允许为一个 AAD 应用程序指定一个应用程序 ID URI/资源 URI。