在带有React前端的.NET Core 2.0应用程序中处理JWT的最佳做法是什么?

问题描述:

给予一定的背景下,多包涵,在带有React前端的.NET Core 2.0应用程序中处理JWT的最佳做法是什么?

  • 我们有一个用于在所有我们的应用程序共享验证现有的外部OAuth的服务。它有一个用于用户身份验证的登录表单,并为其API提供了JWT,这些API在我目前正在使用的应用程序中调用。
  • 我正在使用的应用程序是使用.NET Core 2.0和React前端。服务器端主要负责管理外部API的令牌,并为React客户端调用提供'代理'API,然后调用外部API。从本质上讲,架构就像其他任何标准的Web API/MVC应用程序一样,但不是直接从数据库中获取数据,而是调用一些其他外部API。

在.NET Core应用程序的上下文中,它正在为其API使用JWT身份验证。一旦用户使用该外部服务进行身份验证,他们将拥有用于外部API(存储在会话中)的JWT和用于内部“代理”API(通过cookie传递给客户端)的另一个JWT。因此,客户端发起了一个调用(“api/users”),该请求被路由到我的控制器,使用JWT授权,该控制器调用某个UserService,该会话使用存储在会话中的JWT调用外部API 。

阵营客户端发出的API调用与令牌 - > .NET核心API抓起JWT存储在会话 - >使用JWT进行调用外部API

这一切工作正常,但现在我运行到刷新客户JWT的一些问题。我目前正在将一个访问令牌传递给客户端的一个cookie中,但我还需要将一个刷新令牌传递给客户端,以便在到期时间已过时可以获取新的访问令牌,而我不是正在做。我也需要以某种方式传递令牌的到期时间。将所有这些序列化为JSON对象并将其传递给cookie是否有意义?将所有这些交给客户的好方法是什么?我基本上试图达到客户端将检查的点,“我的令牌是否过期了?”,如果是,则使用刷新令牌获取新令牌,如果不是,继续进行API调用。

对不起,如果所有这些信息是一个简单问题的矫枉过正,只是试图给出一些上下文。

+0

?什么是身份提供者? – Coding

+0

你的问题与reactjs有什么关系? – webdeb

如果您使用的身份服务器,您可以您是否使用Identity Server的检查刷新令牌here

+0

我目前没有使用Identity。对于更多的上下文,这是我用于JWT身份验证的粗略指南:https://*.com/questions/45715394/asp-net-core-2-0-bearer-auth-without-identity – Blake