如何让Azure Active Directory B2C与Bot Framework一起使用?

时间:2016-04-30 02:52:06

标签: azure azure-active-directory botframework

到目前为止,我还没有能够使用bot框架。我花了一整天但只设法得到.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?

2 个答案:

答案 0 :(得分:6)

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

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

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

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

更新

您可能想要查看两个新样本,因为它们正在实施正在讨论的工作流程。

    来自BotBuilder回购的
  • this
  • 来自Mat Velloso的
  • GraphBot

希望这有帮助。

答案 1 :(得分:1)

遵循this tutorial进行Bot端代码开发,我在这里重点介绍B2C和Azure级别的配置:

OAuth连接

客户ID 这是从B2C应用程序属性中的“应用程序ID”字段中获取的。这等效于从任何其他AAD应用程序注册中获取的Microsoft应用程序ID。

client id from B2C configuration in Azure

客户机密 这是根据this tutorial中的步骤生成的。

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

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

AAD V2 configuration page.

按照我们从中获得的步骤和值来填写以上详细信息。

授权/令牌/刷新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,我可以成功登录,但令我惊讶的是,返回的令牌为空。

enter image description here

然后我发现this document建议使用客户端ID本身作为作用域。

当我重复使用“作用域”字段中“客户ID”字段中的值时,将成功返回令牌,并且我的机器人可以使用该连接。

enter image description here

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

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

引荐this document