Azure WebBot-Cortana OAUTH Issue "POST to 'https://CortanaBFChannelWestUS.azurewebsites.net
Azure WebBot-Cortana OAUTH Issue "POST to 'https://CortanaBFChannelWestUS.azurewebsites.net
问题:
错误:POST 到“https://CortanaBFChannelWestUS.azurewebsites.net/v3/conversations/../activities/6TZfwIQ7Fqv”失败:[500] 内部服务器错误
在 Request._callback (D:\home\site\wwwroot\node_modules\botbuilder\lib\bots\ChatConnector.js:675:46)
在 Request.self.callback (D:\home\site\wwwroot\node_modules\request\request.js:185:22)
在 emitTwo (events.js:106:13)
在 Request.emit (events.js:191:7)
在请求。 (D:\home\site\wwwroot\node_modules\request\request.js:1161:10)
在 emitOne (events.js:96:13)
在 Request.emit (events.js:188:7)
在传入消息。 (D:\home\site\wwwroot\node_modules\request\request.js:1083:12)
在 IncomingMessage.g (events.js:291:16)
在 emitNone (events.js:91:20)
架构:
Aure Web-Bot:NodeJS SDKv3
微软应用开发
路易斯
频道:Web/Cortana/Skype
OAuth
场景:
根据话语点击意图后,应用程序会成功向用户显示 "sign-in" 卡片并要求用户登录
Screenshot of app sign-in
之后,用户能够使用使用 OAuth 进行身份验证的凭据成功登录以访问 Office 365
ScreenShot after login
测试用例:
Channel Skype:成功显示并登录
Channel Web:成功显示并登录
Cortana 频道:失败(未显示 "sign-in" 卡片)
Channel Cortana:失败("sign-in"卡未显示)
现在我在 iphone 上使用 Cortana 应用程序,对于相同的话语意图操作,这就是发生的事情
Screen Shot Channel Cortana Invocation
控制台上显示的错误如上所示
备注:
在 Web-Bot 框架内当它是 Skype 或 Web 作为渠道时,OAuth 的回调映射到
server.get('/api/OAuthCallback',
passport.authenticate('azuread-openidconnect', { failureRedirect: '/'}),
(req, res) => {
const address = JSON.parse(req.query.state);
const messageData = { accessToken: req.user.accessToken, refreshToken: req.user.refreshToken, userId: address.user.id, name: req.user.displayName};
var continueMsg = new builder.Message().address(address).text(JSON.stringify(messageData));
bot.receive(continueMsg.toMessage());
res.send('Welcome ' + req.user.displayName + '. Login successful. You can close this browser window')
});
实现 OAuth 的基本思想是 URl 映射到 Web 应用程序平台中定义的回调。
但 Cortana 确实说 Cortana MSA Authentication 但那没有用
- 其中 URL 映射到 https://www.bing.com/agents/oauth 而不是 web-app-bot-url/api/OAuthCallback
处定义的回调
- 有人可以解释 Cortana 的身份验证如何在他们指定的架构下工作
任何人都可以阐明我所知道的问题到底是什么,就理解而言,我遗漏了一些重要的东西。
谢谢
谢谢。
Cortana 的 OAuth 与 botframework 的工作方式不同。
从应用程序注册开始;如果您打开 Cortana 的 "manage identity for you",如果您打开 "sign in at invocation",Cortana 将发送登录卡。如果 Cortana 是频道,您的机器人永远不需要将登录卡作为附件发送。您在 Cortana 通道配置页面上注册 Microsoft AAD oauth 端点,然后您的应用程序注册将 url 重定向到 https://www.bing.com/agents/oauth 以让 Cortana 知道身份验证令牌是什么。
接下来,使用 Cortana 的身份验证令牌,您将在登录后在 activity(消息)上获取它。使用 botframework,它保存在密钥库中,因此您需要去获取它。
如果你没有"sign in at invocation",你发送一个oauth卡作为附件,然后Cortana将启动oauth流程,但Cortana在呈现登录请求时只使用标题。
注意app注册;重定向 url 必须来自与 oauth 流程的发起者相同的域。 (对于 Cortana,即 bing。)
如果您不想使用 Cortana 的 OAuth,请关闭 "Cortana will manage my identity"。使用登录卡并自行管理 oauth。但是,不要忘记您也需要管理刷新令牌(如果您使用 offline_access 范围,Cortana 将为您完成)。
您可以在此处找到有关 Cortana oauth 的更多信息;
https://docs.microsoft.com/en-us/cortana/skills/authentication
我这里有一些关于差异的文档草稿;
https://github.com/bw-kforce-ms/CortanaSkillsWIP/blob/master/Support/OAuth.md
如果有帮助请告诉我。
@Micromuncher,伙计,我终于掌握了一些基本的代码工作。我错过的是获取令牌的方式的简单性。之前使用护照获取授权码和其中涉及的复杂性,我认为最终过度设计了思维过程。
现在了解如何使此通道特定,以便仅针对 Cortana 使用 Cortana-flow,而其他一切使用 passport-openid 流。
谢谢!
问题:
错误:POST 到“https://CortanaBFChannelWestUS.azurewebsites.net/v3/conversations/../activities/6TZfwIQ7Fqv”失败:[500] 内部服务器错误 在 Request._callback (D:\home\site\wwwroot\node_modules\botbuilder\lib\bots\ChatConnector.js:675:46) 在 Request.self.callback (D:\home\site\wwwroot\node_modules\request\request.js:185:22) 在 emitTwo (events.js:106:13) 在 Request.emit (events.js:191:7) 在请求。 (D:\home\site\wwwroot\node_modules\request\request.js:1161:10) 在 emitOne (events.js:96:13) 在 Request.emit (events.js:188:7) 在传入消息。 (D:\home\site\wwwroot\node_modules\request\request.js:1083:12) 在 IncomingMessage.g (events.js:291:16) 在 emitNone (events.js:91:20)
架构: Aure Web-Bot:NodeJS SDKv3 微软应用开发 路易斯 频道:Web/Cortana/Skype OAuth
场景: 根据话语点击意图后,应用程序会成功向用户显示 "sign-in" 卡片并要求用户登录
Screenshot of app sign-in
之后,用户能够使用使用 OAuth 进行身份验证的凭据成功登录以访问 Office 365
ScreenShot after login
测试用例: Channel Skype:成功显示并登录 Channel Web:成功显示并登录 Cortana 频道:失败(未显示 "sign-in" 卡片)
Channel Cortana:失败("sign-in"卡未显示) 现在我在 iphone 上使用 Cortana 应用程序,对于相同的话语意图操作,这就是发生的事情
Screen Shot Channel Cortana Invocation
控制台上显示的错误如上所示
备注:
在 Web-Bot 框架内当它是 Skype 或 Web 作为渠道时,OAuth 的回调映射到
server.get('/api/OAuthCallback',
passport.authenticate('azuread-openidconnect', { failureRedirect: '/'}),
(req, res) => {
const address = JSON.parse(req.query.state);
const messageData = { accessToken: req.user.accessToken, refreshToken: req.user.refreshToken, userId: address.user.id, name: req.user.displayName};
var continueMsg = new builder.Message().address(address).text(JSON.stringify(messageData));
bot.receive(continueMsg.toMessage());
res.send('Welcome ' + req.user.displayName + '. Login successful. You can close this browser window')
});
实现 OAuth 的基本思想是 URl 映射到 Web 应用程序平台中定义的回调。
但 Cortana 确实说 Cortana MSA Authentication 但那没有用
- 其中 URL 映射到 https://www.bing.com/agents/oauth 而不是 web-app-bot-url/api/OAuthCallback 处定义的回调
- 有人可以解释 Cortana 的身份验证如何在他们指定的架构下工作
任何人都可以阐明我所知道的问题到底是什么,就理解而言,我遗漏了一些重要的东西。
谢谢
谢谢。
Cortana 的 OAuth 与 botframework 的工作方式不同。
从应用程序注册开始;如果您打开 Cortana 的 "manage identity for you",如果您打开 "sign in at invocation",Cortana 将发送登录卡。如果 Cortana 是频道,您的机器人永远不需要将登录卡作为附件发送。您在 Cortana 通道配置页面上注册 Microsoft AAD oauth 端点,然后您的应用程序注册将 url 重定向到 https://www.bing.com/agents/oauth 以让 Cortana 知道身份验证令牌是什么。
接下来,使用 Cortana 的身份验证令牌,您将在登录后在 activity(消息)上获取它。使用 botframework,它保存在密钥库中,因此您需要去获取它。
如果你没有"sign in at invocation",你发送一个oauth卡作为附件,然后Cortana将启动oauth流程,但Cortana在呈现登录请求时只使用标题。
注意app注册;重定向 url 必须来自与 oauth 流程的发起者相同的域。 (对于 Cortana,即 bing。)
如果您不想使用 Cortana 的 OAuth,请关闭 "Cortana will manage my identity"。使用登录卡并自行管理 oauth。但是,不要忘记您也需要管理刷新令牌(如果您使用 offline_access 范围,Cortana 将为您完成)。
您可以在此处找到有关 Cortana oauth 的更多信息; https://docs.microsoft.com/en-us/cortana/skills/authentication
我这里有一些关于差异的文档草稿; https://github.com/bw-kforce-ms/CortanaSkillsWIP/blob/master/Support/OAuth.md
如果有帮助请告诉我。
@Micromuncher,伙计,我终于掌握了一些基本的代码工作。我错过的是获取令牌的方式的简单性。之前使用护照获取授权码和其中涉及的复杂性,我认为最终过度设计了思维过程。
现在了解如何使此通道特定,以便仅针对 Cortana 使用 Cortana-flow,而其他一切使用 passport-openid 流。
谢谢!