【问题标题】:How to authenticate Angular 4 app placed inside ASPNETCORE如何验证放置在 ASPNETCORE 中的 Angular 4 应用程序
【发布时间】:2018-02-16 00:17:32
【问题描述】:

我浏览了 IdentityServer4 的在线示例,但我无法解决我遇到的问题。

我有一个 Angular 4 应用程序位于 ASP.NET Core 2 应用程序的根目录。 ASP.NET Core 应用程序没有控制器,仅托管 Angular 4 应用程序。这样做的原因是能够使用混合而不是隐式授予,这样令牌就不会被发送回浏览器。

现在,我可以将客户端配置为具有 HybridAndClientCredentials 的 MVC 应用程序。但它会在 Angular 方面起作用吗?如何知道用户是否经过身份验证,如何回调 API 后端,在 Angular 应用程序中从哪里获取访问令牌等。我有点困惑。我试图避免使用客户端 NPM 与 Angular 上的隐式流集成,因为我想在服务器上保留令牌。

感谢任何反馈。

谢谢

【问题讨论】:

  • "但是它在 Angular 端可以工作吗?"只要您通过 MVC 应用程序对 api 进行所有调用,就可以这样想。

标签: identityserver4


【解决方案1】:

恐怕你处于一个不可能的境地。根据OAuth specs,必须与SPA'a 一起使用的流是隐式的。还有IdentityServer specs

如果您转换为 MVC,您将失去 SPA 的功能。

实际上答案就在您的问题中 - where to get the Access Token in the Angular App。一旦你在 Angular 应用程序中得到它,它就已经暴露给用户了。但是如果没有它在 Angular 应用程序中,您将无法进行 Bearer 身份验证调用。

正如我所说 - 不可能的情况。如果我们想在这里搜索一些积极的东西,是不是访问令牌是一个短期令牌(或者至少建议如此)并且在几分钟后它已经过期。

PS:在 https 时代,“通过电缆”传输敏感信息更加安全(我不是说防弹),并且给用户访问令牌就像说他 Hey you have this permissions, your name is <name> 等等。他应该做的事情已经知道了。

【讨论】:

  • 同意。 SPA 的“正确”方法基本上是 oidc-client-js 库实现的。隐式流程,使用 access_token 与后端无状态 API 对话,受益于自动令牌更新和会话监控功能。将访问令牌暴露给客户端实际上并不比暴露具有相同“权限”的 cookie 风险更大,而且您也不必担心 CSRF。
猜你喜欢
  • 2018-01-12
  • 2018-02-20
  • 1970-01-01
  • 2019-06-23
  • 2018-01-10
  • 2013-08-19
  • 2019-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多