我有一个.Net核心的MVC客户端,它使用identityserver 4。
返回视图的方法受authorize属性保护。
但是如何使用MVC客户端具有相同的经过身份验证的数据来调用Web API(在不同的URL上运行的单独项目)?
或者我是否必须使用oidc javascript客户端再次进行身份验证?
有没有办法可以从已经过身份验证的MVC客户端获取持有者令牌来授权我的javascript客户端访问Web API?
答案 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