Identity Server 3和Azure AD单一注销

时间:2019-01-04 14:20:48

标签: iis identityserver3 content-security-policy ws-federation x-frame-options

我将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标头,则可以正常工作,但遵循文档则不能。

感谢您的帮助。

0 个答案:

没有答案