我想在我开发的BOT中使用OAuth提示符启用多个AD身份验证。目前,它只采用一个连接,我们的项目 AD 受到攻击并验证凭据。但是,我希望相同的 O-Auth 提示在 BOT 中一次适用于不同的 AD,该 BOT 是使用 C# 中的 MS Bot 框架 V4 SDK 创建的。
为了清楚地解释我的查询,让我举个例子,也让我告诉你我在BOT中启用身份验证所遵循的步骤:
- 部署到 AZURE 的 MS Bot
- 在 WebApp 机器人的设置中,通过在创建过程中提供我的 AZURE AD 客户端 ID 和机密,使用名称创建 OAuth 连接设置:OauthConnection。测试连接成功。
- 在我的BOT代码中,使用OAuthPrompt方法来启用身份验证,并将连接名称作为"OauthConnection"传递给它,这是在步骤#2中创建 的
- 将此提示方法添加到对话框堆栈
- 现在,我的机器人代码在执行时为我提供了登录选项,如果我输入所需的凭据,它将使用 OAuth 提示方法中提供的连接名称根据 AZURE AD 进行验证,进而提供所需的客户端 ID
- 现在,如果我们观察,将根据为其提供连接名称的 AZURE AD 验证凭据
我想要实现的是:
如何使OAuth提示方法一次同时支持多个广告?
这意味着,如果我的 AD 使用域作为 @axct.com,而另一个 AD 使用域作为 @avabt.com,则当前使用上述步骤配置的 oauth 提示符支持在任何给定时间点以 @axct.com 或 @avabt.com 身份登录的 AD 身份验证,但不能同时并行使用两者。
我想启用它,以便它在任何给定时间并行使用两个 AD 进行身份验证,这样如果我使用 john.doe@axct.com 及其登录期间的密码,如果我使用 john.john@avabt.com 作为具有正确密码的登录凭据,它应该同时成功进行身份验证并返回相应的令牌,以便我可以使用图形 API 使用返回的令牌检索用户名。
如何实现这是我的查询或问题,因为我不确定该怎么做?
同样,如何使用单个Oauth Prompt方法为任何给定的AD(如社交网站,Google或任何其他凭据)启用。
这可以使用Oauth提示符实现吗?如果是,请逐步详细解释解决此问题,因为我是BOT和编码的新手
或者这是错误的期望,我们必须使用另一种方法而不是Oauth提示?
请以详细的指南逐步解释解决此问题,因为我是BOT和编码的新手。
语言: C#
机器人 SDK:V4
提前致谢
问候 -柴坦尼亚·
预期结果:在 BOT SDK V4 代码中使用 C# 中的 OAuth 提示符在任何给定时间点启用多个 AD 身份验证,以便并行工作
实际结果:只有一个 AD 身份验证有效
查询更新日期: 14 Aug 2019 -
为了使我的查询更容易理解-
如何使用 OAuth 提示符进行身份验证来制作/转换我的 BOT,使其使用 Azure AD 作为多租户 SaaS 应用程序工作?
请帮助我解决此查询或问题,以便我可以在具有瀑布对话框的BOT中实现它。
示例机器人配置为仅查找一个连接字符串。这给您留下了两个选择:
1) 您可以将对话框配置为根据用户输入的他们将要使用的域类型进行分支。然后,根据对话框(例如 axctDialog.cs 或 avabtDialog.cs,可以创建一个身份验证提示,它将使用您在应用程序设置中为其设置的连接字符串。但是,这意味着要求用户在登录之前选择其域,他们可能会觉得这很乏味且无关紧要。
2) 创建 Azure AD 应用程序(为了在机器人上创建连接字符串而创建的应用程序)时,将其创建为多租户。简单得多。如果已创建 AAD 应用,则可以进入应用清单并更改值。例如,signInAudience
需要设置为AzureADMultipleOrgs
或AzureADandPersonalMicrosoftAccount
,并且终结点将common
而不是租户域。有关此内容的更多详细信息可以阅读 这里.
除了机器人注册(机器人应用 ID 和应用密码)之外,还必须为机器人服务注册单独的 AAD 应用。
如果是这种情况,只需将 AAD 应用注册为多租户。
需要注意的一点是,在 Azure 机器人服务注册(或通道注册)中为此应用创建 OAuth2 设置时,需要将"TenantId"设置设置为"通用">- 这似乎没有记录在任何地方。
顺便说一句,如果你只是想构建相对简单的机器人,请查看我最近的 Github 存储库。它内置了编写的通用代码,用于为您处理身份验证和令牌交换以及更多其他内容。