JWT身份验证-我需要刷新令牌吗?

时间:2020-06-30 20:28:16

标签: c# authentication jwt claims-based-identity refresh-token

我有一个.Net Core API,它使用对称密钥提供基本的承载授权,从而在成功登录时生成JWT。它在Docker容器内运行,并且不维护状态。我们称之为 API 1

此端点由移动应用程序POST /Authenticate调用。由第三方开发和维护此移动应用。

此端点的业务逻辑是:

  1. 将请求中提供的用户名+密码发送到我们网络上的另一个REST API(由另一个团队维护)。我们将其称为 API 2
  2. 然后
  3. API 2 使用该UN / PW并检查数据库以验证凭据是否正确
  4. 如果有效,则 API 2 将访问令牌(JWT)和刷新令牌发送到 API 1 ,其中实质上是 API 1 将解析JWT以获取唯一的用户ID(我们在组织中的所有应用中使用此唯一的用户ID)。 API 1 对刷新令牌无效。
  5. 如果 API 1 可以成功解析此用户ID,它将使用SymmetricSecurityKey生成一个 new JWT,并将该解析的用户ID添加为声明。 / li>

因此,此JWT返回到Native App客户端,并且有60分钟的有效期(尽管我看到那15分钟的时间更常见。)。此令牌需要使用授权标头Authorization: Bearer xyz123etc

包含在我的API上的每个受保护资源中

SO ,旨在保持 API 1 可扩展和无状态,并且无需将表添加到 API 1 的后端数据库中存储刷新令牌,我可以不为 API 1 提供'Refresh'令牌吗?

我的想法是,移动应用应该应该能够登录一次,存储在SharedPreferences / NSUserDefaults中使用的UN / PW,并且如果客户端曾经从 API 1 中获得未经授权的401,在GET /SomeProtectedResource上,客户端只需要再次调用POST Authenticate,即可从 API 2 获取新的JWT,然后重试调用GET /SomeProtectedResource

我在这里有毛病吗?我看不到需要提供“刷新令牌”端点

0 个答案:

没有答案