从身份服务器请求用户声明和令牌的功能?

Function to request user claims and token from Identity Server?

登录身份服务器后检索用户声明和令牌的最佳方式是什么?

我有一个 .Net Core MVC 网络应用程序。我重定向到身份服务器,登录,然后重定向回我的 Web 应用程序。

然后我想从我的应用程序请求来自身份服务器的用户声明和令牌。

有方法调用吗?

我已经阅读了教程并四处搜索并找到了处理此行为的库(oidc-client-js,oidc.usermanager for javascript 处理此问题。OidcClient for native c# apps),但不适用于 c# web 应用程序 - 所以我意识到也许我要求的不是惯例,但我仍然很感激对此有任何见解。

编辑:

详细来说,在 c# web 应用程序教程中,特别是教程 #3,我没有看到从图 1 到图 2 的声明和令牌信息是如何变得可检索的。

此外,我试图在 c# 中调用和处理这些对象,而不是 html。

图一

图2

谢谢

在 controller 中,你可以撤销像

这样的声明
 var claims = User.Claims;

获取访问权限 token/id token/refresh 令牌:

 var accessToken = HttpContext.GetTokenAsync("access_token").Result;
 var idToken = HttpContext.GetTokenAsync("id_token").Result;
 var refreshToken = HttpContext.GetTokenAsync("refresh_token").Result;

为此,您需要按如下方式在 ConfigureServices 中注册您的 OIDC 中间件(确保将 SaveTokens 设置为 true):

.AddOpenIdConnect(options => {
// Set all your OIDC options...

// and then set SaveTokens to save tokens to the AuthenticationProperties
options.SaveTokens = true;
});

在 mvc razor 页面中,您可以获得信息:

@using Microsoft.AspNetCore.Authentication
@{
    ViewData["Title"] = "Home Page";
}

<dl>
    @foreach (var claim in User.Claims)
    {
        <dt>@claim.Type</dt>
        <dd>@claim.Value</dd>
    }

</dl>

<dt>access token</dt>
<dd>@await ViewContext.HttpContext.GetTokenAsync("access_token")</dd>

<dt>ID token</dt>
<dd>@await ViewContext.HttpContext.GetTokenAsync("id_token")</dd>

<dt>refresh token</dt>
<dd>@await ViewContext.HttpContext.GetTokenAsync("refresh_token")</dd>