在 javascript 中重新使用已经过身份验证的 mvc 客户端

Re-use already authenticated mvc client in javascript

我有一个使用 identityserver 4 的 .Net core MVC 客户端。

returns 视图受授权属性保护的方法。

但是如何调用 Web API(它是不同 URL 上的单独项目 运行)使用 MVC 客户端具有的相同身份验证数据?

或者我是否必须使用 oidc javascript 客户端再次进行身份验证?

有什么方法可以让我从已经通过身份验证的 MVC 客户端获取承载令牌以授权我的 javascript 客户端访问网络 API?

在 MVC 控制器操作中获取您的访问令牌,并将其传递到 ViewBag 或任何其他操作中的操作视图,甚至直接在 razor 视图中获取它。

这里有一个例子:https://github.com/IdentityServer/IdentityServer4.Samples/tree/release/Clients/src/MvcHybrid

注意 Startup class、HomeController 和 this view

启动:

services.AddAuthentication(options => {...})
        .AddOpenIdConnect("oidc", options => {
            ...
            options.SaveTokens = true;
            ...
        }

Controller/view:

var token = await HttpContext.GetTokenAsync("access_token");
// use token