c# - 如何在使用 OAuthPrompt 的同时在 BOT 中启用多个 AD 身份验证或可以使用哪些其他机制来启用多个 AD?

标签 c# botframework bots chatbot

我想在我开发的 BOT 中使用 OAuth Prompt 启用多个 AD 身份验证。目前,它只有一个连接,通过它我们的项目 AD 受到攻击并验证凭据。但是,我希望相同的 O-Auth 提示在使用 C# 中的 MS Bot 框架 V4 SDK 创建的 BOT 中一次适用于不同的广告。

为了清楚地解释我的查询,让我举个例子,并告诉您我在我的 BOT 中启用身份验证所遵循的步骤:

  1. 部署到 AZURE 的 MS Bot
  2. 在 WebApp Bot 的设置中,通过在创建过程中提供我的 AZURE AD 客户端 ID 和密码,创建名称为 OauthConnection 的 OAuth 连接设置。测试连接成功。
  3. 在我的 BOT 代码中,使用 OAuthPrompt 方法启用身份验证,并将在步骤 #2 中创建的连接名称作为“OauthConnection”传递给它
  4. 将此 Prompt 方法添加到对话框堆栈
  5. 现在我的机器人代码在执行时会给我登录选项,如果我输入所需的凭据,它会使用 OAuth 提示方法中提供的连接名称针对 AZURE AD 进行验证,而 OAuth 提示方法又会提供所需的客户端 ID<
  6. 现在,如果我们观察到,凭据已根据给出连接名称的 AZURE AD 进行验证

我想要实现的是:

如何使OAuth Prompt方法同时支持多个广告?

意思是,如果我的 AD 使用域作为 @axct.com 而另一个 AD 使用域作为 @avabt.com 当前,如果使用上述步骤配置,则 oauth 提示要么支持使用 @axct.com 登录的 AD 身份验证,要么@avabt.com 在任何给定的时间点,但不是同时在两个时间点。

我想启用它,以便它在任何给定时间同时使用两个 AD 进行身份验证,这样如果我使用 john.doe@axct.com 及其在登录期间的密码,如果我使用 john.john@avabt.com 作为登录凭据并使用正确的密码,它应该成功验证并同时返回相应的 token ,它仍然应该成功验证并返回给我 token ,这样我就可以使用图形 API 使用返回的 token 来检索用户名。

如何实现这是我的疑问或问题,因为我不确定该怎么做?

同样,如何使用单一 Oauth 提示方法为任何给定的 AD(例如社交网站、google 或任何其他凭据)启用。

这可以使用 Oauth Prompt 实现吗?如果是,请详细说明如何解决此问题,因为我是 BOT 和编码的新手

或者这是错误的期望,我们必须使用另一种方法而不是 Oauth 提示?

由于我是 BOT 和编码的新手,请逐步详细说明如何解决此问题。

语言:C#

机器人SDK:V4

提前致谢

问候 -ChaitanyaNG

预期结果:在使用 C# 完成的 BOT SDK V4 代码中使用 OAuth 提示在任何给定时间点启用多个 AD 身份验证,以便并行工作

实际结果:只有一个AD认证有效

查询更新:2019 年 8 月 14 日 -

为了让我的查询更容易理解-

如何使用 OAuth Prompt 制作/转换我的 BOT 以进行身份​​验证,使其用作使用 Azure AD 的 Multi-Tenancy SaaS 应用程序?

请帮助我解决这个查询或问题,以便我可以在我的具有瀑布对话框的 BOT 中实现它。

最佳答案

示例机器人配置为仅查找一个连接字符串。这给您留下了两个选择:

1) 您可以将对话框配置为根据用户输入的他们将要使用的域类型进行分支。然后,基于对话框,例如 axctDialog.cs 或 avabtDialog.cs,可以创建一个 auth 提示,它将使用您在 appsettings 中拥有的连接字符串。然而,这意味着要求您的用户在登录前选择他们的域,他们可能会觉得这是乏味且无关紧要的事情。

2) 当您创建 Azure AD 应用程序(您创建的应用程序是为了在机器人上创建连接字符串)时,您将其创建为 Multi-Tenancy 。简单多了。如果你已经创建了 AAD 应用程序,则可以进入应用程序 list 并更改值。例如,signInAudience 需要设置为 AzureADMultipleOrgsAzureADandPersonalMicrosoftAccount 并且终结点将是 common 而不是租户域。有关此的更多详细信息,请阅读 here .

关于c# - 如何在使用 OAuthPrompt 的同时在 BOT 中启用多个 AD 身份验证或可以使用哪些其他机制来启用多个 AD?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57476030/

相关文章:

c# - 如何移动 WPF 应用程序的 I18n 文件夹

c# - 动态或子句 Linq

c# - 您如何处理用户偏好?

node.js - 机器人在网络聊天中工作,但在团队 channel 中不起作用

node.js - 值被最新请求机器人的人覆盖吗?

javascript - 为什么我的discord.js 机器人没有响应 ";say (content)"

c# - HtmlAgilityPack 的可见区域有多深?

c# - 从对话框中调用表单

c# - 有没有办法检测用户是从团队移动应用程序还是桌面应用程序输入?

python - 如何在没有命令的情况下使用 discord.py 发送消息