首页 文章

如何在帐户链接到azure AD后从alexa获取accessstoken

提问于
浏览
0

我尝试将我的Alexa AWS Lambda函数(node.js 6.10)与Azure Activ Directory连接到我的Azure-Cloud-API . 从亚马逊和许多教程阅读documentation后,我现在有一个工作帐户链接 . 这意味着,我可以在我的智能手机上链接Alexa-App内的技能帐户 .

AccountLinking for my Custom Skill:{来自我的天蓝门户的数据}

  • 授权授权类型:授权代码授予

  • 授权URI:{OAUTH 2.0 AUTHORIZATION ENDPOINT}

  • 访问令牌URI:{OAUTH 2.0 TOKEN ENDPOINT}

  • 客户ID:b9c6 [...] bc60

  • 客户端密码:

  • 客户端身份验证方案:请求正文中的凭据

  • 范围:openid

  • domain:空

  • 重定向网址: - >在Azure门户中,定义了允许的令牌听众和回复网址

在我的aws lambda函数中,我从alexa获取事件请求,就像文档说的那样,包含版本,会话,上下文,请求的属性......

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

AQABAAAAAADX8GCi6Js6SK82TsD2Pb7rqGN56iHT_YSxlSr1RAdXucGs0S3ykOaw0XZ1WnjJotqZAn9BH7agRbP0VQv2rnJuRw_aJil7 [...] JIEO2Ap4wuG-tTwiSmZBfbLhyYtwQmxLAkqiLApqFmBYcyu-dnzlVV4liDGyTQ7gAXufd3zt7QGmi3UfP1aL9f5NBeXbmxnU6FHRzF10QZa19pTQgNTtIK8oIAA

如果我配置邮递员并向azure激活目录发送请求,我会得到一个像这样的accessToken(长度为1168个字符):

eyJ0eXAiOiJKV1QiLCJhbGc [...] Ezbk5aY2VEYyJ9.eyJhdWQiOiJodHRwczovL21ldGVvcmEtYXBwLmF [...] kY5MWVUUXdBQSIsInZlciI6IjEuMCJ9.KJco47-FdJ_eeqv38LL [...] YK_4JqCRDw

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

Now I'm not sure if there is a problem in my configuration of the account linking? Or do I have to do something with the token from alexa to get the real one? Or is the real token somewhere else and I have to fetch it there?

Thanks a lot for your help!

亚马逊文档“Alexa Skills Kit”:

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 =

  • 访问令牌URI:{OAUTH 2.0 TOKEN ENDPOINT}

  • 客户ID:b9c6 [...] bc60

  • 客户端密码:{客户端密码}应用>设置>密钥新密钥,有效期为2年

  • 客户端身份验证方案:请求正文中的凭据

  • 范围:空

  • domain:空

  • 重定向网址: - >在Azure门户中,定义了允许的令牌听众和回复网址

1 回答

  • 1

    听起来您还没有完成您的技能的帐户链接顺序 . 设置帐户关联配置后,您需要打开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/需要使用以下内容进行更新:

    • 您可以忽略有关"front end" app注册的部分 .

    • 在Alexa帐户链接部分更新URL以使用login.microsoftonline.com而不是login.windows.net

    • ClientId是"back end" app注册的Application Id

    • 必须设置 ?resource= ,并且必须与JWT承载选项的audience参数相同 . 如果您在Visual Studio中使用.Net Core 2.0模板,那么这是ClientId .

    • 使用的客户端密钥(密钥) can not 是"Never Expires" . 使用1年或2年的持续时间 .

相关问题