У меня, на мой взгляд, довольно прямая задача.У нас есть работающий веб-сайт и экземпляр 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.Я пробовал это, но безрезультатно.
Если какой-либо код требуется для иллюстрации выше, я более чем готов поделиться.Пожалуйста, дайте мне знать!