Если что-то не так или не хватает каких-то знаний, пожалуйста, дайте мне знать вовремя, спасибо.
Единый вход(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)。
Преимущества:
Недостатки:
Принцип Единого входа в основном состоит из следующих частей:
Проще говоря,SSOнравиться“Войдите один раз, идите куда угодно”способ,Повышенная эффективность доступа и безопасность.
Например, представьте, что вы идете в большой торговый центр с множеством магазинов. Прежде чем войти в магазин, вам необходимо получить входной браслет на входе в торговый центр. После того как вы подтвердите свою личность на входе и получите браслет, вы сможете войти в любой магазин в центре без необходимости повторно предъявлять свое удостоверение личности у каждой двери магазина. Этот браслет похож на токен авторизации в SSO, проверяется один раз и используется в нескольких местах. Каждый магазин доверяет действительности браслета, поэтому вам не нужно подтверждать свою личность каждый раз, когда вы входите в магазин. Или, если вы остановитесь в отеле, отель выдаст вам карту «все в одном». Эту карту можно использовать для оплаты лифтов, завтрака, карточек для подключения к электричеству... и так далее.
Примечание:Фотографии материала взяты изwww.cnblogs.com/ywlaker/p/6…
Приведенная выше блок-схема описывается в тексте следующим образом:
Связь между глобальными и локальными сеансами:
Пример: Представьте, что есть пользователь Том. Том сначала получает доступ к почтовой системе компании (Система 1), но требует входа в систему. Система электронной почты перенаправляет его в центр аутентификации SSO компании, где Том входит в систему. После успешного входа в систему он возвращается в почтовую систему и может получить доступ к своей почте. После этого Том решил проверить внутренний форум компании (Система 2). Когда он нажимает на ссылку форума, система определяет, что он уже вошел в систему через единый вход, и разрешает ему доступ напрямую, без повторного входа в систему. В этом процессе разговор Тома с центром сертификации SSO является глобальным, а его разговор с почтовой системой и форумом — локальным.
Zero Trust использует подход к безопасности «никогда не доверяй, всегда проверяй подлинность»: любой пользователь, приложение или устройство — вне сети или уже прошедшие проверку подлинности и внутри — должны сначала получить доступ к следующим необходимым сетевым ресурсам, прежде чем проверять свою личность. Поскольку сети становятся все более распределенными, охватывая большее количество локальной инфраструктуры, а также частных и общедоступных облаков, подход с нулевым доверием имеет решающее значение для предотвращения проникновения угроз в сеть, получения большего доступа и причинения наибольшего ущерба. SSO широко рассматривается как основополагающая технология для реализации подхода нулевого доверия, особенно как часть решения IAM. Фундаментальная задача Zero Trust заключается в создании архитектуры безопасности, которая побеждает злоумышленников, проникающих в сеть, не препятствуя авторизованным конечным пользователям свободно перемещаться внутри сети и выполнять свою работу или бизнес. В сочетании с технологиями и передовыми практиками, такими как многофакторная аутентификация, контроль доступа и разрешений, а также микросегментация сети, единый вход может помочь организациям достичь этого баланса.
Человек: буквальное значение,Не верь никому,неважно кто,Все требуют сертификации,То естьСовмещен с Авторизованным входом и требует, чтобы каждый продукт бизнеса был авторизован один раз.,Доступ ко всем сайтам под одним и тем же основным доменным именем больше не является бесплатным.,Google не принимает эту модель.
«Нулевое доверие» — это подход к кибербезопасности, основная философия которого — «никогда слепо не доверяй, всегда проверяй». В рамках этой модели:
Единый вход (SSO) существует, играет важную роль в модели нулевого доверия, поскольку он является частью управления идентификацией и доступом (IAM):
Представьте себе компанию, сотрудникам которой необходим доступ к нескольким системам, таким как электронная почта, хранилище документов и внутренние приложения. В рамках модели нулевого доверия:
Таким образом, модель нулевого доверия в сочетании с единым входом может повысить безопасность, не снижая при этом чрезмерно производительность сотрудников.
Есть много способов реализовать Единый вход (SSO),Не ограничивается использованием сеансов,Ниже перечислены различные способы реализации единого входа:
Каждая реализация единого входа имеет свои преимущества и применимые сценарии. Какой метод выбрать, зависит от таких факторов, как требования безопасности, архитектура системы, простота использования и затраты на обслуживание. С развитием облачных сервисов и архитектуры микросервисов, единого входа на основе токенов и использования OAuth/OpenID. Подход Connect становится все более популярным. 不够目前我использоватьиз最多из,Это реализация единого входа на основе токена.,То есть метод токена,И вообще при реализации стратегии токена Token,Как правило, у токена также будет собственный сеанс для других целей.,Тогда может быть больше Oauth2.0.
Примечание:Фотографии материала взяты изwww.cnblogs.com/ywlaker/p/6…
Приведенная выше блок-схема описывается в тексте следующим образом:
Пример: Например, Алиса использует систему электронной почты (Система 1) и внутренний форум (Система 2) на своем рабочем месте. Сначала она входит в почтовую систему, а затем может получить доступ к форуму без повторного входа в систему. Когда Алиса нажимает кнопку выхода из почтовой системы, почтовая система отправляет этот запрос в центр сертификации SSO. После подтверждения центра сертификации SSO он уведомляет (или интерфейсная часть активно извлекает статус), что Алиса вышла из системы форумов. Затем система форума уничтожает сеанс, связанный с Алисой. Во время этого процесса глобальный сеанс Алисы и все связанные с ним локальные сеансы уничтожаются, гарантируя, что она успешно выйдет из всех систем, и, наконец, Алиса перенаправляется обратно на страницу входа.
Примечание:Это изображение взято изwww.cnblogs.com/ywlaker/p/6…
Предположим, что Алисе во время работы необходим доступ к почтовой системе компании (система А, 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-клиента. Я покажу вам, как построить базовую структуру и ключевую конфигурацию. Пожалуйста, обратите внимание,Чтобы упростить,Пример здесь предназначен только для демонстрации начального уровня.,Не код производственного класса.
Maven полагаться: существовать pom.xml
файл, добавьте следующие ограничения:
<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。
@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();
}
}
Информационная служба пользователей: Обеспечьте простой информационный сервис для пользователей.
@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("пользовательеще нет找到"); }
}
}
Зависимости Maven: такой жесуществовать pom.xml
Добавьте весну в BootиSpring Безопасность зависит.
Конфигурация Spring Security: настраивать Конфигурация безопасности, для подключения sso-server。
@Configuration
@EnableWebSecurity
public class ClientSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.oauth2Login()
.and()
.csrf().disable();
}
}
контроллер ресурсов: Создайте простой контроллер для проверки аутентификации.
@RestController
public class TestController {
@GetMapping("/")
public String home() {
return «Добро пожаловать в ССО Client!";
}
}
Чтобы реализовать комплексное решение единого входа, вам, возможно, придется потратить больше времени на изучение Spring Security, протокола OAuth2 и связанных с ним передовых практик.
Авторизованный Основная причина, по которой родился вход, — это обеспечение доступа к данным и совместного использования функций между приложениями, одновременно защищая конфиденциальность и безопасность существования. Это решает проблему традиционного метода Авторизоваться, заключающуюся в том, что учетные данные пользователя (например, имя пользователя и пароль) должны использоваться несколькими приложениями совместно, снижает риск утечки данных и упрощает процесс работы пользователя. В то же время многие продавцы Служить создали открытые платформы, которые позволяют другим компаниям и продуктам личного пользования использовать соответствующий Авторизованный вход, тем самым достигая некоторого социального удобства.
OAuth 2.0 — это стандартный протокол лицензирования, который позволяет пользователю лицензировать стороннее приложение на право владения определенным Служить. ограниченный доступ к конкретным данным без предоставления собственных учетных данных (имени и пароля) третьим лицам. Это определение обеспечивает несколько процессов авторизации, подходящих для различных клиентских сред и сценариев использования.
Детальное понимание Oauth все еще немного затруднительно.,Здесь нечего сказать,если необходимо,Сяо Джейн в следующий раз сможет написать статью, связанную с Oauth.
Основные принципы Авторизованного входа включают в себя следующие ключевые этапы:
В типичной архитектуре авторизованного входа задействованы три основные роли:
таким образом,OAuth предоставляет пользователю безопасный способ разрешить третьим лицам доступ к данным на их различных устройствах.,не раскрывая свои учетные данные Авторизоваться. Это не только повышает безопасность,В то же время это также обеспечивает лучший опыт пользователя.,Потому что пользователю не нужно запоминать новую информацию об аккаунте для каждого приложения.
Примечание. Часть кодирования генерируется искусственным интеллектом, что в основном неточно и предназначено только для справки. Если вам нужно фактическое использование, вы можете напрямую использовать проект с открытым исходным кодом JustAuth, который почти интегрирует сторонний авторизованный код, обычно используемый на рынке. вход Служить, для этого нужна только простая Конфигурация.
Чтобы использовать Spring Boot реализует авторизованный входной бизнес, обычно совмещенный с весной SecurityиOAuth 2.0. Ниже приведен простой Авторизованный Опишите шаги по реализации входа, предполагая, что мы создаем пользователь, позволяющий Авторизоваться через учетную запись Google.
Сначала создайте новый проект Spring Boot. Вы можете использовать Spring Initializr для быстрого создания структуры проекта.
существоватьэлемент Цельpom.xml
文件серединадобавить в必要изполагаться。主要включатьSpring Boot Starter Web、Spring Boot Starter SecurityиSpring Security OAuth2 Client。
<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 идентификатор и ключи клиента и добавьте их в Конфигурацию.
spring:
security:
oauth2:
client:
registration:
google:
clientId: [Google-Client-ID]
clientSecret: [Google-Client-Secret]
scope:
- email
- profile
создаватьодин Конфигурация безопасностидобрый,КонфигурацияSpring Безопасность использования OAuth 2.0 для входа в систему.
@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();
}
}
Создатель Простой контроллер для отображения информации об авторизации и пользователе.
@Controller
public class WebController {
@GetMapping("/")
public String home() {
return "home";
}
@GetMapping("/user")
@ResponseBody
public Principal user(Principal principal) {
return principal;
}
}
создать простой Главная страница страница(нравитьсяhome.html
),существования, который добавляет ссылку Авторизоваться.
<!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 перенаправит обратно в ваше приложение, и вы сможете получить доступ к защищенной информации пользователя.
Этот пример предоставляет базовый авторизованный структура реализации входного процесса. В зависимости от конкретных потребностей вашего бизнеса вам может потребоваться дополнительная настройка Конфигурация. безопасности、логика обработки информации о пользователе и т. д.
Примечание. Кодовая часть генерируется AI и может быть неточной. Она предназначена только для справки.
Чтобы реализовать Spring на основе BootизOAuth2Авторизованный вход Служить,Создадим два модуля проекта: один в качестве авторизованного сервера Служить (сервер),Другой выступает в роли клиента. Ниже описаны основные настройки и реализация этих двух модулей.
AuthServer
。pom.xml
Добавьте весну в SecurityиOAuth2полагаться。<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>
UserDetailsService
来поставлятьпользователь Сертификация,и КонфигурацияSpring Security。AuthClient
。pom.xml
Добавьте весну в Boot Starter Клиент WebиOAuth2 опирается.<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>
application.properties
илиapplication.yml
середина КонфигурацияOAuth2客户端информация,Указывает на уполномоченного исполнителя Служить.таким образом,Вы можете настроить полный OAuth2Авторизованный входной поток.,Среди них уполномоченный Служить отвечает за аутентификацию пользователей и выдачу токенов.,Клиент несет ответственность за предоставление пользователю интерфейса Авторизоваться и использование Служить, предоставленного авторизованным сервером Служить.
Спасибо всем за прочтение этой длинной статьи. Хотя она кажется простой, только имея детальное и глубокое понимание бизнеса, вы сможете по-настоящему элегантно реализовать свои потребности.