Понимание Identityserver4 с Identity (куки / токены, архитектура сервера) - PullRequest
2 голосов
/ 19 октября 2019

У меня есть некоторые проблемы, когда я вижу общую картину, когда дело доходит до понимания того, как все это сочетается. Это большая тема для начинающего.

В чем смысл файлов cookie Identity и всех его шаблонов / страниц по умолчанию в сочетании с IdentityServer, когда он выдает токены?

И почему эти страницы включены во все примеры даже при использовании клиентов SPA? Разве не в этом смысл авторизации / аутентификации / регистрации через API?

Я вижу, что многие предполагают, что у IdentityServer должен быть свой собственный проект, а затем база данных пользователей в локальной сети отдельно, как это возможно? Я не нашел ни одного примера этого.

Почему существует необходимость отделять базу данных пользователя от API ресурса, а разве IdentityServer4 и Identity не являются его собственным API?

Я ценюваше время и помощь.

Ответы [ 2 ]

4 голосов
/ 19 октября 2019

Identity Server всегда должен быть отдельным проектом, и он должен быть единственным, кто имеет прямой доступ к пользовательской базе данных. Здесь - хорошее видео на Identity Server, а более новое здесь , а здесь - отличное репозиторий github с проектом IS, в значительной степени завершенным, который я использую. Надеюсь, это поможет.

1 голос
/ 27 октября 2019

Представьте себе организацию, в которой есть несколько веб-сайтов, каждый из которых предоставляет услугу пользователям. Использование OAuth / OpenID Connect поможет этой организации несколькими способами:

  • Она получает единый вход, а это означает, что пользователям необходимо создать только одну учетную запись, и они смогут пользоваться всеми услугами этой организации. .
  • Он может предоставлять доступ к своим ресурсам для других веб-сайтов и служб (от компьютера к компьютеру) с подпиской и ограничением (учетные данные клиента). Например, эта организация может иметь API погоды, который может использоваться другими приложениями.
  • Она может предоставлять доступ к своим ресурсам от имени пользователя. Например, у него может быть популярный веб-сайт для создания фотоальбомов, а у кого-то есть популярный редактор фотографий и веб-сайт эффектов. Было бы замечательно, если бы этот веб-сайт редактора фотографий мог импортировать фотографии пользователей из их фотоальбома на этом веб-сайте (с их согласия, конечно)

Архитектура и процесс (я собираюсь пропустить технические вещи иOAuth-потоки):

У нас есть специальный веб-сайт IdentityServer4, который отвечает за создание и регистрацию учетных записей пользователей. Никто другой не должен иметь доступ к базе данных пользователей.

Теперь один из сайтов этой организации (назовем его Фотоальбом) хочет войти в систему пользователя, вот что происходит:

  • Сначалаон перенаправляет пользователя на веб-сайт IS4
  • Пользователь входит в систему, веб-сайт IS4 устанавливает файл cookie в браузере для своего собственного веб-сайта (поэтому при следующем входе пользователя он / она входит в систему) и перенаправляет пользователявернуться в Фотоальбом с токеном или кодом
  • Фотоальбом делает кучу вещей за сценой (например, он может обмениваться кодом с токеном), и в конце он имеет токен с информацией пользователя. На этом этапе Фотоальбом также сохраняет эту информацию в файле cookie, чтобы в следующий раз, когда пользователь пришел сюда, он / она вошел в систему

Теперь другой веб-сайт этой организации (назовем его «Онлайн-диск») хочетвойдите в систему:

  • Сначала он перенаправляет пользователя на веб-сайт IS4
  • Веб-сайт IS4 распознает пользователя (через cookie, который он установил ранее) и перенаправляет пользователя обратно наOnline Drive с токеном или кодом
  • Online Drive также делает кучу вещей за кулисами, а также сохраняет информацию о пользователе в файле cookie, чтобы в следующий раз, когда пользователь пришел сюда, он / она вошел в систему

Теперь сторонний веб-сайт (назовем его Photo Editor) хочет получить доступ к фотографиям пользователя в Фотоальбоме:

  • Сначала он перенаправляет пользователя на веб-сайт IS4 (и указывает, чтоон хочет получить доступ)
  • Веб-сайт IS4 распознает пользователя (через cookie, который он установил ранее) и показывает пользователю страницу согласия и спрашивает пользователя, еслион / она в порядке, чтобы разрешить Photo Editor доступ к их указанному ресурсу (например, к его альбомам)
  • Если пользователь принимает, IS4 перенаправляет пользователя обратно в Photo Editor с токеном или кодом, и в этот момент Photo Editor может вызватьAPI фотоальбома и доступ к ресурсам пользователя

Надеюсь, я помог, рекомендую прочитать Защита книги периметра и документов IdentityServer.

...