Бизнес-руководство по единому входу и авторизованному входу в систему
Бизнес-руководство по единому входу и авторизованному входу в систему

Предисловие

  1. Эта статья длинная,Цель состоит в том, чтобы позволить читателям подробно понять процессы и связанные с ними знания о Едином входе и Авторизованном входе.,Если вам не нравятся длинные страницы и не нравятся длинные слова, пожалуйста, не читайте.
  2. Часть кода этой статьи написана ИИ, что может быть неточным, но ее определенно можно использовать в качестве справочного материала, и логика верна.
  3. Часть содержания данной статьи слегка ссылается на Интернет, и указан источник материала.
  4. Единый и авторизованный бизнес очень прост, но начать работу напрямую непросто, если вы хотите подробно освоить и выполнить требования.

Что такое одна точка? Что такое авторизация?

Если что-то не так или не хватает каких-то знаний, пожалуйста, дайте мне знать вовремя, спасибо.

Единый вход

Единый вход(SSO)это своего родапользователь Процесс аутентификации,Позволяет пользователю использовать одни учетные данные «Авторизоваться» для доступа к нескольким программам приложений или «Служить». Это уменьшает необходимость запоминать несколько имен пользователей и паролей.,Улучшен опыт безопасностипользователя. SSOсуществовать особенно важно в корпоративной среде.,Потому что это упрощает процесс доступа к множеству внутренних и внешних Служить.

Используйте свою учетную запись Google для входа в различные сервисы. Например, вы можете войти в Gmail с помощью учетной записи Google, а затем получить доступ к службам Google, таким как Google Drive, Google Photos и YouTube, без повторного входа в систему. Этот метод избавляет пользователей от необходимости запоминать несколько учетных записей и паролей, обеспечивая удобный и эффективный пользовательский опыт.

Авторизованный вход

Авторизованный вход, как и OAuth, представляет собой Av, который позволяет приложению или Служитьсуществовать не делиться пользователем Протокол безопасного доступа к данным пользователясуществоватьдругой Служить при отсутствии торизоваться учетных данных. Он предоставляет ограниченные права доступа третьим лицам и обычно используется для социальных сетей, обмена данными и других сценариев. Этот метод повышает безопасность данных, а также облегчает взаимодействие данных между пользователями Служить.

Обычный Авторизованный вход Пример использует аккаунт в социальной сети Авторизоватьсядругой Служитьилиприложение. Например, многие веб-сайты позволяют использовать учетные записи Facebook и Google Авторизоваться. Когда вы выберете этот метод «Авторизоваться», веб-сайт направит вас на страницу «Авторизоваться» в Facebook или Google. Здесь вам необходимо разрешить веб-сайту получить доступ к некоторой вашей информации в социальных сетях (например, к базовой информации). После авторизации вы сможете использовать свою учетную запись в социальной сети на новом веб-сайте «Авторизоваться» без необходимости создания новой учетной записи. Этот метод упрощает процесс Авторизации и в то же время обеспечивает безопасность вашего пароля, поскольку информация о вашей авторизации в социальных сетях не будет получена сторонними веб-сайтами.

используются вместе

Единый входи Авторизованный вход — это две отдельные группы предприятий, но их можно использовать вместе,например,Google Mail При первой регистрации необходимо использовать аккаунт Google Авторизованный. входGoogle Почта, но после входа в систему YouTube, Google Cloudждать Служить Ничего не требуется Авторизоваться(уже в Авторизоватьсясостояние),Этоиспользуются вместе ситуация. В настоящее время почти все сайты Tencent в Китае используют QQАвторизованный вход,Я попробовал NetEase,Официальный сайт 163 и центр учетных записей NetEase являются единым входом,Остальные — пароль аккаунта Авторизоваться.

Единый вход

Почему оно родилось?

Почему SSO является бизнесом? В основном это делается для удобства пользователей. Когда на предприятии слишком много бизнес-сайтов, пользователям приходится регистрироваться и входить в систему для каждого бизнеса, что, несомненно, создает препятствия для работы пользователей. Если вы используете технологию, которая позволяет войти на один веб-сайт и войти в систему на всех других веб-сайтах, это может значительно оптимизировать работу пользователя без необходимости регистрировать учетную запись и повторно вводить пароль. Но вначале это не было реализовано напрямую с помощью такого решения, как SSO. Позвольте мне объяснить.

Ранний план

Ранние входы в мультисистемные системы часто использовали метод совместного использования файлов cookie под одним и тем же доменным именем верхнего уровня. Например,Все имена поддоменов нескольких систем компании относятся к существующему "zhaixing.net".,например:“blog.zhaixing.net”и“www.zhaixing.net”,Все их основные доменные имена — zhaixing.net.,Таким образом, файлы cookie этих веб-сайтов могут быть переданы другим пользователям.,поделилсяcookieреализовать сайт Авторизоваться Интернет。 Ограничения этого подходасуществовать В:Все системы должны использовать одно и то же доменное имя и техническую платформу.,иcookieжитьсуществоватьриск безопасности。 Поэтому, чтобы реализовать множественную систему Авторизации более безопасно и эффективно, она постепенно превратилась в Единый. вход(SSO)。

Единый входи Ранний планпо сравнению с

Преимущества:

  1. Больше безопасности:SSOСнижает риск утечки пароля。
  2. Лучший пользовательский опыт:пользователь Только Авторизоваться Получите доступ ко всем сразу Служить。
  3. Широкая техническая применимость:Поддержка междоменных имени Несколько технологических платформ。

Недостатки:

  1. Высокая сложность реализации:Необходимость более сложной безопасностии Интегрированный дизайн。
  2. Увеличение затрат на техническое обслуживание:对Всистемаинтеграция междуи К обеспечению безопасности предъявляются более высокие требования.。

Изменения системы единого входа

  • Адаптивный единый вход нуждатьсясуществоватьв начале Авторизоватьсявведите когдапользовательимяипароль,Но если есть риск другого позже,Например,Когда пользователь с нового устройства Авторизоватьсяили пытается получить доступ к особо конфиденциальным данным или функциям,Просто нужен дополнительный фактор аутентификации или повторная авторизация.
  • Федеративный единый вход - Более точное название — соединение Identity Management. (ФИМ), да SSO расширение. SSO На основе цифровых доверительных отношений между приложениями в рамках одного организационного домена, в то время как FIM Эти отношения будут распространяться на доверенных третьих лиц за пределами организации, поставщиков идругой Служить поставщикам услуг. Например, Ф.И.М. Разрешить существующим сотрудникам доступ к третьим лицам Web программа-приложение (например, Slack или WebEx),Никаких дополнительных Авторизоваться,иликто использует толькопользовательимя来Авторизоваться。
  • вход в социальную сетьпозволятьпользователь Используйте свои учетные данные для доступа к популярным сайтам социальных сетей, чтобы получить доступ к третьим лицам.приложение。 вход в социальную сеть упрощает жизнь пользователю. 对Втретья сторонаприложениепоставщик,Это останавливает плохое поведение (Например,Ошибка Авторизоваться, корзина заброшена),И предоставить ценную информацию для улучшения своего приложения.

Принцип единого входа

Принцип Единого входа в основном состоит из следующих частей:

  1. Единый портал входа: Вся система на одной странице Авторизоваться,пользователь Толькосуществоватьздесь Авторизоватьсяодин раз。
  2. Создание токена авторизации: После успешной авторизации удостоверяющий центр создаст «токен» (специальный знак).
  3. Распределение токенов: Когда пользователь пытается войти в другую систему ассоциации, система больше не запрашивает «Авторизоваться», а проверяет наличие этого токена.
  4. Создание сессии: Токен действителен, система позволяет пользователю войти и установить новый сеанс для пользователя, так же, как они бы авторизовали эту систему напрямую.

Проще говоря,SSOнравиться“Войдите один раз, идите куда угодно”способ,Повышенная эффективность доступа и безопасность.

Например, представьте, что вы идете в большой торговый центр с множеством магазинов. Прежде чем войти в магазин, вам необходимо получить входной браслет на входе в торговый центр. После того как вы подтвердите свою личность на входе и получите браслет, вы сможете войти в любой магазин в центре без необходимости повторно предъявлять свое удостоверение личности у каждой двери магазина. Этот браслет похож на токен авторизации в SSO, проверяется один раз и используется в нескольких местах. Каждый магазин доверяет действительности браслета, поэтому вам не нужно подтверждать свою личность каждый раз, когда вы входите в магазин. Или, если вы остановитесь в отеле, отель выдаст вам карту «все в одном». Эту карту можно использовать для оплаты лифтов, завтрака, карточек для подключения к электричеству... и так далее.

Примечание:Фотографии материала взяты изwww.cnblogs.com/ywlaker/p/6…

Приведенная выше блок-схема описывается в тексте следующим образом:

  1. Пользователь пытается получить доступ к защищенным ресурсам в Системе 1:пользователь Посетите сначаласистема1,Но из-за отсутствия Авторизации,system1 перенаправить пользователя в центр сертификации SSO,И отправьте свой адрес в качестве параметра.
  2. Процесс входа в центр сертификации SSO:SSOУдостоверяющий центр найденпользовательеще нет Авторизоваться,Итак, направляйте пользователя на страницу Авторизоваться. пользователь Введите имя пользователя и пароль, чтобы подать заявку на авторизацию.
  3. Создать глобальный сеанситокен авторизации:SSOПроверка удостоверяющего центрапользователь После информации,создатель глобальной сессии,и Создать токен авторизации。
  4. Пользователь перенаправлен обратно в систему 1:带着токен авторизации,Центр сертификации SSO перенаправляет пользователя обратно на исходный адрес запроса.,Прямо сейчассистема1。
  5. Процесс проверки системы 1:система1токен получен,И запросите центр сертификации SSO, чтобы проверить действительность токена.
  6. Создать локальный сеанс:После проверки токена,система1 использует этот токен для установления локального сеанса с пользователем,и Кпользовательпоставлять Доступ к защищенным Разрешения по ресурсам.
  7. Система доступа пользователей 2:пользовательсейчассуществовать Попробуйте получить доступсистема2охраняемых ресурсов。и之前добрый似,система2 перенаправляет пользователя в центр сертификации SSO.
  8. Центр сертификации SSO определяет, что пользователь вошел в систему.:由Впользовательпрошедшийсистема1Авторизоваться,Центр сертификации SSO это признает,и перенаправить пользователя обратно в систему2 с помощью токена.
  9. система2Создать локальный сеанс:система2Использовать изSSOСертификационный центр收到из令牌ипользователь Создать локальный сеанс и предоставить доступ.

Связь между глобальными и локальными сеансами

  • Если локальный сеанс (например, сеанс существованиясистемы1илисистемы2) сохраняет существование,Затем глобальная сессия(существоватьSSOсеанс в центре сертификации)也一定житьсуществовать
  • Существование глобального сеанса не означает, что каждая система имеет локальный сеанс.
  • Когда глобальный сеанс заканчивается(напримерпользовательотSSOВыход из центра сертификации),Все локальные сеансы также должны завершиться

Пример: Представьте, что есть пользователь Том. Том сначала получает доступ к почтовой системе компании (Система 1), но требует входа в систему. Система электронной почты перенаправляет его в центр аутентификации SSO компании, где Том входит в систему. После успешного входа в систему он возвращается в почтовую систему и может получить доступ к своей почте. После этого Том решил проверить внутренний форум компании (Система 2). Когда он нажимает на ссылку форума, система определяет, что он уже вошел в систему через единый вход, и разрешает ему доступ напрямую, без повторного входа в систему. В этом процессе разговор Тома с центром сертификации SSO является глобальным, а его разговор с почтовой системой и форумом — локальным.

SSO и подход нулевого доверия

Zero Trust использует подход к безопасности «никогда не доверяй, всегда проверяй подлинность»: любой пользователь, приложение или устройство — вне сети или уже прошедшие проверку подлинности и внутри — должны сначала получить доступ к следующим необходимым сетевым ресурсам, прежде чем проверять свою личность. Поскольку сети становятся все более распределенными, охватывая большее количество локальной инфраструктуры, а также частных и общедоступных облаков, подход с нулевым доверием имеет решающее значение для предотвращения проникновения угроз в сеть, получения большего доступа и причинения наибольшего ущерба. SSO широко рассматривается как основополагающая технология для реализации подхода нулевого доверия, особенно как часть решения IAM. Фундаментальная задача Zero Trust заключается в создании архитектуры безопасности, которая побеждает злоумышленников, проникающих в сеть, не препятствуя авторизованным конечным пользователям свободно перемещаться внутри сети и выполнять свою работу или бизнес. В сочетании с технологиями и передовыми практиками, такими как многофакторная аутентификация, контроль доступа и разрешений, а также микросегментация сети, единый вход может помочь организациям достичь этого баланса.

Человек: буквальное значение,Не верь никому,неважно кто,Все требуют сертификации,То естьСовмещен с Авторизованным входом и требует, чтобы каждый продукт бизнеса был авторизован один раз.,Доступ ко всем сайтам под одним и тем же основным доменным именем больше не является бесплатным.,Google не принимает эту модель.

Упрощенное объяснение модели нулевого доверия

«Нулевое доверие» — это подход к кибербезопасности, основная философия которого — «никогда слепо не доверяй, всегда проверяй». В рамках этой модели:

  • независимо от статуса:Будь то обычныйпользователь、Старший администратор,Даже генеральный директор компании,Каждому необходимо подтвердить свою личность при доступе к сетевым ресурсам.
  • независимо от местоположения:Независимо от того, что этосуществовать Интранет компании,Или внешняя сеть?,напримерсуществовать Домилиработа в кафе,Все должно быть проверено.
  • Цель:этого метода Цель是防止еще нет Авторизоватьиздоступи Снизьте риск кибератак。
Роль SSO в условиях нулевого доверия

Единый вход (SSO) существует, играет важную роль в модели нулевого доверия, поскольку он является частью управления идентификацией и доступом (IAM):

  • Упрощенный вход:SSOпозволятьпользователь Используйте набор учетных данных(нравитьсяпользовательимяипароль)Авторизоватьсянесколько связанных Служитьилиприложение。Это уменьшаетпользовательнуждаться记住изпароль数量,Это также упрощает процесс авторизации.
  • Повышение безопасности:хотяSSOупрощенный Авторизоватьсяпроцесс,Но в сочетании с такими технологиями, как многофакторная аутентификация (MFA), контроль доступа и микросегментация сети,,Это может улучшить безопасность. Эти технологии гарантируют, что только должным образом прошедшие проверку подлинности и авторизованные пользователи смогут получить доступ к конфиденциальным ресурсам.
Приведите пример

Представьте себе компанию, сотрудникам которой необходим доступ к нескольким системам, таким как электронная почта, хранилище документов и внутренние приложения. В рамках модели нулевого доверия:

  • Аутентификация:无论员工位В公司办公室还是существовать Дом远程工作,Всем им необходимо подтвердить свою личность для доступа к этой системе.
  • Приложения единого входа:Компания реализовалаSSO,Сотрудники могут получить доступ ко всей системе, используя только один набор учетных данных. Это значит, что они Авторизуются один раз.,Нет необходимости повторно вводить учетные данные для доступа к другой системе.
  • В сочетании с такими технологиями, как MFA:для Повышение безопасности,Кроме системы единого входа,Сотрудников также могут попросить использовать многофакторную аутентификацию.,например输入парольназад还需通过手机приложение Подтверждать,Таким образом, даже если пароль будет раскрыт,Неавторизированным людям также сложно использовать Авторизоваться.

Таким образом, модель нулевого доверия в сочетании с единым входом может повысить безопасность, не снижая при этом чрезмерно производительность сотрудников.

Как отличить сессии с разных сайтов?

  1. Идентификатор сеанса : Каждый локальный сеанс имеет уникальный идентификатор сеанса. Этот идентификатор обычно генерируется, когда существующийпользователь проходит через единую систему авторизации, и передается в систему, когда существующийпользователь посещает каждую отдельную систему (сайт). Каждая система идентифицирует и различает различные сеансы пользователей на основе этого идентификатора сеанса.
  2. Использование токенов и учетных данных:существоватьSSOсреда,Центр сертификации выдаст пользователю токен или сертификат. Когда пользователь посещает разные сайты,Эти сайты создают независимые локальные сеансы на основе токена или учетных данных, предоставленных пользователем. Каждый сайт проверяет действительность этих токенов.,Убедитесь, что пользователь является Ауществовать SSO-центром для Аутентификации.
  3. Файлы cookie и локальное хранилище:Большинство веб-сайтов используют браузерCookieдержатьпользовательиз会话состояние。когдапользователь Авторизоватьсякто-тосистеманазад,Система может установить в вашем браузере определенный файл cookie. Этот файл cookie обычно содержит идентификатор сеанса или другую идентификационную информацию.,Это позволяет идентифицировать конкретный сеанс пользователя при повторном посещении системысуществоватьпользователь.
  4. изоляция поддоменов:нравиться果不同из站点是作для主域изребенок域бегатьиз,Они могут различать разные поддомены, устанавливая определенные файлы cookie. Эти файлы cookie могут быть действительны только для определенных поддоменов.,Это помогает различать сеансы пользователей в разных поддоменах.
  5. Управление бэкэнд-сессиями:Служить Сервер обычно имеет механизм управления сеансами.,Используется для хранения информации о каждом сеансе пользователя.,Например, права пользователя, продолжительность сеанса и т. д. Эта информация помогает системе идентифицировать и управлять каждым отдельным сеансом пользователя.
  6. Синхронизация на стороне клиента:для保持会话из一致性,Информация о сеансе на клиенте (например, браузере) и сервере должна быть синхронизирована. Обычно это достигается с помощью информации заголовка Cookie в HTTP-запросе и ответе.

Несколько методов реализации

Есть много способов реализовать Единый вход (SSO),Не ограничивается использованием сеансов,Ниже перечислены различные способы реализации единого входа:

  1. Единый вход на основе сеанса:这是最传统способ,как я описал ранее,Управляйте статусом авторизации пользователя через «Создать глобальный сеанс и локальный сеанс». существуют в этом методе,Статус пользователя «Авторизоваться» обычно поддерживается посредством сеансов на стороне сервера «Служить» и файлов cookie на стороне браузера.
  2. Единый вход на основе токенов:существовать В этом методе,SSOСертификационный центрсуществоватьпользовательуспех Авторизоватьсяназад,Токен будет сгенерирован(обычноJWT - JSON Web Токен). Затем пользователь использует этот токен для доступа к другой системе. Каждая система предоставляет пользователю Служить, проверяя действительность этого токена, а не через традиционный механизм сеанса. Этот подход существует RESTful API и микроархитектура очень популярны.
  3. OAuthиOpenID Connect:OAuthэто структура авторизации,позволятьприложениесуществоватьпользователь Доступ с авторизациейдругойприложениефункция。OpenID Соединение установленоO существующийAuth 2.0уровень аутентификации выше,Это позволяет клиентам проверять личность пользователя и получать основную личную информацию. Эти методы обычно используются для реализации единого входа.,Особенно в сценарии, когда доступ к существованию должен осуществляться через несколько независимых доменных имен или приложений.
  4. SAML(Security Assertion Markup Language) :SAML — это открытый стандарт на основе XML для существующих поставщиков удостоверений личности. Данные авторизации аутентификации обмениваются между службами. SAML широко используется в приложениях корпоративного уровня, особенно в существующих браузерах Web-службы для реализации единого входа.
  5. Kerberos:Kerberosэто своего рода基В票据из协议,Используется для сетевой аутентификации. Хотя он обычно используется для аутентификации во внутренней сети.,Но существуют определенные сложные корпоративные среды,Kerberos также используется для реализации единого входа.
  6. Федеративное управление идентификацией:这это своего рода更для广泛изSSOконцепция,Включает обмен идентификационными данными между несколькими организациями. существуют в этой модели,пользовательсуществоватьорганизация(личностьпоставлять者)из Аутентификацияможет бытьдругойнесколько организаций(поставщик услуги) принято.

Каждая реализация единого входа имеет свои преимущества и применимые сценарии. Какой метод выбрать, зависит от таких факторов, как требования безопасности, архитектура системы, простота использования и затраты на обслуживание. С развитием облачных сервисов и архитектуры микросервисов, единого входа на основе токенов и использования OAuth/OpenID. Подход Connect становится все более популярным. 不够目前我использоватьиз最多из,Это реализация единого входа на основе токена.,То есть метод токена,И вообще при реализации стратегии токена Token,Как правило, у токена также будет собственный сеанс для других целей.,Тогда может быть больше Oauth2.0.

Выйти

Примечание:Фотографии материала взяты изwww.cnblogs.com/ywlaker/p/6…

Приведенная выше блок-схема описывается в тексте следующим образом:

  1. Пользователь инициирует запрос на выход из системы 1.:Представлять себепользователькогда前Авторизоватьсясуществоватьсистема1(напримеродинпочта Служить),и хотите выйти из системы. Нажмите кнопку «Выход» в пользовательсуществоватьсистема1.
  2. Система 1 инициирует запрос на выход из центра сертификации SSO.:система1использоватьпользовательиз会话IDидентифицироватьпользователь,И отправьте эту информацию в центр сертификации SSO в виде запроса на выход.
  3. Центр сертификации SSO обрабатывает запросы на выход из системы.:SSOПроверка удостоверяющего центраотсистема1收到из令牌。После проверки,Это разрушит глобальный сеанс, связанный с пользователем.
  4. Уведомить все зарегистрированные системы о необходимости выполнения операций выхода из системы.:SSOСертификационный центр接着获取всеиспользовать该пользователь令牌Примечание册изсистемаадрес,И отправьте запрос на выход из этой системы.
  5. Система регистрации уничтожает локальную сессию:每个收到Примечание销请求изсистема(нравитьсясистема2,Внутренний форум (Служить) будет получать запросы от Центра сертификации ССО.,И уничтожьте локальную сессию, связанную с этим пользователем.
  6. Пользователь перенаправляется на страницу входа:наконец,Центр сертификации SSO перенаправляет пользователя на страницу «Авторизоваться»,Указывает, что процесс выхода из системы завершен.

Пример: Например, Алиса использует систему электронной почты (Система 1) и внутренний форум (Система 2) на своем рабочем месте. Сначала она входит в почтовую систему, а затем может получить доступ к форуму без повторного входа в систему. Когда Алиса нажимает кнопку выхода из почтовой системы, почтовая система отправляет этот запрос в центр сертификации SSO. После подтверждения центра сертификации SSO он уведомляет (или интерфейсная часть активно извлекает статус), что Алиса вышла из системы форумов. Затем система форума уничтожает сеанс, связанный с Алисой. Во время этого процесса глобальный сеанс Алисы и все связанные с ним локальные сеансы уничтожаются, гарантируя, что она успешно выйдет из всех систем, и, наконец, Алиса перенаправляется обратно на страницу входа.

Архитектура и бизнес

Примечание:Это изображение взято изwww.cnblogs.com/ywlaker/p/6…

sso-client
  1. Перехват запросов без входа в систему:когдапользователь Попробуйте получить доступребеноксистема(нравиться公司内部网站)час,нравиться果еще нет Авторизоваться,sso-client перехватит этот запрос,И перенаправить пользователя на sso-server (центр сертификации SSO).
  2. Получить и сохранить токен:пользовательсуществоватьsso-serverуспех Авторизоватьсяназад,sso-client получает и сохраняет токен авторизации, отправленный с sso-сервера.
  3. Токен подтверждения:sso-clientиsso-serverкоммуникация,Проверьте валидность полученного токена.
  4. Создать локальный сеанс:Как только токен будет проверен,sso-clientдляпользовательсуществоватьребеноксистемасередина Создать локальный сеанс。
  5. Обработка запроса на выход:когдапользовательсуществоватьребеноксистемасередина请求Примечание销час,sso-client отправит запрос на выход из системы на sso-server.
  6. Получить инструкции по выходу:sso-clientВы также можете получать сообщения отsso-serverиз Примечание销请求,И соответственно уничтожить локальную сессию пользователя.
sso-server
  1. Проверьте данные для входа:sso-serverОтветственный за проверкупользователь提交из Авторизоватьсяинформация。
  2. Создать глобальный сеанс:验证успехназад,sso-serverдляпользователь Создать глобальный сеанс。
  3. Создать токен авторизации:sso-serverсоздаватьтокен авторизации,И существование отправляется sso-клиенту, когда это необходимо.
  4. Отправить токен:sso-serverиsso-clientкоммуникация,Отправьте токен авторизации для создания локального сеанса.
  5. Токен подтверждения:sso-server验证отsso-client发来из令牌请求,чтобы гарантировать ее эффективность.
  6. Регистрация системы:sso-server负责Примечание册ребеноксистема,для управления их запросами на аутентификацию.
  7. Обработка запроса на выход:sso-serverполучить отsso-clientиз Примечание销请求,И соответственно уничтожить глобальные и все связанные с ними локальные сессии.
Пример

Предположим, что Алисе во время работы необходим доступ к почтовой системе компании (система А, sso-клиент) и системе управления персоналом (система Б, другой sso-клиент). Когда Алиса пытается получить доступ к системе A в первый раз, она перенаправляется на sso-сервер (центр сертификации SSO) для входа в систему. После входа в систему sso-server создает глобальную сессию и токен авторизации и отправляет этот токен обратно в систему A. Система А получает токен, проверяет его достоверность и создает локальный сеанс для Алисы в своей системе. Затем, когда Алиса обращается к системе B, поскольку она уже вошла в систему на sso-сервере, Система B может подтвердить ее личность, связавшись с sso-сервером, и создать для нее еще один локальный сеанс без необходимости повторного входа в систему. Если Алиса выходит из любой системы, sso-client уведомляет sso-server, который затем уничтожает глобальный сеанс и уведомляет все связанные sso-клиенты о необходимости уничтожить их локальные сеансы.

Примерное кодирование

Примечание. Часть кода генерируется AI и может быть неточной. Это только для справки. Если вам нужен точный код, вы можете проверить проект XXL-SSO с открытым исходным кодом.

ChatGPT использует инфраструктуру SpringSecurity. Я не рекомендую использовать инфраструктуру разрешений Sa-Token или написать простой модуль разрешений самостоятельно. Чтобы использовать Spring Boot реализует простой Единый вход(SSO)система,включать sso-server и sso-client, вам необходимо создать два независимых Spring Загрузочный проект:один用Вsso-server,Другой — для sso-клиента. Я покажу вам, как построить базовую структуру и ключевую конфигурацию. Пожалуйста, обратите внимание,Чтобы упростить,Пример здесь предназначен только для демонстрации начального уровня.,Не код производственного класса.

Создать sso-сервер

Maven полагаться: существовать pom.xml файл, добавьте следующие ограничения:

Язык кода:javascript
копировать
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <!-- другойполагаться... -->
</dependencies>

Конфигурация Spring Security: Создайте класс конфигурации для настройки Spring Security。

Язык кода:javascript
копировать
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
​
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // author JanYork
        http
            .authorizeRequests()
            .anyRequest().authenticated()
            .and()
            .formLogin()
            .and()
            .csrf().disable();
    }
}

Информационная служба пользователей: Обеспечьте простой информационный сервис для пользователей.

Язык кода:javascript
копировать
@Service
public class UserService implements UserDetailsService {
​
    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        // Это должно быть связано с вашей базой данных пользователей, ниже приведен только пример.
        if ("admin".equals(username)) {
            return new User("admin", "password", new ArrayList<>());
        } else {
            throw new UsernameNotFoundException("пользовательеще нет找到");        }
    }
}
Создать sso-клиент

Зависимости Maven: такой жесуществовать pom.xml Добавьте весну в BootиSpring Безопасность зависит.

Конфигурация Spring Security: настраивать Конфигурация безопасности, для подключения sso-server。

Язык кода:javascript
копировать
@Configuration
@EnableWebSecurity
public class ClientSecurityConfig extends WebSecurityConfigurerAdapter {
​
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
            .anyRequest().authenticated()
            .and()
            .oauth2Login()
            .and()
            .csrf().disable();
    }
}

контроллер ресурсов: Создайте простой контроллер для проверки аутентификации.

Язык кода:javascript
копировать
@RestController
public class TestController {
​
    @GetMapping("/")
    public String home() {
        return «Добро пожаловать в ССО Client!";
    }
}
Запустите и протестируйте
  1. Запустить sso-сервер:бегать sso-server приложение。
  2. Запустить sso-клиент:бегать sso-client приложение。
  3. Посетите клиента:существовать浏览устройствосередина Посетите клиентское приложение. Поскольку клиент Конфигурация имеет OAuth2 Авторизоваться, вы будете перенаправлены на sso-сервер для аутентификации.
  4. Войти и перенаправить:существовать sso-server После Авторизации вы будете перенаправлены обратно на клиентское. приложение。
Уведомление
  • OAuth2 Служить Конфигурация не включена в этот пример.,Обычно это сложнее,Он предполагает регистрацию клиента и Служить и токена Служить.
  • существоватьдействительныйприложениесередина,Возможно, вам придется использовать более продвинутый инструмент «Служить», авторизованный для аутентификации.,Такие как Keycloak или Auth0.
  • Этот пример показывает только базовую структуру. существовать при фактическом применении,Есть еще факторы, которые вам нужно учитывать,Например, конфигурация HTTPS, безопасность токенов, управление сеансами и т. д.

Чтобы реализовать комплексное решение единого входа, вам, возможно, придется потратить больше времени на изучение Spring Security, протокола OAuth2 и связанных с ним передовых практик.

Авторизованный вход

Почему оно родилось?

Авторизованный Основная причина, по которой родился вход, — это обеспечение доступа к данным и совместного использования функций между приложениями, одновременно защищая конфиденциальность и безопасность существования. Это решает проблему традиционного метода Авторизоваться, заключающуюся в том, что учетные данные пользователя (например, имя пользователя и пароль) должны использоваться несколькими приложениями совместно, снижает риск утечки данных и упрощает процесс работы пользователя. В то же время многие продавцы Служить создали открытые платформы, которые позволяют другим компаниям и продуктам личного пользования использовать соответствующий Авторизованный вход, тем самым достигая некоторого социального удобства.

Что такое Oauth2.0?

OAuth 2.0 — это стандартный протокол лицензирования, который позволяет пользователю лицензировать стороннее приложение на право владения определенным Служить. ограниченный доступ к конкретным данным без предоставления собственных учетных данных (имени и пароля) третьим лицам. Это определение обеспечивает несколько процессов авторизации, подходящих для различных клиентских сред и сценариев использования.

Детальное понимание Oauth все еще немного затруднительно.,Здесь нечего сказать,если необходимо,Сяо Джейн в следующий раз сможет написать статью, связанную с Oauth.

Авторизованный входпринцип

Основные принципы Авторизованного входа включают в себя следующие ключевые этапы:

  1. Запрос авторизации пользователя:пользователь Попробуйте третью сторонуприложениедоступ Служитьчас,Стороннее приложение запрашивает авторизацию у пользователя.
  2. Перенаправление на сервис авторизации:пользовательбыть перенаправлен напоставщик на странице авторизации услуги нажмите Авторизоваться и подтвердите авторизацию.
  3. Выдача кода авторизации:поставщик услуг проверяет личность пользователя и предоставляет код авторизации стороннему приложению.
  4. Получить токен доступа:третья сторонаприложениеиспользовать Авторизовать码КАвторизовать Служитьустройство请求доступ令牌。
  5. Доступ к защищенным ресурсам:третья сторонаприложениеиспользоватьдоступ令牌请求пользовательиз数据。

常见из Авторизованный вход Служить

  • Google:поставлятьOAuth 2.0Служить,позволятьтретья сторонаприложениедоступGoogleпользовательиз基本информация、почта、Календарь и т. д.
  • Facebook:позволятьпользовательиспользовать其Facebookличностьсуществоватьдругойприложениеилина сайте Авторизоваться,и делитесь информацией.
  • GitHub:поставлятьOAuthСлужить,Позволяет стороннему приложению запрашивать данные пользователя GitHub.
  • Вичат:существоватьсередина国广泛использоватьизOAuthСлужить,Разрешить стороннее приложение через аккаунт Вичат Авторизоваться.

Архитектура и бизнес

В типичной архитектуре авторизованного входа задействованы три основные роли:

  1. пользователь(владелец ресурса):拥有可被доступиз数据или Служить。
  2. клиентское приложение(третья сторонаприложение):希望доступпользовательсуществоватьпоставщик Данные об услугах.
  3. поставщик услуг(Авторизовать Служитьустройствоиресурс Служитьустройство):жить储пользователь数据из平台,OAuth Служить обеспечен.
  4. В бизнес-процессе пользователь сначала инициирует запрос на доступ к данным «Авторизоваться» в существующемклиентском приложении.
  5. клиентское приложение перенаправляет пользователя на поставщика Страница авторизации услуг, Авторизоваться и авторизоваться на этой странице.
  6. После авторизации поставщик услуг Кклиентское приложениевыдать код авторизации, клиентское Затем приложение обменивает код авторизации на токен доступа.
  7. наконец,клиентское приложение Используйте этот токен для доступа к пользователюсуществоватьпоставщик Защищенные ресурсы по услугам.

таким образом,OAuth предоставляет пользователю безопасный способ разрешить третьим лицам доступ к данным на их различных устройствах.,не раскрывая свои учетные данные Авторизоваться. Это не только повышает безопасность,В то же время это также обеспечивает лучший опыт пользователя.,Потому что пользователю не нужно запоминать новую информацию об аккаунте для каждого приложения.

Кодировка, попробуйте получить доступ к стороннему Авторизованному входу

Примечание. Часть кодирования генерируется искусственным интеллектом, что в основном неточно и предназначено только для справки. Если вам нужно фактическое использование, вы можете напрямую использовать проект с открытым исходным кодом JustAuth, который почти интегрирует сторонний авторизованный код, обычно используемый на рынке. вход Служить, для этого нужна только простая Конфигурация.

Чтобы использовать Spring Boot реализует авторизованный входной бизнес, обычно совмещенный с весной SecurityиOAuth 2.0. Ниже приведен простой Авторизованный Опишите шаги по реализации входа, предполагая, что мы создаем пользователь, позволяющий Авторизоваться через учетную запись Google.

Создать проект Spring Boot

Сначала создайте новый проект Spring Boot. Вы можете использовать Spring Initializr для быстрого создания структуры проекта.

Добавить зависимости

существоватьэлемент Цельpom.xml文件серединадобавить в必要изполагаться。主要включатьSpring Boot Starter Web、Spring Boot Starter SecurityиSpring Security OAuth2 Client。

Язык кода:javascript
копировать
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-oauth2-client</artifactId>
    </dependency>
    <!-- другойполагаться... -->
</dependencies>
Настроить приложение

существоватьapplication.propertiesилиapplication.yml文件середина,добавить вOAuth Клиент 2.0 Конфигурация. Вам нужно, чтобы Google существовал Cloud Создайте OAuth на платформе 2.0 идентификатор и ключи клиента и добавьте их в Конфигурацию.

Язык кода:javascript
копировать
spring:
  security:
    oauth2:
      client:
        registration:
          google:
            clientId: [Google-Client-ID]
            clientSecret: [Google-Client-Secret]
            scope: 
              - email
              - profile
Конфигурация безопасности

создаватьодин Конфигурация безопасностидобрый,КонфигурацияSpring Безопасность использования OAuth 2.0 для входа в систему.

Язык кода:javascript
копировать
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
​
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests(authorizeRequests -> 
                authorizeRequests
                    .antMatchers("/", "/home", "/error", "/webjars/**").permitAll()
                    .anyRequest().authenticated()
            )
            .oauth2Login();
    }
}
Создать контроллер

Создатель Простой контроллер для отображения информации об авторизации и пользователе.

Язык кода:javascript
копировать
@Controller
public class WebController {
​
    @GetMapping("/")
    public String home() {
        return "home";
    }
​
    @GetMapping("/user")
    @ResponseBody
    public Principal user(Principal principal) {
        return principal;
    }
}
Главная страница

создать простой Главная страница страница(нравитьсяhome.html),существования, который добавляет ссылку Авторизоваться.

Язык кода:javascript
копировать
<!DOCTYPE html>
<html>
<head>
    <title>Home</title>
</head>
<body>
    <h2>Welcome</h2>
    <a href="/oauth2/authorization/google">Login with Google</a>
</body>
</html>
Запустите и протестируйте

Запустите приложение и посетите домашнюю страницу. Нажмите ссылку «Войти через Google», и вы будете перенаправлены на страницу входа в Google. После входа в систему Google перенаправит обратно в ваше приложение, и вы сможете получить доступ к защищенной информации пользователя.

Уведомление事элемент
  • Гарантированная безопасность: существование при развертывании в производственной среде,Обязательно используйте HTTPS.
  • КонфигурацияGoogle Cloud Platform:правильный КонфигурацияOAuth 2.0 и получите необходимые учетные данные.
  • опыт пользователя: адаптируйте процесс использования главной страницы к потребностям вашего приложения.
  • Обработка данных: данные пользователей обрабатываются в соответствии с потребностями бизнеса и политикой конфиденциальности.

Этот пример предоставляет базовый авторизованный структура реализации входного процесса. В зависимости от конкретных потребностей вашего бизнеса вам может потребоваться дополнительная настройка Конфигурация. безопасности、логика обработки информации о пользователе и т. д.

Кодирование, попробуйте написать свой сервис авторизации

Примечание. Кодовая часть генерируется AI и может быть неточной. Она предназначена только для справки.

Чтобы реализовать Spring на основе BootизOAuth2Авторизованный вход Служить,Создадим два модуля проекта: один в качестве авторизованного сервера Служить (сервер),Другой выступает в роли клиента. Ниже описаны основные настройки и реализация этих двух модулей.

Модуль сервера авторизации (Сервер)
  1. Создать проект
    • Использование Spring Initializr создает новый Spring Загрузочный проект,命имядляAuthServer
  2. Добавить зависимости
    • существоватьpom.xmlДобавьте весну в SecurityиOAuth2полагаться。
Язык кода:javascript
копировать
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.security.oauth</groupId>
        <artifactId>spring-security-oauth2</artifactId>
        <version>2.4.0.RELEASE</version>
    </dependency>
    <!-- другойполагаться... -->
</dependencies>
  1. Конфигурация Авторизовать Служитьустройство
    • Создать класс конфигурации для установки авторизации OAuth2. Служить реализации, определения сведений о клиенте и типа авторизации.
  2. Информационная служба пользователейи Конфигурация безопасности
    • 实сейчасUserDetailsService来поставлятьпользователь Сертификация,и КонфигурацияSpring Security。
Клиентский модуль
  1. Создать проект
    • Использование Spring Initializr создает новый Spring Загрузочный проект,命имядляAuthClient
  2. Добавить зависимости
    • существоватьpom.xmlДобавьте весну в Boot Starter Клиент WebиOAuth2 опирается.
Язык кода:javascript
копировать
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-oauth2-client</artifactId>
    </dependency>
    <!-- другойполагаться... -->
</dependencies>
  1. клиентская конфигурация
    • существоватьapplication.propertiesилиapplication.ymlсередина КонфигурацияOAuth2客户端информация,Указывает на уполномоченного исполнителя Служить.
  2. Контроллер и просмотр
    • Создать Контроллер обрабатывает отображение информации Авторизоватьсяпользователя и соответствующей Главной страница。
  3. Запустите и протестируйте
    • запускать Авторизовать Служитьустройствоиклиентское приложение, провести Авторизацию процесса тестирования.
Уведомление事элемент
  • безопасность:существовать生产среда,Пожалуйста, используйте HTTPS, чтобы обеспечить безопасность передачи данных.
  • хранение данных:существоватьдействительныйприложениесередина,Вы должны хранить информацию о пользователях в существующей базе данных.,А меры шифрования приложения используются для защиты данных пользователя.
  • Конфигурация:существоватьдействительный部署середина,Конфигурация OAuth2 может быть более сложной.,Включая улучшение токена, настройки разрешений клиента и т. д.

таким образом,Вы можете настроить полный OAuth2Авторизованный входной поток.,Среди них уполномоченный Служить отвечает за аутентификацию пользователей и выдачу токенов.,Клиент несет ответственность за предоставление пользователю интерфейса Авторизоваться и использование Служить, предоставленного авторизованным сервером Служить.

Резюме и резюме

Единый вход(SSO)

  • основные понятия:позволятьпользовательиспользовать单一凭证доступ多个приложениеили Служить。
  • Преимущества:Уменьшите нагрузку на память,продвигатьбезопасностьипользовательопыт。
  • приложение:Например,Доступ ко всем Google Служить можно получить с помощью учетной записи Google.

Авторизованный вход

  • определение:позволятьприложениесуществовать Не делитесьпользователь凭证из情况下доступпользовательсуществоватьдругой Служитьиз数据。
  • Преимущества:Дополнить данныебезопасность,Упростите работу пользователя.
  • пример:использовать社交媒体账号Авторизоватьсядругойприложениеили Служить。

SSOобъединить Авторизованный вход

  • Метод интеграции:SSOи Авторизованный вход можно использовать вместе, чтобы обеспечить более полную безопасность и удобство использования. Например, Авторизованный OAuth через аккаунт Google. входназад,пользователь Может быть автоматическим АвторизоватьсявсеGoogleСлужить。
  • приложениесцена:适用Внуждаться跨多个独立системаилиприложениепоставлять无缝пользовательопытизсцена。

другой

  • безопасностьи便捷性:SSOи Авторизованный входобщий Повышение безопасности, обеспечивая при этом удобный процесс доступа пользователей.
  • Выбор технологии:根据业务需求选择合适изSSOплани Авторизованный входметод。
  • Что необходимо реализовать:Обеспечить передачу данныхижить储избезопасность,Уважайте конфиденциальность пользователя.

Спасибо всем за прочтение этой длинной статьи. Хотя она кажется простой, только имея детальное и глубокое понимание бизнеса, вы сможете по-настоящему элегантно реализовать свои потребности.

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода