我在收到回复后写信在这里发帖 https://github.com/IdentityServer/IdentityServer4/issues/1179#issuecomment-304032678
--------------------------------------
我正在开发一个应用程序,该应用程序具有一个 MVC 核心应用程序,该应用程序只需加载角度应用程序。然后,角度应用程序将连接到 Web API 来执行 CRUD 操作。
我知道可以将 cookie 身份验证与 Odic 混合流结合使用来生成 cookie,但不确定 Angular 应用程序如何获取对访问令牌的引用并在其过期时更新它,以便连接到我的 Web api。
我读完这篇文章https://damienbod.com/2017/05/06/secure-asp-net-core-mvc-with-angular-using-identityserver4-openid-connect-hybrid-flow/ https://damienbod.com/2017/05/06/secure-asp-net-core-mvc-with-angular-using-identityserver4-openid-connect-hybrid-flow/并观看了这个视频但它们都没有解释 Angular 应用程序如何获取访问令牌来查询其他 API。
如果你们中有人能够解释获取访问令牌的最佳过程,并使用刷新令牌定期更新它,我将不胜感激。
我正在编写类似的解决方案。我同意你和你的担忧。任何对访问令牌和 API 了解不多的人都可以从浏览器获取令牌并使用它来调用您的 Web API。即使在文档中,他们也说采用混合解决方案。
解决方案:
您可以从 Visual studio 2017 SPA 模板创建混合应用程序 (MVC + Angular 2)。按照本教程操作
https://long2know.com/2017/04/net-core-angular-vs2017-templates/ https://long2know.com/2017/04/net-core-angular-vs2017-templates/
这已为您设置了所有内容,并且还具有调用控制器方法并获取数据的示例组件。
在启动类中添加身份服务器配置,方式与此处为 mvc 客户端描述的方式相同
http://docs.identityserver.io/en/latest/quickstarts/5_hybrid_and_api_access.html http://docs.identityserver.io/en/latest/quickstarts/5_hybrid_and_api_access.html
最后用 Authorize 属性装饰 HomeController。这将首先检查您的身份服务器,并根据您的配置将您重定向到权威机构。示例:
[Authorize]
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
public IActionResult Error()
{
return View();
}
}
为了调用您的 API,您可以从您的 Angular 应用程序调用控制器方法(它们在其中一个组件中有示例调用)并获取访问令牌,并最终通过服务器调用您的 API。
仍在努力寻找完整的解决方案。希望能帮助到你!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)