【问题标题】:One JWT token for many services一个用于多种服务的 JWT 令牌
【发布时间】:2018-09-09 04:48:36
【问题描述】:

我在 ASP.Net Core 中遇到 JWT 身份验证问题。场景如下:

  • 我有一个 ASP.NET Core Web API,我们称之为“API A”。为提供正确登录名/密码的用户生成 JWT 令牌是合理的,然后令牌正在生成。
  • 我有第二个 ASP.NET Core Web Api,称为“API B”,它从数据库返回一些数据。我希望能够使用由“API A”生成的 JWT 令牌来授权访问来自“API B”的数据。

是否可以通过使用JwtBarear Authentication来实现?

感谢您的任何提示!

【问题讨论】:

    标签: authentication jwt asp.net-core-2.0 asp.net-core-webapi authorize


    【解决方案1】:

    是的,您可以为多个服务的身份验证生成 JWT 令牌,您需要将此令牌保存在具有身份验证详细信息(user_id、设备、auth_token 等)的数据库中 -> 表中,获取并重用相同的令牌以对用户进行身份验证,直到该令牌未过期。

    如果过期,重新生成并更新表中的令牌。

    【讨论】:

      【解决方案2】:

      是否可以通过使用JwtBarear Authentication来实现?

      这甚至是 JWT 令牌的预期用途。您可以使用令牌向信任身份提供者 A 的任何服务(B、C、D)进行身份验证。

      假设 JWT 令牌包含确保身份和有效性的所有必要信息,即使不将令牌存储在任何数据库中,每个服务都必须验证 JWT 令牌(过期、签名等)。

      【讨论】:

        【解决方案3】:

        您的问题的标题提到了许多服务,但在您的问题中您只谈到了两个。

        请注意,JWT 令牌通常有一个受众声明 (aud),它指明了为哪些服务颁发令牌。当您验证令牌时,请确保 aud 声明包含您的服务的标识符。

        【讨论】:

        • 是的,我只提到了大约 2 个服务,但我想如果我能管理两个,我也能管理三个甚至更多。最后我解决了我的问题,解决方案是正确的设置受众和发行者属性。感谢每一位回复者!
        猜你喜欢
        • 2017-11-29
        • 1970-01-01
        • 2018-07-18
        • 2020-05-31
        • 1970-01-01
        • 2018-07-30
        • 2012-06-22
        • 2016-01-06
        • 1970-01-01
        相关资源
        最近更新 更多