首页 > 解决方案 > User.Identity.GetUserId 返回用户名而不是 wso2 令牌中的用户 ID

问题描述

我正在使用 WSO2 身份服务器并在生成令牌之后。当我使用令牌调用 API 时,我得到 User.Identity.GetUserId() 作为用户名,这在我们的案例中发生在电子邮件中,而不是定义的唯一 userId。我希望 GetUserId 应该返回用户 ID。我得到的有效载荷如下所示: namid 是这里的用户 ID。

{
  "sub": "supriyad19@getnada.com",
  "aud": "z21RCaZ_ehgaO_5mO8YgxkPUdqMa",
  "unique_name": "supriyad19@getnada.com",
  "nbf": 1616692647,
  "role": "Admin",
  "azp": "z21RCaZ_ehgaO_5mO8YgxkPUdqMa",
  "scope": "email openid profile",
  "iss": "https://demo-identity.onblick.com/oauth2/token",
  "nameid": "6ee0b06f-e9e4-4f91-87ea-8c1310e9c505",
  "exp": 1616696247,
  "iat": 1616692647,
  "jti": "9fca536e-d753-4f35-b7b8-95f1384891ce"
}

任何人都可以帮助我。 在此处输入图像描述

[Route("Employee/ExportWorkforceToCSV")]
        [HttpPost]
        [Authorize(Roles = "HRManager")]
        public async Task<string> ExportWorkforce(ExportRequestModel model)
        {
           var userId = User.Identity.GetUserId();

这里 JWT 令牌应该提供 sub 作为 userId,它是存储在 db 中的唯一标识 id。User.Identity.GetUserId(); 提供 userId 并在此 Id 的帮助下进一步进行 db 调用以获取详细信息。

标签: jwtwso2authorizationopenidwso2is

解决方案


推荐阅读