【发布时间】:2018-08-15 13:23:29
【问题描述】:
我的 webapp 使用 .NET Core 开发并部署在 Azure 中。我已启用 Azure 应用服务身份验证并将其配置为使用 Azure Active Directory。 当我访问 web 应用程序时,我会被重定向到正确的登录页面。 登录后,我可以浏览到端点 .auth/me 并查看我的用户存在的声明。我还可以验证以下请求标头是否存在值:
- X-MS-TOKEN-AAD-ID-TOKEN
- X-MS-TOKEN-AAD-ACCESS-TOKEN
- X-MS-TOKEN-AAD-EXPIRES-ON
- X-MS-TOKEN-AAD-REFRESH-TOKEN
但我无法在我的控制器中检索这些声明。 使用 User.Identity.isAuthenticated 始终为 false,并且 User.Identity.Claims 为空。
如何使用户通过身份验证并检索声明?
理论上,我可以检查请求标头(X-MS-TOKEN-AAD-ID-TOKEN)是否存在,然后检索端点 .auth/me 上存在的声明,但这看起来并不像正确的方法是什么?
编辑: 我可能在此处讨论的同一问题上绊倒了吗? (Trouble getting ClaimsPrincipal populated when using EasyAuth to authenticate against AAD on Azure App Service in a Asp.Net Core web app)
【问题讨论】:
-
是的,你做对了,阅读标题,解压 id_token 并提取声明。也可以看到这个 - stackoverflow.com/a/46765687/4148708。如果您不喜欢这种方法,请放弃 EasyAuth 并直接与 Azure AD 集成(并使用 ADAL .NET)。
标签: azure authentication azure-active-directory asp.net-core-2.0