我已尝试关注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?
答案 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}代码行。)
之后,您可以使用访问令牌执行任何需要访问令牌的调用。
更新
您可能想要查看两个新样本,因为它们正在实施正在讨论的工作流程。
希望这有帮助。
答案 1 :(得分:1)
遵循this tutorial进行Bot端代码开发,我在这里重点介绍B2C和Azure级别的配置:
OAuth连接
客户ID 这是从B2C应用程序属性中的“应用程序ID”字段中获取的。这等效于从任何其他AAD应用程序注册中获取的Microsoft应用程序ID。
客户机密 这是根据this tutorial中的步骤生成的。
选择密钥,然后单击生成密钥。 选择保存以查看密钥。记下应用程序密钥值。您可以将该值用作应用程序代码中的应用程序密钥。
在漫游器通道注册的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本身作为作用域。
当我重复使用“作用域”字段中“客户ID”字段中的值时,将成功返回令牌,并且我的机器人可以使用该连接。
您可以根据需要将其与其他作用域结合使用,但是为了进行实验,我强烈建议首先使用最简单的实现。
让我知道这些说明是否有效,如果它们不起作用,那么我们将看看差异是否在于我们如何设置B2C应用程序。 值得一提的是,我要提到的是,获得令牌后,可以将其粘贴到https://jwt.ms/中以对其进行解码,并查看其是否正确识别了您的B2C用户。粘贴新令牌时,请始终刷新页面,以确保它不会一直向您显示上一个令牌中的信息。