【发布时间】:2019-10-27 02:27:46
【问题描述】:
身份服务器/ASP 身份非常新,所以我希望我能很好地解释这种情况。
我遇到了一个问题,即我的网络应用程序尝试导航到 Account/AccessDenied 控制器和操作(如果发现它们未经授权)...但是这个确切的控制器和操作不存在。
我尝试了以下操作,但我不确定它是否真的在做我认为的事情
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 属性,我使用策略将它们锁定。该部分工作正常,如果用户获得授权,他们将成功登录/重定向到应用程序。
如果未经授权,现在会发生什么:
- 转到 Web 应用程序(IDSrv 客户端)
- 重定向到身份服务器
- 登录身份服务器
- 如果未经授权,将显示 404 错误,因为它找不到
https://myapp/account/accessdenied
Account/AccessDenied 在我的应用程序中的任何地方都不存在,在我的 Identity Server 应用程序中也不存在。如果用户无权访问某些内容,Identity Server 将使用 /Identity/Account/AccessDenied。
所有这些都是默认设置 - 我没有对此进行任何更改。
所以我想弄清楚的是如何告诉我的应用程序转到https://MyIDSrvApp/Identity/Account/AccessDenied(因为它已经存在),或者我是否必须在每个应用程序中手动创建一个具有 AccessDenied Action 的帐户控制器使用 IDSrv 保护。
我只是有点不清楚这种行为,如何最好地处理它,以及我的应用程序甚至从哪里得到这个/account/accessdenied,因为我没有在任何地方手动设置它。
【问题讨论】:
-
您是否尝试在
AddCookie()内的 cookie 的身份验证方案中配置这些路径?另外,我至少可以告诉您,拒绝访问 url 的模板是Request.Scheme + "://" + Request.Host + OriginalPathBase + targetPath;,其中targetPath是您在选项中的 url。这是来自默认的 cookie 身份验证处理程序 (github.com/aspnet/AspNetCore/blob/master/src/Security/…)。
标签: identityserver4 asp.net-core-2.2