使用身份服务器 4/asp.net 核心 2.2 覆盖拒绝访问的路由/路径



对身份服务器/ASP 身份非常陌生,所以我希望我能很好地解释这种情况。

我遇到了一个问题,我的 Web 应用程序尝试导航到帐户/访问拒绝控制器,如果发现它们未经授权,请执行操作...但是这个确切的控制器和动作无处可去。

我已经尝试了以下内容,但我不太确定它是否真的在做我认为

的事情
services.ConfigureApplicationCookie(options =>
{
options.AccessDeniedPath = $"{config.IDServUrl}/Identity/Account/AccessDenied";
options.LoginPath = $"{config.IDServUrl}/Identity/Account/Login";
options.LogoutPath = $"{config.IDServUrl}/Identity/Account/Logout";
});

我的控制器或其中的操作具有Authorize属性,我使用策略锁定它们。该部分工作正常,如果用户获得授权,他们将成功登录/重定向到应用程序。

如果未经授权,现在会发生什么:

  1. 转到 Web 应用(IDSrv 客户端)
  2. 已重定向至"身份服务器"诊断树
  3. 登录身份服务器
  4. 如果未经授权,则会显示 404 错误,因为它找不到https://myapp/account/accessdenied

Account/AccessDenied在我的应用程序中不存在,在我的身份服务器应用程序中也不存在。 如果用户无权访问某些内容,则身份服务器会使用/Identity/Account/AccessDenied

所有这些都是默认的 - 我没有对此进行任何更改。

因此,我试图弄清楚的是如何告诉我的应用程序转到https://MyIDSrvApp/Identity/Account/AccessDenied(因为它已经存在),或者我是否必须在使用 IDSrv 保护的每个应用程序中手动创建一个具有 AccessDeny 操作的帐户控制器。

我只是有点不清楚这种行为,如何最好地处理它,以及我的应用程序甚至首先从哪里获得这种/account/accessdenied,因为我没有在任何地方手动设置它。

拒绝访问的默认路径在 cookie 中设置。因此,它位于标识服务器外部。自定义拒绝访问路径使用选项在 AddCookie()

.AddCookie("Cookies", options => 
{
options.AccessDeniedPath = "/Account/oops";
})

最新更新