【问题标题】:Are JWT tokens generally valid to use cross origin?JWT 令牌通常对使用跨域有效吗?
【发布时间】:2019-02-17 11:11:50
【问题描述】:

我有一个通过 Azure AD 使用开放 ID 身份验证的 Web 应用程序。它需要与另一个使用相同身份验证形式的 Web 服务进行跨域通信。通常是否允许将相同的令牌传递给其他 Web 服务?

例如,我知道我无法跨来源传递 cookie。 JWT 令牌中是否存在会导致类似问题的保护措施?

【问题讨论】:

    标签: asp.net-mvc azure asp.net-core jwt


    【解决方案1】:

    ,JWT 中没有内置的来源保护。这只是一个令牌

    【讨论】:

    • 谢谢。通过 javascript(在浏览器中)将令牌传递给跨多个来源的 Web 服务是否很典型?或者这是常见的做法?
    • @Erix 的意图可能是为一项服务使用一个短暂的令牌。 (stackoverflow.com/a/35438142) 但是很可能在多个服务中使用令牌,只要它们使用相同的密钥颁发者和密钥来读取令牌 (stackoverflow.com/a/44759395)
    • 如果您将 JWT 令牌视为用于访问多个(微)服务的“浏览器身份”,这是典型的。
    【解决方案2】:

    JWT 只是一种对声明进行编码的方式。饼干是不同的。最终,它们只是通过请求/响应标头在客户端和服务器之间来回传递的数据。 JWT 独立于它的传输方式,而 cookie 独立于传输的数据。事实上,现在 auth cookie 等的数据通常是 JWT。

    所以,不,一般来说,JWT 没有应用跨域策略,因为它只是对某些数据进行编码的一种方式。然而,JWT 几乎总是至少是签名的,而且通常也是加密的。为了安全地读取签名的 JWT,您将需要共享签名密钥,当然要读取加密的 JWT,您将需要共享的加密密钥或来自公钥/私钥的私钥采用非对称加密时配对。

    根据您的具体操作,无论长短,“共享”JWT 可能是不可能或不可行的,即使跨域在技术上不是问题。

    通常使用像 AD 这样的集中式身份验证,每个应用程序独立地通过身份服务器进行身份验证,而不是将收到的令牌传递给另一个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-02
      • 2017-11-01
      • 2022-10-25
      • 2019-01-20
      • 2021-04-13
      • 2017-02-09
      • 2015-05-06
      相关资源
      最近更新 更多