Полное руководство по интеграции OIDC-сервера в ваш проект
Узнайте лучшие практики интеграции OIDC-сервера (OpenID Connect) в ваш проект и поймите, как компоненты взаимодействуют друг с другом на сцене.
Вы можете столкнуться с ситуацией, когда вам потребуется централизованная система аутентификации и авторизации, также известная как управление доступом к идентификации (IAM) или поставщик удостоверений (IdP). Иногда люди добавляют слово, обозначающее бизнес, например IAM для клиентов или IAM для персонала.
Давайте на мгновение оставим эти модные названия. Необходимость в IAM может возникнуть из-за роста вашего приложения, или вы планируете с самого начала переложить эту сложную задачу на вендора. Тем не менее, вы достигли точки, когда систему идентификации придется интегрировать в ваш проект.
Учитывая популярность OAuth 2.0, OpenID Connect (OIDC) является естественным выбором для многих разработчиков. Поскольку OIDC представляет собой слой аутентификации, построенный поверх OAuth 2.0, вы можете почувствовать некую схожесть, когда начнёте работать с OIDC. Давайте начнем!
Что такое OIDC-сервер, и почему я должен интегрировать OIDC-сервер?
OIDC-сервер, или поставщик идентификации, — это централизованная система, которая управляет аутентификацией и авторизацией пользователей. Как мы обсуждали в статье Почему вам нужна централизованная система идентификации для многоприложенческого бизнеса, у централизованной системы идентификации есть множество преимуществ.
Предположим, ваш проект начинается с простого веб-приложения, и в нем встроена аутентификация:
По мере роста вашего проекта вам нужно ввести мобильную версию:
Пользователям будет неприятно, если им придется создавать учетную запись для каждого приложения. Поскольку вы начали с веб-приложения, вы дали возможность мобильному приложению взаимодействовать с веб-приложением для аутентификации:
Теперь вводится новая служба API. Поскольку это услуга для платных пользователей, вы должны убедиться, что пользователь аутентифицирован и авторизован для доступа к этой услуге. Чтобы добиться этого, вы можете предоставлять доступ к услуге через веб-приложение:
Или используйте метод токенов для аутентификации пользователя и проверьте токен, связываясь с веб-приложением в сервисе. Таким образом, мобильное приложение может использовать сервис напрямую:
Все усложняется. Поэтому вы решаете вынести логику аутентификации и авторизации в отдельный сервис:
Процесс рефакторинга может быть болезненным. Вы можете заметить, что его сложность будет увеличиваться экспоненциально по мере добавления приложений и сервисов в проект. Еще хуже то, что вам, возможно, придется поддерживать несколько методов аутентификации, таких как вход без пароля, социальный вход, SAML и т.д.
Вот почему стоит внедрить поставщика идентификации в самом начале, если у вас есть планы масштабировать проект.
Лучшие практики интеграции OIDC-сервера
Найти поставщика OIDC
На рынке предст авлено множество поставщиков OIDC. Вы можете выбрать одного на основе ваших требований и предпочтений. Пока поставщик соответствует стандартам OIDC, он будет выполнять ту же роль в вашем проекте.
Что означают "субъект", "клиент" и "аудитория" в OIDC?
Чтобы упростить концепцию, можно считать, что субъект — это сущность, запрашивающая доступ к аудитории через клиента.
Рассмотрим некоторые типичные сценарии: