我将Identity Server 3与WS-Federation插件放在顶部,并将Azure AD SAML2提供程序作为Identity Server 3中的外部提供程序使用。
在IDSRV3,客户端,依赖方和AZURE AD之间执行单点登录时没有问题。
问题是当我使用身份验证的RP(Ws联合身份验证客户端)从Azure执行单点注销时。
这是我在 Firefox 中得到的:
X-Frame-Options拒绝加载:https://localhost:5000/core/wsfed/signout不允许跨域成帧。
在 Chrome 中:
拒绝在帧中显示“ https://localhost:5000/core/wsfed/signout”,因为它将“ X-Frame-Options”设置为“ sameorigin”。
正如我在WsFederation插件中看到的那样,“ / wsfed / signout”路由不会禁用XFO
[Route("signout")]
[HttpGet]
public async Task<IHttpActionResult> SignOutCallback()
{
Logger.Info("WS-Federation signout callback");
var urls = await _cookies.GetValuesAndDeleteCookieAsync(WsFederationPluginOptions.CookieName);
return new SignOutResult(urls);
}
但是请在“ / wsfed” GET路由上进行:
[Route("")]
[SecurityHeaders(EnableCsp = false, EnableXfo = false)]
public async Task<IHttpActionResult> Get()
{
...
if (signout != null)
{
Logger.Info("WsFederation signout request");
return await ProcessSignOutAsync(signout);
}
这里的错误在哪里?如果我直接在IIS中删除X-Frame-Options标头,则可以正常工作,但遵循文档则不能。
感谢您的帮助。