如何在与azure AD

时间:2018-04-24 09:27:18

标签: amazon-web-services azure token azure-active-directory alexa

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

我的自定义技能的帐户下载: {来自我的天蓝门户的数据}

  • 授权授权类型:验证代码授予
  • 授权URI:{OAUTH 2.0 AUTHORIZATION ENDPOINT}
  • 访问令牌URI:{OAUTH 2.0 TOKEN ENDPOINT}
  • 客户ID:b9c6 [...] bc60 {应用程序ID}
  • 客户端密钥:{客户端密码}
  • 客户端身份验证方案:请求正文中的凭据
  • 范围:openid
  • domain:empty
  • 重定向网址: - >在Azure门户中,已定义允许的令牌听众和回复网址

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

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

  

AQABAAAAAADX8GCi6Js6SK82TsD2Pb7rqGN56iHT_YSxlSr1RAdXucGs0S3ykOaw0XZ1WnjJotqZAn9BH7agRbP0VQv2rnJuRw_aJil7 [...] JIEO2Ap4wuG-tTwiSmZBfbLhyYtwQmxLAkqiLApqFmBYcyu-dnzlVV4liDGyTQ7gAXufd3zt7QGmi3UfP1aL9f5NBeXbmxnU6FHRzF10QZa19pTQgNTtIK8oIAA

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

  

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

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

现在我不确定我的帐户链接配置是否存在问题?或者我是否必须使用alexa中的令牌做一些事情来获得真实的令牌?或者是其他地方的真实令牌,我必须在那里取得它?

非常感谢您的帮助!

亚马逊文档“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 = + {Application ID}
  • 访问令牌URI:{OAUTH 2.0 TOKEN ENDPOINT}
  • 客户ID:b9c6 [...] bc60 {应用程序ID}
  • 客户端密码:{客户端密码}应用程序>设置>键入有效期为2年的新密钥
  • 客户端身份验证方案:请求正文中的凭据
  • 范围:空
  • domain:empty
  • 重定向网址: - >在Azure门户中,已定义允许的令牌听众和回复网址

2 个答案:

答案 0 :(得分: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/需要使用以下内容进行更新:

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

答案 1 :(得分:0)

除了Nate's answer并在授权URI中添加s.count("bob")之后,我还必须在应用程序注册和{上授予API权限?resource=> Azure Active Directory Graph {1}}。

如果没有此权限,则帐户链接将引发错误。如果您遇到类似的问题,请尝试使用Postman的OAuth值,并检查Postman控制台以获取错误消息