为什么使用重定向(查询参数)或自动表单发布(使用js动态创建表单并自动提交)进行数据交换即使在https上也可以信任?

问题描述 投票:0回答:1

这是一个基本问题,但原因没有在任何地方明确说明。

假设我们有 2 个 Web 应用程序

https://one.abc.com
htts://two.xyz.com
。当我点击
one.abc.com
上的按钮时,它会通过 https 转到
one.abc.com
并重定向到
two.xyz.com
。对
two.xyz.com
进行一些处理后,它通过 https 重定向到
one.abc.com
。在这两种重定向中,URL、查询参数、标头等所有内容都被加密。

在这种情况下,为什么

one.abc.com
two.xyz.com
之间通过查询参数或form_post交换的任何数据都不能被信任,即使它们在两者上都加密了。

此技术用于 SAML、OIDC 中的 SSO。

ssl redirect openid-connect saml
1个回答
0
投票

我的回答: 在所描述的从

one.abc.com
two.xyz.com
再回到
one.abc.com
的重定向流程中,TLS(传输层安全)加密是在您的浏览器和涉及的每个服务器之间单独建立的。让我们分解一下流程:

one.abc.com
two.xyz.com

  • 当您单击
    one.abc.com
    上的登录按钮时,您的浏览器会通过 HTTPS(HTTP over TLS)向
    one.abc.com
    发起请求。
  • one.abc.com
    使用重定向响应(HTTP 302 Found)进行响应,指示您的浏览器转到
    two.xyz.com
  • 您的浏览器随后向
    two.xyz.com
    发起新的 HTTPS 请求,在您的浏览器和
    two.xyz.com
    之间建立单独的 TLS 连接。

two.xyz.com
回到
one.abc.com

  • two.xyz.com
    上成功进行身份验证后,它会重定向回
    one.abc.com
    进行响应。
  • 此重定向响应(HTTP 302 Found)包含您的浏览器返回到
    one.abc.com
    的必要信息。
  • 您的浏览器随后向
    one.abc.com
    发起新的 HTTPS 请求,在您的浏览器和
    one.abc.com
    之间建立单独的 TLS 连接。

每个连接(从您的浏览器到

two.xyz.com
以及从您的浏览器返回到
one.abc.com
)均使用 TLS 独立加密。 TLS 加密可确保浏览器和每个服务器之间通信的机密性和完整性,从而保护重定向流期间交换的数据。

但是,在重定向流程期间,

two.xyz.com
one.abc.com
之间没有建立直接的 TLS 连接。相反,HTTPS 连接会在每个服务器端点处单独终止和重新建立。

因此,在 SAML 中,IDP 签署 SAML 断言,而在 OIDC 中,OIDC 提供商签署 id_token。

© www.soinside.com 2019 - 2024. All rights reserved.