对于使用 OpenIdConnect 身份验证的 WebForms 客户端,LogoutUri 应该是什么?

What should the LogoutUri be for a WebForms client using OpenIdConnect authentication?

我有一个 IdentityServer4 提供程序,我正在尝试使用 OIDC 身份验证将 ASP.NET WebForms 客户端连接到它。一切都很好,除了我不知道 LogoutUri 应该是什么。我试过 /signout-oidc/signout-callback-oidc 但似乎都不存在,它们都 return 404 错误(有趣的是 /signin-oidc 确实存在)。我应该添加一个 SignoutCleanup.aspx 逻辑并将该页面用作 LogoutUri 吗?

这是客户端和 OIDC 配置:

{
                ClientId = "client.webforms",
                ClientName = "WebForms Client",
                AllowedGrantTypes = GrantTypes.Hybrid,
                AllowAccessTokensViaBrowser = false,

                RedirectUris = { "http://localhost:9869/signin-oidc" },
                PostLogoutRedirectUris = { "http://localhost:9869/" },
                LogoutUri = "http://localhost:9869/signout-callback-oidc",

                AllowedScopes =
                    {
                        IdentityServerConstants.StandardScopes.OpenId,
                        "test_scope"
                    },
                AllowOfflineAccess = false,
                RequireConsent = false,

                AlwaysIncludeUserClaimsInIdToken = true
            });

...

 app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
                    {
                        AuthenticationType = "oidc",
                        SignInAsAuthenticationType = "Cookies",
                        Authority = "http://localhost:3027/",
                        ClientId = "client.webforms",
                        RedirectUri = "http://localhost:9869/signin-oidc",
                        PostLogoutRedirectUri = "http://localhost:9869/",
                        ResponseType = "id_token code",
                        Scope = "openid test_scope",
                        UseTokenLifetime = false,
                        ... (events)

Katana/WebForms 没有注销端点的内置实现。

在控制器上创建一个清理操作(例如删除 authN cookie)- 并将该地址用作注销 URI。

IdentityServer 会将 sid 声明的值传递给注销端点 - 您应该将其与登录时获得的 sid 声明进行比较,以避免注销垃圾邮件。