具有Azure AD B2C身份验证的Alexa技能将在一小时后过期

问题描述 投票:0回答:1

我目前正在构建由Azure Functions(.NET Core / C#)和Azure AD B2C支持的Alexa技能以进行身份​​验证。

对于初始设置,我主要使用了this arcticle中的说明。自从几年前写这篇文章以来,我不得不进行一些更改。最后,我进入了以下配置:

Azure Active Directory B2C

正如我提到的,我们正在使用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范围的一个。
  • 第二个标题为“访问用户的个人资料”,使用:
    • 获取用户的id_token(openid)
    • 获取用户的刷新令牌(离线访问)

AAD B2C用户流程

我正在使用的用户流允许注册和登录,它使用以下配置:

属性

其他

  • 启用JavaScript强制页面布局(预览):开

    令牌寿命

    • 访问和ID令牌生存期(分钟):60
  • 刷新令牌寿命(天):14
  • 刷新令牌滑动窗口的生存期:“有界”。
  • 生命周期(天):90
  • 令牌兼容性设置

    • 发行人(iss)主张:https://<domain>/<b2c-tenant-guid>
  • 主题(子)声明:ObjectID
  • 声称代表用户流:tfp
  • 会话行为

    • Web应用会话的生存时间(分钟):1440
  • Web应用程序会话超时:正在滚动
  • 单点登录配置:租户
  • 注销请求中需要ID令牌:否
  • Azure功能验证中间件

    对于Azure函数中的身份验证层,我正在使用the article mentioned above中描述的方法。

Alexa开发人员控制台

在Alexa方面,我有一个非常简单的技能设置,具有以下设置:

端点

我的终结点使用HTTPS

选项,并且默认区域设置为Azure Function App的处理函数的完全限定的HTTPS终结点。

证书设置为“我的开发端点是具有通配符的域的子域...”

帐户关联

帐户关联设置如下所示:

  • 您是否允许用于创建帐户或链接到...:切换为开
  • 允许用户启用技能而无需帐户链接:切换为开
  • 允许用户在您的应用程序或网站中将其帐户与您的技能相关联:切换为关闭
  • 授权码授予:开启
  • 授权URI:https://myorg.b2clogin.com/myorg.onmicrosoft.com/oauth2/v2.0/authorize?p=<sign-in-user-flow-policy-name>
  • 访问令牌URI:https://myorg.b2clogin.com/myorg.onmicrosoft.com/oauth2/v2.0/token?p=<sign-in-user-flow-policy-name>
  • 您的客户ID:AAD B2C应用GUID
  • [您的秘密:在我的Alexa技能应用程序的AAD B2C中的应用程序设置中生成的密钥(在上面的AAD B2C设置信息中提到)。
  • 您的身份验证方案:HTTP基本
  • 范围:openid
  • https://myorg.onmicrosoft.com/alexa/user_impersonation
  • 域列表:login.microsoftonline.com myorg.b2clogin.com 注意:这可能是错误的,因为我不知道在这里放什么。上面的文章根本没有提到此设置
  • 默认访问令牌到期时间:3600
  • 注意:底部的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中的说明。 ...

amazon-web-services azure azure-active-directory azure-functions alexa-skills-kit
1个回答
1
投票

我认为目前我有足够的信息可以继续回答我自己的问题。我发现,offline_access范围对于令牌刷新是必需的。

对于Microsoft,“ offline_access范围可以使您的应用长时间代表用户访问资源。在同意页面上,该范围显示为“保持对您已授予其访问权限的数据的访问”权限。当用户批准offline_access范围时,您的应用可以从Microsoft身份平台令牌终结点接收刷新令牌。刷新令牌是长期存在的。随着旧令牌的过期,您的应用可以获取新的访问令牌。“

© www.soinside.com 2019 - 2024. All rights reserved.