在 Azure OIDC 注销后,内容安全策略 header 值应该重定向回应用程序

What should content security policy header value to redirect back to applcation, after Azure OIDC logout

我有 Web 应用程序,使用 Azure OIDC 进行登录。将网页的响应 header 设置为

content-security-policy: frame-ancestors 'self' https://login.microsoftonline.com;

通过上述header,成功退出 Azure 后,浏览器仅停留在 Azure 页面中,不会重定向回原始应用程序。

Azure 成功注销 Url:https://login.microsoftonline.com/XXXXXXX-XXXX-XXXX/oauth2%2Flogout?post_logout_redirect_uri=https%3A%2F%2Fwww2.test.me.net%2F%23%2Fsignout

但没有

content-security-policy: frame-ancestors 'self' https://login.microsoftonline.com;

在网页的响应 header 中,它工作正常, 那么 header 值应该是多少才能与 header 一起使用

'self' 总是从浏览器地址栏的 Url 发起(通过元组方案://主机名:port_number)。
看起来 'self' 令牌没有覆盖 www2.test.me.net 来源,可能是因为地址中的主页 Url 与 www2.test.me.net.

不匹配

如果您在 iframe 中执行注销重定向,则必须将确切的重定向位置 (https://www2.test.me.net) 添加到 frame-ancestors:

content-security-policy: frame-ancestors 'self' https://login.microsoftonline.com https://www2.test.me.net;

因为重定向后,框架实际上将嵌入到带有 https://www2.test.me.net Url 的页面中。

• 根据Azure OIDC 应用身份验证配置和用户流结构,header 值配置为根据为Azure OIDC 应用定义的策略将浏览器中的用户流重定向到特定页面。因此,根据您为 Azure OIDC 应用程序设计的策略,成功注销操作的内容安全策略 header 应该是初始应用程序登录页面或主页。

• 请在 Azure OIDC Web 应用程序中找到用于注销步骤的示例内容安全策略 header:-

   ‘ content-security-policy: frame-ancestors script-src ‘self’ 
      https://<webappname>.azurewebsites.net; ’

此外,请注意,如果在注销 header 内容安全策略中未说明任何网站,则 default-src header 应用会将浏览器中的应用程序重定向到主应用程序主页并作为其他 CSP 提取指令的回退,如 default-src 指令中所述,应用程序网页的重定向 URI 已说明。

• 因此,header 值应如上文所述,通过将响应 URI 或此处声明的 link 替换为您的应用程序页面 URI。

有关详细信息,请查找以下 links:-

https://docs.microsoft.com/en-us/azure/frontdoor/front-door-security-headers

https://docs.microsoft.com/en-us/azure/active-directory-b2c/openid-connect