授权回调/重定向url路由到客户端路由,导致递归调用

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

我正在使用带有IdentityServer 4和Angular 5.0的asp.net core 2.0。

我的项目基于以下示例:

https://github.com/scottbrady91/Angular4-OidcClientJs-Example

当用户成功登录时,他将被重定向到确定的授权回调。

在Scott Brady的样本中,客户端路由被称为:

  {
    path: 'auth-callback',
    component: AuthCallbackComponent,
  },

到目前为止一切正常。

但是......我真正的应用程序只有受保护的路由。

所以我将上面的示例更改为:

   {
        path: 'auth-callback',
        component: AuthCallbackComponent,
        **canActivate: [AuthGuardService]**
      },

现在我从服务器端授权端点到auth-callback并返回到服务器端授权端点的递归重定向。

我甚至无法在浏览器中调试它,因为所有内容都快速地与源文件一起跳转...

  1. 什么是auth-callback ROUTE应该是什么样子?它必须不受保护吗?正如我所说,我只保护路线。
  2. 在Scott Brady的样本中,我需要解决的是递归停止了吗?

我发现auth.guard.ts.isLoggedIn()函数被触发后,auth.aervice.ts中的用户字段为空,但我不知道为什么该调用为用户返回null。那个空用户问题只是以前没有使用auth-callback。

openid identityserver4 asp.net-core-2.0 angular5 oidc
1个回答
0
投票

我从未使用过javascript客户端,因此我无法帮助您进行配置。但我想我可以帮你解决这个问题。

正如您所猜测的那样,问题是所有路线都受到保护。但是某些路径无法保护,因为用户尚未登录。像登录页面一样,auth-callback路径和访问被拒绝路径。

由于无法访问auth-callback路径,用户尚未进行身份验证,从未进行过身份验证,用户将被重定向到默认的AccessDenied页面。我相信这是/Account/AccessDenied。哪个也受到保护,导致再次挑战身份等

如果您允许匿名访问/Account/AccessDenied路径和auth-callback路径,我认为您的问题已得到解决。

第一个是实际登录用户,第二个是停止递归。

/Account/AccessDenied代码中,您可以确定如何响应。因为如果声明丢失,经过身份验证的用户也可以在此处结束,例如用户已通过身份验证但不是管理员。或者用户已通过身份验证,但没有对此网站的声明。

© www.soinside.com 2019 - 2024. All rights reserved.