Azure webbot-cortana oauth问题,并引用“ https://cortanabfchannelwe



问题:

错误:发布到'https://cortanabfchannelwestus.azurewebsites.net/v3/conversations/../activities/6tzfwiq7fqv'失败:[500]内部服务器错误 在请求中。 在request.self.callback(d: home site wwwroot node_modules request request.js:185:22) 在Emittwo(Event.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.Mit(Events.js:188:7) 在即将到来的时间。(d: home site wwwroot node_modules request request.js:1083:12) 在incomingmessage.g(Events.js:291:16) 在emitnone(event.js:91:20)

架构:Aure Web-Bot:nodejs sdkv3Microsoft App Dev路易斯频道:Web/Cortana/Skypeoauth

方案:根据话语达到意图后,应用程序成功地向用户显示了"登录"卡,并要求用户登录

应用程序登录的屏幕截图

之后,用户能够使用使用OAuth访问Office 365

进行身份验证的凭据成功登录

登录后屏幕截图

testCase:频道Skype:成功显示和登录频道网络:成功显示和登录Channel Cortana:失败(没有显示"登录"卡)

Channel Cortana:失败(没有显示"登录"卡)现在,我在iPhone上使用Cortana应用程序,并且在相同的话语中,这就是发生的情况

屏幕截图频道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-App-Platform中定义的回电。

,但Cortana确实说Cortana MSA身份验证,而这不起作用

  1. 对于其中一个URL映射到https://www.bing.com/agents/oauth,而不是在Web-app-bot-url/api/oauthcallback上定义的回电
  2. 有人可以解释鉴于他们指定的拱门的身份验证如何工作

任何人都可以阐明我知道的问题到底是什么,就理解而言,我缺少一些重要的东西。

谢谢

谢谢。

Cortana的Oauth的工作方式与Botframework不同。

从应用程序注册开始;如果您打开Cortana的"为您管理身份",Cortana将发送登录卡,如果您打开" invocation登录"。如果Cortana是通道,则您的机器人不需要将登录卡作为附件发送。您可以在Cortana Channel配置页面上注册Microsoft AAD OAUTH端点,然后您的应用程序注册将重定向URL重定向到https://www.bing.com/agents/oauth,以让Cortana知道Auth auth token是什么。

接下来,使用Cortana的auth令牌,登录后您将在活动(消息)上获取它。使用Botframework,它将保留在KeyStore中,因此您需要获取它。

如果您没有"在调用处登录",则将OAuth卡作为附件发送,然后Cortana将启动OAuth Flow,但Cortana的登录请求仅使用标题。

请注意,应用程序注册;重定向URL必须来自与OAuth流的引发器相同的域。(对于Cortana,就是Bing。)

如果您不想使用Cortana的Oauth,则会离开" Cortana将管理我的身份"。在卡中使用标志并亲自管理Oauth。但是,不要忘记您也需要管理刷新令牌(如果您使用Offline_access范围,Cortana将为您做。

您可以在这里找到有关Cortana Oauth的更多信息;https://learn.microsoft.com/en-us/cortana/skills/authentication

我有一些有关差异的文档草案;https://github.com/bw-kforce-ms/cortanaskillswip/blob/master/support/oauth.md

让我知道这是否有帮助。

@micromuncher,bud,我终于得到了一些基本代码工作。我错过的是获得令牌的简单性。以前使用护照来获取Auth Code及其所涉及的复杂性,我认为最终使思维过程过度工程。

现在要了解如何使此通道具体,以便仅使用Cortana使用Cortana-Flow,而其他所有内容都使用Passport-Openid Flow。

谢谢!

相关内容

最新更新