9

Я изучаю, как работает IdentityServer 3, и у меня все еще есть проблема, чтобы полностью понять.Внедрить аутентификацию сервера идентификации в реальном мире

В целом концепция понятна мне, но все же я не уверен, как реализовать это на реальном проекте.

Это простой пример, который я пытаюсь реализовать в моем случае: link

У меня есть апи проект веба и я хочу вызвать мои методы API от любого клиента (MVC МОФ, телефон ...) Я нужна реализация, подходящая для всех клиентов.

Если я хорошо понимаю (и, вероятно, я совершенно не понимаю), я должен иметь 3-х проектов:

  • Client
  • Api
  • проекта, что хозяин IdentityServer

И все проекты должны иметь необходимые вещи, например, на картинке: enter image description here Шаги на картинке:

  1. Получить маркер
  2. возврата маркера
  3. вызов апи
  4. Проверьте, Токен ОК
  5. Если Токен прекрасно, чем возвращает данные еще показывают ошибку

Мои вопросы:

  • Мое мышление о том, как эта работа в порядке?
  • Где я совершаю ошибки?
  • Этот пример достаточно хорош для моего случая? Я что-то недостающее важно?
  • Должен ли я создать проект, на котором размещен IdentityServer, или это нужен только, например, код?
  • Хост-проект IdentityServer должен быть консольным приложением, которое связывается с api и клиентом (например, в примере), или в реальном мире все делается по-другому?
  • Должен ли проектировать этот сервер идентификации хоста в отношении клиентов и пользователей?
  • Должен ли какой-либо другой проект, кроме сервера хост-сервера, знать клиентов и пользователей?
  • Что такое различие между неявным и гибридным потоком, что мне нужно в моем случае и почему?
  • Как создать свой собственный вход в систему? Я хочу иметь html-страницу для входа в систему, если я использую веб-клиент, но иметь вид входа в wpf, если я использую wpf, а также другое представление для мобильного клиента.

EDIT: Я думаю, что мне нужно Resource Owner flow. Я полагаю, что ресурс i, где пользователь вводит имя пользователя и пароль.

ответ

2

Ваш основной поток правилен, при этом Identity Server действует как ваш сервер авторизации, а ваш клиентский и веб-API - отдельный.

Вы должны разместить Identity Server в своем собственном проекте, чтобы гарантировать, что он отделен от любой другой логики, которая может вызвать проблемы безопасности. Как вы принимаете это зависит от вас и вашего прецедента. Как правило, вы увидите, что он размещен в проекте ASP.NET на сервере IIS.

Identity Server должен знать клиентов и пользователей для их аутентификации. Единственные другие проекты, которые должны знать о вашем хранилище (пользователей), - это любые приложения, которые относятся к таким вещам, как admin, регистрация пользователей и т. Д. Клиентский магазин будет использоваться только когда-либо на сервере Identity Server.

Виды могут быть изменены с использованием шаблонов Identity Server или путем представления вашего собственного ViewService. См. Документацию для получения дополнительной информации: https://identityserver.github.io/Documentation/docsv2/advanced/customizingViews.html

Что касается потоков, поток Владелец ресурса - только OAuth, поэтому аутентификации (страница входа в систему) не будет, только авторизация (сервер к серверу).

+1

Спасибо за ответ. Что касается страницы входа, мне все еще не ясно. Я планирую иметь много клиентов для того же API. У меня будет веб-клиент MVC, клиент Windows WPF и, возможно, другие клиенты. Так что мне нужно иметь страницу входа на каждого клиента. Не имеет смысла входить в браузер через браузер, если клиент WPF или телефон. Вот почему я хочу использовать поток ресурсов владельца. Отправлять пользователю и паролю с клиента (независимо от того, что клиент). Имеет ли это смысл, или я должен использовать другой подход? – Raskolnikov

+0

Итак, я не знаю, что вы хотите сказать, «не будет аутентификации»? Это будет проверка подлинности, потому что с потоком Владельца ресурсов вы должны отправить имя пользователя и пароль. Только это имя пользователя и пароль будут предоставляться от клиента, а не от сервера идентификации. Я прав? – Raskolnikov

+0

Вы хотите аутентифицировать каждого из своих клиентов, используя поток OpenID Connect, который позволит вам входить в ваши пользователи, а затем захватить токен доступа в ваш веб-API (например, гибридный поток). Затем этот токен можно использовать для авторизации доступа к веб-API с использованием потока OAuth, такого как учетные данные клиента или владельца ресурса. –

 Смежные вопросы

  • Нет связанных вопросов^_^