【问题标题】:Blazor Client Side authentication jwt or cookiesBlazor 客户端身份验证 jwt 或 cookie
【发布时间】:2019-10-29 22:43:55
【问题描述】:

所以我正在尝试客户端 blazor 并尝试为 JWT 或 Cookie 身份验证找出正确的实现。 假设我有一个在客户端提供令牌和刷新令牌的服务,我将有多个 API 服务需要使用这个令牌或 cookie 来创建 API 请求。

据我了解,我将需要实现 API 服务类,与此处记录的类似 https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/implement-resilient-applications/use-httpclientfactory-to-implement-resilient-http-requests

因此,为了获得一致的身份验证状态,应引入身份验证服务并将其注入 API 服务类。该服务将负责进行身份验证、获取初始令牌并在需要时进行刷新令牌。

因此,在 Blazor 的最新版本中,有一个名为 AuthenticationStateProvider 的新组件,它的用途似乎很明确,但问题是将其用作全局身份验证服务是否正确?

【问题讨论】:

    标签: c# blazor


    【解决方案1】:

    所以客户端不支持HttpClientFactory。在客户端 Blazor 中,将 HttpClient 添加到 DI 系统中,您可以将其注入到组件或类中。

    所以您想使用 AuthenticationStateProvider 作为全局身份验证服务?我对这个组件不熟悉,但恐怕,从我读完你的问题后的简短阅读来看,它不是一个身份验证系统,而是一个提供身份验证状态信息的工具,例如用户年龄等。您仍然需要配置 Jwt 中间件,创建一个负责发布 Jwt 令牌的控制器,等等。而且我想您可以使用 AuthenticationStateProvider 在用户之前为您的客户端应用程序提供身份验证状态,例如,登录和之后等。我希望我没有错,至少不是完全错误。

    所以希望这会有所帮助...

    【讨论】:

      【解决方案2】:

      在 SPA 等不安全的客户端上使用 JWT 时,实施刷新令牌是一种不好的做法,因为这些令牌是私有的。

      当前的 OIDC 建议(针对 SPA)是实施身份验证代码授予策略。

      我建议你看看 Blazor-Auth0 库(作者在这里),它实现了在 Auth0 上涂黑的身份验证代码授予策略,所以你不需要重新发明轮子(而且它是免费的)。

      即使您不想添加新的依赖项,您也会发现它是如何在 Blazor 中实现 JWT 身份验证和授权的良好示例来源。

      https://github.com/henalbrod/Blazor.Auth0

      【讨论】:

      • 感谢您的示例,确实它使事情变得更加清晰,并且通过分离 AuthenticationStateProvider 和 AuthenticationService 实现的方式使代码更加干净和可扩展。现在我不想使用任何外部服务进行身份验证,您对 JWT 不适合 SPA 的评论引起了我的兴趣,我认为 JWT 将是此类应用程序最常用的方法?
      • 别误会,JWT 是为网络而生的,但是刷新令牌不是。刷新令牌旨在用于可以安全存储机密的安全环境(也称为服务器端)。
      • 我认为措辞令人困惑,我只是为了避免混淆而对其进行了更改,感谢您的 cmets。
      • @HenryRodriguez 您关于刷新令牌的立场并不完全正确。刷新令牌的全部意义在于解决 JWT 有效地是静态的问题。通过使用短期访问令牌 (JWT) 和长期刷新令牌 (GUID),您可以获得在每个设备级别上撤消访问权限的能力,同时使声明保持合理的最新状态,同时还可以获得大部分好处签名的 json 网络令牌。在某些时候,您必须在客户端上存储一些密钥才能访问 API。仅仅在客户端上存储另一个密钥并没有任何目的让它变得更复杂。
      • 这可能适用于设备,但恐怕不是我们谈论 SPA 时推荐的方式
      猜你喜欢
      • 1970-01-01
      • 2020-02-27
      • 1970-01-01
      • 2021-07-24
      • 2020-12-09
      • 1970-01-01
      • 2017-11-25
      • 1970-01-01
      • 2022-01-13
      相关资源
      最近更新 更多