我正在探索需要认证和授权的网站前使用内容交付网络(CDN)。对于只允许某些登录用户访问的安全内容,我希望CDN仍缓存并为授权用户返回内容,但对于未经授权/未经身份验证的用户不返回
这个想法是,当CDN收到请求时,它将向原点发出HTTP HEAD请求,以测试发出请求的用户是否有权访问该文件。因此,原始站点将需要以HTTP状态做出响应,CDN将使用该HTTP状态来决定是否可以安全地返回缓存的资产,或者是否需要拒绝用户。
我面临的问题是原始资产是经过SAML身份验证的网站的一部分。因此,如果匿名用户请求文件,则CDN会发出头请求并获得200响应。 CDN将此解释为意味着用户已被授权,并向他们提供了缓存的文件。但实际上,200响应只是SAML身份验证的开始。 SAML知道用户尚未通过身份验证,因此它会发送200响应来发起身份验证,这在SAML中是典型的。因此,对HEAD请求的200响应与用户将收到的对GET请求的响应相同(这是HEAD请求应该执行的操作),但是它并没有给CDN我要发送的真实消息
是否有解决方案,或者SAML是否与我正在寻找的CDN流不兼容?
从本质上讲,如果用户通过身份验证/授权,我希望HEAD请求获得 200 响应;如果用户未通过身份验证/授权,则希望某些 other 状态。但是,使用SAML时,未经身份验证的HEAD请求 也会收到200响应。我希望避免自定义原始服务器如何处理HEAD请求,因为SAML流发生得很早,而且不是我真正想要自定义的东西。