IdentityServer4 endsession重定向到帐户/注销,给出404

时间:2018-04-30 12:56:54

标签: angular identityserver4 angular-oauth2-oidc

我在Azure上使用https网址运行IdentityServer4,并且我使用带有the angular-oauth2-oidc library的Angular CLI项目来处理Implicit Flow。我试图设置单点注销,但它无法正常工作。

我正在调用logOut on the OAuthService自动配置(通过发现文档)在auth服务器上使用注销网址,即https://my-id4-server.example.com/connect/endsession,查询字符串参数包含{{1和token_hint

出于某种原因,实际行为是IdentityServer4将浏览器重定向( 302 )到网址postLogoutUri,浏览器获取 404 即可。此外,如果我在单独的选项卡中打开IdentityServer页面,我可以看到我的会话仍然存在。

预期行为是我的会话结束,我被重定向回我的SPA。

在我配置的ID4Server端:

  • https://my-id4-server.example.com/account/logout?logoutid=...RedirectUrisPostLogoutRedirectUris(我的SPA目前在哪里运行)等等;
  • http://localhost:4200设置为AllowedGrantTypes
  • Implicit也允许我的localhost SPA

此外,我可以在AllowedCorsOrigins配置端点中看到endsession端点已正确配置。

在SPA方面,我已配置.well-knownissuerredirectUriclientId。使用重定向登录可以正常工作。

结论:如果scope端点重定向到endsession而后者又提供了404,会出现什么问题?

2 个答案:

答案 0 :(得分:0)

我猜测account/logout是此流的默认重定向,您需要将其更改为IDS4设置中的实际注销网址,或者只是实现该端点。

根据设计,在终结点终结后,IDS4会控制你。您将获得一个logoutid参数,然后您可以将其与IIdentityServerInteractionService结合使用,以获取有关结束请求的信息并采取必要的操作 - 例如提示确认,加载前台通道注销iframe,处理退出外部IDP等。

答案 1 :(得分:0)

问题是IdentityServer方面缺少Logout(...)的Controller操作。如果你没有那些 那些,那么你会得到所说的行为。