如何在C sharp api中获取OpenID连接流中的令牌



我的API使用OIDC流来访问它的方法。OIDC应该返回一个id令牌和一个访问令牌。当我运行控制器时,我会被发送到身份验证页面,在那里我必须输入登录凭据。登录成功后,我会被重定向回我的控制器url,例如localhost:41223/api/Identity/GetInformation。

我的控制器方法如下:

[HttpGet]
[Authorize]
public ActionResult<int> GetInformation()
{
var information = User.Claims;
return 1;
}

id令牌应包括经过身份验证的用户信息,该信息可通过以下代码获得:

User.Claims;

如何检索访问令牌信息并对其进行解码以获得令牌过期时间?根据我的研究,我们必须在https://jwt.io/.但是,我们如何在代码中获得令牌呢?

我使用此代码访问原始令牌

string idToken = HttpContext.GetTokenAsync("id_token").Result ?? "";
string accessToken = HttpContext.GetTokenAsync("access_token").Result ?? "";

要使其工作,您还必须将其设置为真正的

options.SaveTokens=true;

然后要解析令牌,你可以在这里阅读更多关于的信息