我目前正在构建由Azure Functions(.NET Core / C#)和Azure AD B2C支持的Alexa技能以进行身份验证。
对于初始设置,我主要使用了this arcticle中的说明。自从几年前写这篇文章以来,我不得不进行一些更改。最后,我进入了以下配置:
正如我提到的,我们正在使用AAD B2C进行身份验证。相关应用程序的用户可以注册和登录React应用程序。这个想法是通过Alexa意图+话语为所说的用户提供一个替代界面。
[我使用以下设置在AAD B2C中为Alexa创建了一个应用程序:
我生成了一个App Key,在Alexa开发者控制台的Account Linking部分中,我将其用作秘密。
许多在线示例都在此处将显式到期日期设置为1或2年;但是,我完全看不到任何选项(即没有到期选项),只有代码。这可能是问题的一部分吗???API访问权限
user_impersonation
。描述为“代表登录用户访问此应用”。完整范围值为:https://myorgsname.onmicrosoft.com/alexa/user_impersonation。对于API访问,我必须在此处输入API条目:
user_impersonation
范围的一个。我正在使用的用户流允许注册和登录,它使用以下配置:
属性
其他
令牌寿命
令牌兼容性设置
https://<domain>/<b2c-tenant-guid>
会话行为
对于Azure函数中的身份验证层,我正在使用the article mentioned above中描述的方法。
在Alexa方面,我有一个非常简单的技能设置,具有以下设置:
我的终结点使用HTTPS
选项,并且默认区域设置为Azure Function App的处理函数的完全限定的HTTPS终结点。证书设置为“我的开发端点是具有通配符的域的子域...”
帐户关联设置如下所示:
https://myorg.b2clogin.com/myorg.onmicrosoft.com/oauth2/v2.0/authorize?p=<sign-in-user-flow-policy-name>
https://myorg.b2clogin.com/myorg.onmicrosoft.com/oauth2/v2.0/token?p=<sign-in-user-flow-policy-name>
注意:底部的Alexa重定向URL是我在AAD B2C中为回复URL部分输入的内容。
现在最重要的部分,问题
。一切似乎一开始都可以正常工作...我可以去alexa.amazon.com并使用Link Account(将我重定向到AAD B2C驱动的登录屏幕,也可以将其重定向到该界面)。关联帐户后,我就可以成功利用话语并收到回复。问题在我等待一个小时(我相信是一个小时)后开始。一个小时后尝试启动Intent会在尝试验证Auth令牌时在Azure Function应用程序方面产生错误。
有人可以向我提供一些有关我可能设置不正确或至少应注意的事项的指导吗?正如我在这个问题开始时提到的那样,我在网上找到的许多参考文献都是过时的,不能涵盖我期望使用的所有设置。他们中的许多人仍在使用microsoftonline.com权限和b2clogin.com。
乍一看,我认为问题在于一个小时后过期的Alexa技能无法刷新其令牌。我需要怎么做才能确保它正确刷新?
我目前正在建立由Azure Functions(.NET Core / C#)和Azure AD B2C支持的Alexa技能以进行身份验证。对于初始设置,我主要使用了该arcticle中的说明。 ...
我认为目前我有足够的信息可以继续回答我自己的问题。我发现,offline_access
范围对于令牌刷新是必需的。
对于Microsoft,“ offline_access范围可以使您的应用长时间代表用户访问资源。在同意页面上,该范围显示为“保持对您已授予其访问权限的数据的访问”权限。当用户批准offline_access范围时,您的应用可以从Microsoft身份平台令牌终结点接收刷新令牌。刷新令牌是长期存在的。随着旧令牌的过期,您的应用可以获取新的访问令牌。“