【发布时间】:2022-01-06 11:55:57
【问题描述】:
我是 ASP.NET 和 Azure AD B2C 的新手。我的目标是创建 ASP.NET 5 应用程序,该应用程序可以通过带有 MSAL 库的 react-frontend 访问。在前端,我已成功发出访问和 id 令牌以在我的应用程序中进行授权,没有任何问题,并且它们被 ASP.NET 后端接受并授权用户请求。当我尝试在后端请求的当前上下文中访问用户时,我遇到了问题。此令牌不仅允许我使用我获得的令牌调用 MS Graph API https://graph.microsoft.com/v1.0/me,以获取有关用户的数据。我得到的错误是
{
"error": {
"code": "InvalidAuthenticationToken",
"message": "Invalid x5t claim.",
"innerError": {
"date": "2021-11-29T15:48:41",
"request-id": "91b63eeb-0346-4ab2-9d31-ca58e8d1e30b",
"client-request-id": "91b63eeb-0346-4ab2-9d31-ca58e8d1e30b"
}
}
}
经过进一步研究,我发现用于后端身份验证的令牌不能用于从 AD B2C 或 Graph API 检索用户数据,因为目前是AD B2C does not support "on-behalf-of" flow。
在我仍然使用 AD B2C 作为我的应用程序的身份验证提供程序和用户数据提供程序的情况下,如何实现身份验证流程?此外,在未来,我希望用户能够将自己的机密存储在 Azure Key Vault 中,据我所知,这只能通过 Graph API 来完成。
【问题讨论】:
-
令牌中返回所有数据时为什么要调用/me?唯一的解决方案是使用 AAD Client_Credential 流让您的 Web 服务器使用它自己获得的令牌直接调用 MS Graph。您不能使用用户 AAD B2C 令牌来调用 /me 端点。
标签: asp.net azure authentication azure-ad-b2c msal