Очень плохо знаком с Identity Server / ASP Identity, поэтому я надеюсь, что объясню ситуацию достаточно хорошо.
У меня возникла проблема, когда мои веб-приложения пытаются перейти к контроллеру 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
, и я блокирую их с помощью политики. Эта часть работает нормально, и если пользователь авторизован, он успешно входит в приложение / перенаправляет его в приложение.
Что происходит сейчас, если не авторизовано:
- перейти в веб-приложение (клиент IDSrv)
- перенаправлен на Identity Server
- войти в Identity Server
- Если не авторизовано, появляется ошибка 404, потому что она не может найти
https://myapp/account/accessdenied
Account/AccessDenied
не существует нигде в моем приложении и не существует в моем приложении Identity Server. Identity Server использует /Identity/Account/AccessDenied
, если пользователь не имеет доступа к чему-либо.
Все это по умолчанию - я ничего не изменил по этому поводу.
Итак, я пытаюсь выяснить, как заставить мое приложение перейти на https://MyIDSrvApp/Identity/Account/AccessDenied
(поскольку оно уже существует), или если мне нужно вручную создать контроллер учетной записи с действием AccessDenied в каждом отдельном приложении, которое защищено IDSrv.
Мне просто немного непонятно, как это происходит, как лучше всего с этим справляться, и откуда мои приложения вообще получают это /account/accessdenied
, поскольку я нигде не настраиваю его вручную.