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

时间:2018-05-11 16:44:27

标签: asp.net-mvc security identityserver4 asp.net-core-webapi bearer-token

我有一个.Net核心的MVC客户端,它使用identityserver 4。

返回视图的方法受authorize属性保护。

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

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

有没有办法可以从已经过身份验证的MVC客户端获取持有者令牌来授权我的javascript客户端访问Web API?

1 个答案:

答案 0 :(得分:3)

在MVC控制器操作中获取访问令牌,并将其传递给ViewBag中的操作视图或任何内容,甚至直接在剃刀视图中获取。

以下是一个示例:https://github.com/IdentityServer/IdentityServer4.Samples/tree/release/Clients/src/MvcHybrid

注意Startup类,HomeController和this view

启动:

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

控制器/视图:

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