Как защитить пользовательский контроллер WebAPI в хост-приложении IdentityServer3? - PullRequest
0 голосов
/ 19 сентября 2019

У меня, на мой взгляд, довольно прямая задача.У нас есть работающий веб-сайт и экземпляр IdentityServer3.Сайт защищен с помощью аутентификации cookie.Форма входа является частью веб-сайта, поэтому мы используем поток ResourceOwner для аутентификации пользователей по конечной точке токена.В случае успеха мы получаем утверждения пользователя из конечной точки userinfo и регистрируем пользователя. Все это можно сделать с помощью исходного исходного кода IdSvr3.

Теперь мы хотим разрешить пользователю обновлять свой профиль через другую страницу.веб-сайта.Для этого требуется, чтобы веб-сайт мог обновлять заявки пользователей через пользовательский API, поскольку такой API не предлагается в исходном коде IdSvr3.

Я добавил страницу профиля на веб-сайт, которая доступна только дляаутентифицированный пользователь (защищенный с помощью атрибута Authorize).Теперь мне нужно реализовать API.

Я добавил WebApi2 в проект IdentityServer3, и ApiController работает при использовании с веб-сайта.Для этого он использует другую конфигурацию клиента, полагаясь на поток ClientCredentials.Как только я защищаю ApiController с определенной ролью: «identityApi», он возвращает «Несанкционированный» (как и ожидалось).

Теперь возникает сложная часть: у меня сложилось впечатление, что добавление области действия «identityApi» квозможности клиента ClientCredentials позволят веб-сайту снова получить доступ к API, но это не так!ApiController в проекте IdentityServer продолжает возвращаться Unauthorized.

Мои вопросы:

  • Я на правильном пути?
  • Мне не хватает какой-либо сантехники в проекте IdentityServer3 или в клиенте веб-сайта?
  • У кого-нибудь есть где-нибудь сквозная выборка, с которой я могу исследовать / сравнивать?

Здесь я нашел документацию о том, как добавить API custum в IdentityServer4 здесь , но, к сожалению, я все еще на IdentityServer3.

Я также обнаружил эту проблему IdentityServer3 , где кто-то предлагает настроить второе приложение в OWIN для пользовательского контроллера API.Я пробовал это, но безрезультатно.

Если какой-либо код требуется для иллюстрации выше, я более чем готов поделиться.Пожалуйста, дайте мне знать!

...