【发布时间】:2019-02-17 11:11:50
【问题描述】:
我有一个通过 Azure AD 使用开放 ID 身份验证的 Web 应用程序。它需要与另一个使用相同身份验证形式的 Web 服务进行跨域通信。通常是否允许将相同的令牌传递给其他 Web 服务?
例如,我知道我无法跨来源传递 cookie。 JWT 令牌中是否存在会导致类似问题的保护措施?
【问题讨论】:
标签: asp.net-mvc azure asp.net-core jwt
我有一个通过 Azure AD 使用开放 ID 身份验证的 Web 应用程序。它需要与另一个使用相同身份验证形式的 Web 服务进行跨域通信。通常是否允许将相同的令牌传递给其他 Web 服务?
例如,我知道我无法跨来源传递 cookie。 JWT 令牌中是否存在会导致类似问题的保护措施?
【问题讨论】:
标签: asp.net-mvc azure asp.net-core jwt
否,JWT 中没有内置的来源保护。这只是一个令牌
【讨论】:
JWT 只是一种对声明进行编码的方式。饼干是不同的。最终,它们只是通过请求/响应标头在客户端和服务器之间来回传递的数据。 JWT 独立于它的传输方式,而 cookie 独立于传输的数据。事实上,现在 auth cookie 等的数据通常是 JWT。
所以,不,一般来说,JWT 没有应用跨域策略,因为它只是对某些数据进行编码的一种方式。然而,JWT 几乎总是至少是签名的,而且通常也是加密的。为了安全地读取签名的 JWT,您将需要共享签名密钥,当然要读取加密的 JWT,您将需要共享的加密密钥或来自公钥/私钥的私钥采用非对称加密时配对。
根据您的具体操作,无论长短,“共享”JWT 可能是不可能或不可行的,即使跨域在技术上不是问题。
通常使用像 AD 这样的集中式身份验证,每个应用程序独立地通过身份服务器进行身份验证,而不是将收到的令牌传递给另一个。
【讨论】: