IdentityServer4 无法注销

问题描述 投票:0回答:1

我已经从 IdentityServer4.Quickstart.UI 库创建了我的身份服务器。目前使用IdentityServer4(4.1.2)版本。我还有一个 React SPA 应用程序,它使用 axa-fr/react-oidc 包来处理身份服务器和 React 应用程序的事务。

几天前,我注意到当我单击 React 应用程序中的注销按钮时,它会调用 axa-fr/react-oidc 库的注销功能。它确实向我显示了一个声称我已成功注销的页面。但是当我再次调用react app的主页时,我是在没有身份验证的情况下登录的......

我的身份服务器配置如下;

     new()
 {
     ClientId = "reactapp-local",
     ClientName = "App UI",
     AllowedGrantTypes = {GrantType.AuthorizationCode, GrantType.ResourceOwnerPassword},
     AllowedScopes = { "openid", "profile","app"},
     ClientUri="http://localhost:3000",
     RedirectUris={ "http://localhost:3000/authentication/callback" },
     PostLogoutRedirectUris = { "http://localhost:3000/authentication/signout-callback-oidc" }, // Add this
     AllowedCorsOrigins={ "http://localhost:3000" },
     RequirePkce=true,
     RequireClientSecret=false,
     AccessTokenLifetime=2678400,
     UserSsoLifetime=2678400,
     ClientSecrets ={new Secret("memoli".Sha256())},
     AllowOfflineAccess=true,
     Description="app",
     LogoUri="https://somedomain.com:5022/img/products/logo-app.png",
     Properties=PropertiesService.GetAppProperties()
 },

axa-fr/react-oidc 客户端配置;

const dev = {
  client_id: 'reactapp-local',
  redirect_uri: 'http://localhost:3000/authentication/callback',
  silent_redirect_uri: 'http://localhost:3000/authentication/silent-callback',
  scope: 'openid profile app',
  post_logout_redirect_uri: 'http://localhost:3000/authentication/signout-callback-oidc', // Ensure this matches IdentityServer
  authority: 'http://localhost:34801',
  refresh_time_before_tokens_expiration_in_second: 40,
  service_worker_relative_url: '/OidcServiceWorker.js',
  service_worker_only: false,
  token_renew_mode: TokenRenewMode.access_token_invalid,
  demonstrating_proof_of_possession: false,
  client_secret: 'safafasasf+afasfasfafasf/pe/Unols=',
};

从 Visual Studio 的输出选项卡中,我看到日志如下;

info: IdentityServer4.Hosting.IdentityServerMiddleware[0]
      Invoking IdentityServer endpoint: IdentityServer4.Endpoints.EndSessionCallbackEndpoint for /connect/endsession/callback
info: IdentityServer4.Endpoints.EndSessionCallbackEndpoint[0]
      Successful signout callback.

我做了广泛的研究,但无法找到导致此问题的原因:/ 任何帮助将不胜感激。

.net-core identityserver4 react-oidc
1个回答
0
投票

我正在为将来面临同样问题的人回答我自己的问题。它与 IdentityServer4 配置或 axa-fr/react-oidc 库无关。

以错误的顺序调用 app.UseIdentityServer() 导致的错误。我不知道为什么会发生这种情况,但如果你在 app.UseIdentityServer() 之前调用任何东西,它会导致这种奇怪的问题。

var app = builder.Build();
app.UseIdentityServer(); ->Call this first. 
app.UseStaticFiles();
© www.soinside.com 2019 - 2024. All rights reserved.