首页 > 解决方案 > Identity Server 4 外部 IDP 注销整理

问题描述

我的 Identity Server 4 运行正常,为 MVC 应用程序执行本地身份验证工作正常。我还需要添加对外部 IDP 的支持,因此我按照文档中的说明进行操作,并以快速入门代码为基础。因此,它当前配置为使用https://demo.identityserver.io上的演示 IDP作为外部 IDP,并且可以正常登录 - 用户被重定向到外部 IDP 以输入他们的详细信息,我的身份验证服务器返回一个 id_token我与我们自己的用户存储库中的用户匹配的用户 ID(主题)。然后,我们的身份验证服务器按照正常发行自己的令牌等继续登录 - 到目前为止一切都很好。

我遇到的问题是从外部 IDP 注销 - 如果用户直接从 demo.identityservier.io IDP 注销,我需要确保此过滤器返回以清除存储的身份验证 cookie,从而要求用户再次登录如果他们尝试访问应用程序中受保护的页面。

如果用户从我们自己的 ID Server 注销(即 ID Server 显示的注销页面具有确保 MVC 应用程序得到整理的内置 iframe),这将正常工作。对于外部 IDP,我会期待类似的事情,但看不到任何东西。

这是在我们的本地 IDP 启动中注册外部 IDP 的启动配置。

        .AddOpenIdConnect("Ext_oidc", "Ext OpenID Connect", options =>
        {
            options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
            options.SignOutScheme = IdentityServerConstants.SignoutScheme;
            options.Authority = "https://demo.identityserver.io/";
            options.ClientId = "implicit";
            options.ResponseType = "id_token";
            options.TokenValidationParameters = new TokenValidationParameters
            {
                NameClaimType = "name",
                RoleClaimType = "role"
            };
        });

任何建议都会受到欢迎

标签: single-sign-onopenididentityserver4openid-connect

解决方案


您是否向外部 IDP 提供了结束会话端点 URL?如果它已定义,我希望它作为外部 IDP 上显式注销过程的一部分被调用。


推荐阅读