3

我从post here如何使用ASP.NET MVC的核心使用Identity Server的4连接到Web API

收到响应后写角------------- -------------------------

我正在开发一个具有MVC核心应用程序的应用程序,该应用程序只需加载角度应用。然后,角度应用程序将连接到Web API以执行CRUD操作。

我知道它可能使用cookie认证与odic hybrid flow结合来生成一个cookie,但不知道角度应用程序如何获得对访问令牌的引用并在其过期时将其更新以便连接到我的网页api。

我看过这篇文章https://damienbod.com/2017/05/06/secure-asp-net-core-mvc-with-angular-using-identityserver4-openid-connect-hybrid-flow/并观看了这个视频https://www.youtube.com/watch?v=5OUQZAvxZuA&feature=youtu.be&t=30m40s,但没有一个说明角度应用程序如何获取访问令牌以查询其他API。

如果有人能解释访问令牌的最佳过程,并使用刷新令牌定期更新,我将不胜感激。

回答

0

对于这种情况,我会使用隐式流。通过这个流程,MVC应用程序将使用回调URI中的访问令牌(根据OpenID Connect协议的定义)重定向到您的客户端应用程序。

从阅读你在github上的问题,我相信你担心以这种方式传递访问令牌的安全性?我认为你的用户界面是通过HTTP/S访问的?如果是这样,访问令牌将安全传输。此外,访问令牌位于URI的片段部分,因此不应传输到您的UI的Web服务器。无论如何,最初的请求将包含一个随机数,用于缓解重放攻击。

至于访问令牌,我使用优秀的OIDC Javascript Client

1

我正在编写类似的解决方案。我同意你和你的顾虑。对访问令牌和API知之甚少的人可以从浏览器中获取令牌并用它来调用Web API。即使在他们说的混合解决方案文档中。

解决方案:

您可以创建从Visual Studio 2017年的SPA模板的混合应用程序(MVC +角2)。按照本教程

https://long2know.com/2017/04/net-core-angular-vs2017-templates/

这对你的一切设置,并且还具有调用控制器方法并获取数据样本组成。

添加身份服务器配置在启动类,他们已经在这里描述为MVC客户

http://docs.identityserver.io/en/release/quickstarts/5_hybrid_and_api_access.html

最后只是装饰与授权属性HomeController的方式相同。这将首先检查您的身份服务器,并根据您的配置将您重定向到管理局。例如:

[Authorize] 
public class HomeController : Controller 
{ 
    public IActionResult Index() 
    { 
     return View(); 
    } 

    public IActionResult Error() 
    { 
     return View(); 
    } 
} 

唤起你的API,你可以从你的角度程式呼叫控制器方法(它们在组件的一个示例调用)并获取访问令牌,最终通过服务器调用你的API。

仍在致力于提供完整的解决方案。希望能帮助到你!

相关问题