Я изучаю, как работает IdentityServer 3, и у меня все еще есть проблема, чтобы полностью понять.Внедрить аутентификацию сервера идентификации в реальном мире
В целом концепция понятна мне, но все же я не уверен, как реализовать это на реальном проекте.
Это простой пример, который я пытаюсь реализовать в моем случае: link
У меня есть апи проект веба и я хочу вызвать мои методы API от любого клиента (MVC МОФ, телефон ...) Я нужна реализация, подходящая для всех клиентов.
Если я хорошо понимаю (и, вероятно, я совершенно не понимаю), я должен иметь 3-х проектов:
- Client
- Api
- проекта, что хозяин IdentityServer
И все проекты должны иметь необходимые вещи, например, на картинке: Шаги на картинке:
- Получить маркер
- возврата маркера
- вызов апи
- Проверьте, Токен ОК
- Если Токен прекрасно, чем возвращает данные еще показывают ошибку
Мои вопросы:
- Мое мышление о том, как эта работа в порядке?
- Где я совершаю ошибки?
- Этот пример достаточно хорош для моего случая? Я что-то недостающее важно?
- Должен ли я создать проект, на котором размещен IdentityServer, или это нужен только, например, код?
- Хост-проект IdentityServer должен быть консольным приложением, которое связывается с api и клиентом (например, в примере), или в реальном мире все делается по-другому?
- Должен ли проектировать этот сервер идентификации хоста в отношении клиентов и пользователей?
- Должен ли какой-либо другой проект, кроме сервера хост-сервера, знать клиентов и пользователей?
- Что такое различие между неявным и гибридным потоком, что мне нужно в моем случае и почему?
- Как создать свой собственный вход в систему? Я хочу иметь html-страницу для входа в систему, если я использую веб-клиент, но иметь вид входа в wpf, если я использую wpf, а также другое представление для мобильного клиента.
EDIT: Я думаю, что мне нужно Resource Owner flow. Я полагаю, что ресурс i, где пользователь вводит имя пользователя и пароль.
Спасибо за ответ. Что касается страницы входа, мне все еще не ясно. Я планирую иметь много клиентов для того же API. У меня будет веб-клиент MVC, клиент Windows WPF и, возможно, другие клиенты. Так что мне нужно иметь страницу входа на каждого клиента. Не имеет смысла входить в браузер через браузер, если клиент WPF или телефон. Вот почему я хочу использовать поток ресурсов владельца. Отправлять пользователю и паролю с клиента (независимо от того, что клиент). Имеет ли это смысл, или я должен использовать другой подход? – Raskolnikov
Итак, я не знаю, что вы хотите сказать, «не будет аутентификации»? Это будет проверка подлинности, потому что с потоком Владельца ресурсов вы должны отправить имя пользователя и пароль. Только это имя пользователя и пароль будут предоставляться от клиента, а не от сервера идентификации. Я прав? – Raskolnikov
Вы хотите аутентифицировать каждого из своих клиентов, используя поток OpenID Connect, который позволит вам входить в ваши пользователи, а затем захватить токен доступа в ваш веб-API (например, гибридный поток). Затем этот токен можно использовать для авторизации доступа к веб-API с использованием потока OAuth, такого как учетные данные клиента или владельца ресурса. –