温馨提示:本文翻译自stackoverflow.com,查看原文请点击:amazon web services - How to get the accesstoken from alexa after account linking with azure AD
alexa amazon-web-services azure azure-active-directory token

amazon web services - 帐户与Azure AD关联后如何从Alexa获取访问令牌

发布于 2020-04-14 11:34:40

我想将带有Azure Activ Directory的Alexa AWS Lambda函数(node.js 6.10)连接到我的Azure-Cloud-API。在阅读了亚马逊文档和许多教程之后,我现在有了一个有效的帐户链接。这意味着,我可以在智能手机上的Alexa-App内链接技能帐户。

我的自定义技能的帐户链接:{来自我的Azure门户的数据}

  • 授权授权类型:授权代码授权
  • 授权URI:{OAUTH 2.0 AUTHORIZATION ENDPOINT}
  • 访问令牌URI:{OAUTH 2.0 TOKEN ENDPOINT}
  • 客户端ID:b9c6 [...] bc60 {应用程序ID}
  • 客户机密:{Client Secret}
  • 客户端身份验证方案:请求正文中的凭据
  • 范围:openid
  • 域:空
  • 重定向URL:->在Azure门户中,定义为“允许的令牌音频”和“回复URL”

在我的aws lambda函数中,我从alexa获取事件请求,如文档所述,其中包含版本,会话,上下文,请求的属性...

我对文档的理解是,我需要Azure-Cloud-API-Request的令牌应该在这里:session.user.accessToken但是此令牌看起来不像我所需要的令牌,并且在运行测试后,我总是得到“未经授权”返回。令牌看起来像这样,长度为1252个字符:

AQABAAAAAADX8GCi6Js6SK82TsD2Pb7rqGN56iHT_YSxlSr1RAdXucGs0S3ykOaw0XZ1WnjJotqZAn9BH7agRbP0VQv2rnJuRw_aJil7 [...] JIEO2Ap4wuG-tTwiSmZBfbLhyYtwQmxLAkqiLApqFmBYcyu-dnzlVV4liDGyTQ7gAXufd3zt7QGmi3UfP1aL9f5NBeXbmxnU6FHRzF10QZa19pTQgNTtIK8oIAA

如果我配置 Postman 并将请求发送到azure activ目录,我将获得如下所示的accessToken(长1168个字符):

...

这看起来像一个jwt令牌,如果我直接在aws lambda函数中复制此令牌并将其用于Azure-Cloud-API-Request,则它会起作用(直到令牌过期)。

现在,我不确定帐户链接的配置是否存在问题?还是我必须对alexa的令牌做些事情才能获得真正的令牌?还是真正的令牌在其他地方,我必须在那获取?

非常感谢你的帮助!

亚马逊文档“ Alexa技能套件”:

https://developer.amazon.com/docs/custom-skills/link-an-alexa-user-with-a-user-in-your-system.html

编辑(解决方案)11.06.2018

  • 授权授权类型:授权代码授权
  • 授权URI:{OAUTH 2.0 AUTHORIZATION ENDPOINT} +?resource = + {Application ID}
  • 访问令牌URI:{OAUTH 2.0 TOKEN ENDPOINT}
  • 客户端ID:b9c6 [...] bc60 {应用程序ID}
  • 客户密钥:{Client Secret}应用程序>设置>密钥新密钥,到期日期= 2年
  • 客户端身份验证方案:请求正文中的凭据
  • 范围:空
  • 域:空
  • 重定向URL:->在Azure门户中,定义为“允许的令牌音频”和“回复URL”

查看更多

提问者
SirArt
被浏览
76
Nate 2018-06-06 09:28

听起来您尚未完成自己技能的帐户关联顺序。设置帐户链接配置后,您需要打开Alexa应用程序(在您的电话或https://alexa.amazon.com上),然后使用新技能并链接您的帐户。成功完成后,您将获得的令牌request.Session.User.AccessToken

博客文章:https : //blogs.msdn.microsoft.com/premier_developer/2017/12/09/amazon-alexa-skills-authenticated-by-azure-active-directory-and-backed-by-asp-net-需要使用以下内容更新core-2-0-web-api-hosted-on-azure /

  • 您可以忽略有关“前端”应用程序注册的部分。
  • 在Alexa帐户链接部分中,将URL更新为使用login.microsoftonline.com而不是login.windows.net
  • ClientId是“后端”应用程序注册的应用程序ID
  • ?resource=必须设置并具有相同作为JWT承载选项观众参数。如果您在Visual Studio中使用.Net Core 2.0模板,则这是ClientId。
  • 使用的客户端密钥(密钥)不能是“永不过期”的密钥使用1年或2年期限。