【问题标题】:how to get Azure Active Directory B2C working with Bot Framework?如何让 Azure Active Directory B2C 与 Bot Framework 一起工作?
【发布时间】:2020-05-13 18:41:45
【问题描述】:

到目前为止,我还无法在机器人框架中使用它。我花了一整天的时间,但只设法让 .net api 示例 (https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet) 与 AD B2C 一起工作。我不确定它在哪里获取我想传递给 BotUserData 的不记名令牌...

我试过关注https://azure.microsoft.com/en-us/blog/bot-framework-made-better-with-azure/

但实际上该解决方案没有成功构建,我只是从那里获取代码并进入我的机器人框架示例模板....但是,当它要求我通过 MS 登录并且我这样做时,我是无法继续,而且该博客似乎没有使用 AD B2C 政策。

那么您如何将 AD B2C 与 Bot Framework 集成?是否可以从 bot 框架调用 /Account/SignIn URL 来验证用户身份?之后,您将如何捕获令牌并将其传递给 BotUserData?

【问题讨论】:

标签: azure azure-active-directory botframework


【解决方案1】:

您可能需要查看Facebook Auth sample 以了解身份验证方案的潜在流程。对于 Azure AD,您需要执行类似的流程。

假设您的用户向您的机器人发送“登录”消息。 bot 应该使用 auth URL 进行响应,并要求用户使用该 URL 登录服务。为此,您可以使用 ADAL 的GetAuthorizationRequestURL 方法。

然后,您将拥有一个 Web API,它基本上会公开一个端点,该端点将是 Azure AD 的回复 URL。用户完成登录后,将向您的 Web API 发布一条消息,您将能够在其中获取授权代码并执行调用以获取访问令牌。之后,您可以像他们在Facebook Sample Web API 中所做的一样,包括恢复与 Bot 的对话,发送带有访问令牌的消息(因此它可以保存在 PerUserInConversationData 包中(检查 this 行代码)。

之后,您就可以使用访问令牌来执行任何需要访问令牌的调用。

更新

有两个新示例,您可能想看看,因为它们正在实施所讨论的工作流程。

希望这会有所帮助。

【讨论】:

  • 这将适用于 AD B2C 还是我需要使用普通广告?
  • @user299709 与香草广告它肯定有效。我还没有在 B2C 上尝试过,但我怀疑它会非常相似。
  • 所以机器人告诉我登录https://login.microsoftonline.com/myad.onmicrosoft.com/oauth2/v2.0/authorize?client_id=398493843434&redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=code&response_mode=query&scope=openid+offline_access&p=b2c_1_sign-in&state=38bna983,但它只是显示为空白......当然我切换了客户端ID和东西所以它显示404但是当我使用正确的ID一切都没有发生。而且我不确定如何向urn:ietf:wg:oauth:2.0:oob.... 之类的网址发出获取请求。
  • 回复 url 是您可以在 AD 和/或策略中配置为应用程序的一部分的内容。转到您的 AD,然后转到应用程序,选择您的应用程序,转到配置,然后您将回复 URL 配置。 azure.microsoft.com/en-us/documentation/articles/…
  • user299709 我编辑了我的帖子以包含两个正在实施此处讨论的流程的新存储库。
【解决方案2】:

关注this tutorial Bot 端代码开发,我这里重点介绍 B2C 和 Azure 级别的配置:

OAuth 连接

客户 ID 这取自 B2C 应用程序属性中的应用程序 ID 字段。它相当于从任何其他 AAD 应用注册中获取的 Microsoft 应用 ID。

客户密码 这是使用this tutorial 中的步骤生成的。

选择密钥,然后单击生成密钥。 选择保存以查看密钥。记下 App 键值。您可以将该值用作应用程序代码中的应用程序密码。

在机器人通道注册的 oAuth 设置中使用 AAD V2 配置 - 新的 oauth 连接设置。

按照我们从他们那里得到的步骤和值填写上述详细信息。

授权/令牌/刷新 URL

我跟着这个

https://login.microsoftonline.com/tfp///oauth2/v2.0/authorize

用于授权 URL 和

https://login.microsoftonline.com/tfp///oauth2/v2.0/token

用于令牌和刷新 URL。

因为我使用了 URL 格式 (kyleorg.onmicrosoft.com) 而不是 GUID 格式,但使用 GUID 似乎也可以。

是用户流的名称,例如 B2C_1_userflow。我用this tutorial 创建了一个。

作用域 使用范围 openid offline_access 我能够成功登录,但令我惊讶的是返回的令牌是空的。

然后我找到了this document,它建议使用客户端 ID 本身作为范围。

当我在 Scopes 字段中重用 Client id 字段中的值时,会成功返回一个令牌,并且我的机器人能够使用该连接。

您可以根据需要将其与其他范围组合,但为了进行实验,我强烈建议先使用最简单的实现。

让我知道这些说明是否有效,如果无效,那么我们将看看不同之处在于我们如何设置 B2C 应用程序。 作为奖励,我应该提到,在您获得令牌后,您可以将其粘贴到 https://jwt.ms/ 以对其进行解码,并查看它是否正确识别您的 B2C 用户。粘贴新令牌时始终刷新页面,以确保它不会一直向您显示上一个令牌的信息。

推荐this document

【讨论】:

    猜你喜欢
    • 2019-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    • 2017-06-15
    相关资源
    最近更新 更多