【问题标题】:Angular and Json Web TokensAngular 和 Json Web 令牌
【发布时间】:2019-09-28 14:34:57
【问题描述】:

我有一个 .net core 2.2 API 项目,它被 Angular 应用程序使用。为了保护 API,我使用了 JWT。 API 和 SPA 都是内部应用程序。

我正在使用具有资源所有者密码授权类型的 IdentityServer4。我听说不建议这样做,但是为每个用户分配了不同的角色,这些角色必须放在 JWT 的角色声明中。这允许 .net 核心授权数据注释授予和限制对每个路由的访问。

我现在的流程是用户登录到将凭据发送到 API 的 SPA。 API 使用 Identity 来验证凭据。验证成功后,API 向 IdentityServer4 发送请求以获取 JWT,然后将其发送回 SPA。然后将 JWT 保存到本地存储以用于每个请求。

我想知道我是否应该从 SPA 直接从 IdentityServer4 请求令牌(IS4 可以访问 Identity 上下文并验证 un/pw)?还有我忽略的流程中的任何其他重大缺陷。

【问题讨论】:

标签: c# asp.net-core identityserver4


【解决方案1】:

您最好将 Implicit Flow 与 Angular 一起使用。资源所有者密码授权需要您的应用程序读取用户名和密码,这存在可能将密码暴露给攻击者的安全问题。

使用Implicit的实现,可以参考this article。

此外,您还可以将授权码与 PKCE 流程一起使用:

对于基于 JavaScript 的应用程序,不再推荐使用隐式。请改用带有 PKCE 的授权码。

【讨论】:

    【解决方案2】:

    最初我从 JWT 令牌开始,但后来由于一些复杂性,我决定使用自定义令牌。更详细的解释请阅读custom token

    下图展示了我实现的请求流程:

    【讨论】:

      猜你喜欢
      • 2017-02-03
      • 2016-12-08
      • 2016-03-23
      • 1970-01-01
      • 2014-04-24
      • 2016-08-01
      • 2021-11-02
      • 2018-12-16
      • 2018-09-06
      相关资源
      最近更新 更多