Сервис единой аутентификации Keycloak на базе LDAP
Сервис единой аутентификации Keycloak на базе LDAP

Предисловие

Ранее,Автор однажды написал статью«Первый опыт установки OpenLDAP»пытатьсяиспользовать Docker Развертывание в один клик OpenLDAP. Среди них для LDAP Протокол также содержит базовое введение, но не объясняет, как его использовать. LDAP Предоставить Единую для различных приложений. служба аутентификации еще не получила глубокого распространения на практике. В этой статье предполагается использовать LDAP Интегрируйтесь в различные сторонние системы или сервисы внутри команды в качестве центра. Например, приватизированные службы хостинга кода, обычно используемые внутри команд. Gitlab, сервис сетевых дисков Nextcloud, сервис ускорения кэширования Squid, предназначенный для доступа к внутренним кластерам OpenVPN Услуги, услуги внутренней базы знаний команды Dokuwiki, внутренняя база кода и служба образов контейнеров Nexus3 и т. д.

Единая служба аутентификации

  В условиях бурного роста прикладных систем Единая служба аутентификации (UIA) становится все более важным. С точки зрения непрофессионала, Единая служба аутентификации — это набор учетных записей и ряд веб-приложений и приложений. Приложение избавляет пользователя от необходимости поддерживать большое количество учетных записей и в то же время обеспечивает определенную степень защиты безопасности учетной записи пользователя. Например, Единая служба аутентификация может попросить пользователя ввести код проверки по SMS или подтверждение по электронной почте при входе в систему. Многофакторная аутентификация, такая как код «Рять» или динамический вторичный код проверки, комплексный «Кусочек» гарантируют безопасность входа пользователя. Как и в университете, причина, по которой мы можем получить доступ ко всем приложениям веб-сайтов и другим разрешениям, благодаря использованию Единой служба аутентификации。

  Единая служба Аутентификация обычно связана с контролем авторизации, который может подтвердить, к каким ресурсам у пользователя есть разрешения, какие операции можно выполнять и т. д. Конечно, каждая прикладная система также может иметь свою собственную систему контроля авторизации, непосредственно перенимая или дополняя существующую единую систему. служба Аутентификация обеспечивает средства контроля авторизации, доступные из. Общие решения унифицированной аутентификации включают в себя OpenID Connect、OAuth 2.0、SAML2(Shibboleth)、CAS и т. д. Фактически, все эти решения должны иметь способ хранения информации о пользователях. Конечно, мы можем использовать реляционную базу данных для ее реализации или использовать облегченный протокол каталогов (LDAP). Как упоминалось в предыдущей статье, LDAP По сравнению с реляционными базами данных запросы и просмотр выполняются быстрее, но LDAP Существуют определенные ограничения на изменение значений атрибутов и самих атрибутов. Поэтому фактическая из Единая служба аутентификации будут сочетать в себе эти два преимущества и дополнять друг друга, обеспечивая тем самым более комплексные и надежные услуги по сертификации.

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

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

Единая служба аутентификацииупражняться

  Различные виды Единой подробно описаны в из Ссылки. служба решения (договора) аутентификации, среди которых OpenID Connect Решение относительно хорошо удовлетворяет вышеуказанным функциональным требованиям. WeChat, QQ, Baidu, Taobao и т. д., которые мы используем в повседневной жизни, используют это решение. Мы также обычно называем этот тип стороннего метода входа «входом через социальные сети». Конечно, причина, по которой эти производители выбирают OpenID Connect а не выбирать CAS, вероятно, главным образом потому, что OpenID Connect основан на OAuth 2.0 из Единая служба решение для аутентификации. Хотя CAS Он также был встроен OAuth 2.0 Сертифицировано и даже совместимо SAML2 Подожди, но в итоге всё равно будет ограничено B/S сцена. OpenID Connect Сценарии, на которые он ориентирован, не ограничиваются Б/С и К/С. Знаете, с развитием смартфонов мобильные клиенты стали очень большим рынком, а количество ежедневных посещений даже намного выше, чем у десктопных браузеров.

  Чтобы проверить, можно ли его принять LDAP Создание Единой в качестве базового хранилища служба аутентификации, здесь мы выбираем более известные из RedHat Спонсорская разработка на основе OpenID Connect программное обеспечение с открытым исходным кодом протокола Keycloak。на самом деле,на основе CAS Существуют также относительно известные протоколы. aperoeo/cas。Но как это сказать,Есть две причины не выбирать его. Во-первых, он основан на на CAS протокол, во-вторых, его функция немного отличается от той, которую я хочу. Хотя также возможно LDAP В качестве базового хранилища все данные доступны только для чтения. Лично я думаю, что это можно сделать LDAP В качестве базового хранилища из Единая служба Решение аутентификации должно, по крайней мере, давать пользователю возможность выбрать вариант «только для чтения» или «записываемый». На этом этапе Keycloak Чтобы сделать лучше.

Развертывание Keycloak

  Keycloak Официально предоставлено составлено Docker Зеркало, мы можем использовать docker-compose руководить Развертывание в один клик。Содержимое файла конфигурации следующее:

Язык кода:javascript
копировать
# docker-compose.yml

version: '3'

services:
  postgres:
      image: postgres
      volumes:
        - ./data:/var/lib/postgresql/data
      environment:
        POSTGRES_DB: keycloak
        POSTGRES_USER: keycloak
        POSTGRES_PASSWORD: password
  keycloak:
      image: quay.io/keycloak/keycloak:legacy
      environment:
        DB_VENDOR: POSTGRES
        DB_ADDR: postgres
        DB_DATABASE: keycloak
        DB_USER: keycloak
        DB_SCHEMA: public
        DB_PASSWORD: password
        KEYCLOAK_USER: admin
        KEYCLOAK_PASSWORD: Pa55w0rd
      ports:
        - 8080:8080
      depends_on:
        - postgres

  использовать docker-compose up -d команда для запуска службы. Причина, по которой здесь используетсяиз legacy этикетка вместо latest этикетка, главным образом потому, что Keycloak Команда вносит коррективы в способ его запуска и связанные с ним параметры. последний Теги можно использовать docker run Команда запускается нормально, но docker-compose Это работает не очень хорошо. Версии кода двух тегов на самом деле одинаковы, за исключением некоторых различий в запуске службы.

Использование Keycloak

  доступ http://127.0.0.1:8080/auth/realms/master/account/#/ Вы можете войти на страницу пользователя и нажать в правом верхнем углу, чтобы войти. Здесь напрямую используйте учетную запись пользователя-администратора ипароль в приведенном выше файле конфигурации.

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

Международные настройки

  доступ http://127.0.0.1:8080/auth/admin/master/console Вы можете войти на страницу администратора и войти в систему автоматически.

 Перейдите на вкладку «Темы», включите интернационализацию и установите язык интерфейса по умолчанию, затем нажмите «Сохранить».

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

Подключиться к LDAP

  Левая панель навигациипереключиться наФедерация пользователейвкладка,Выберите добавить ldap.

  Введите соответствующую информацию о конфигурации, как показано ниже. Поскольку это соединение. OpenLDAP Итак, поставщик выбираетдругой。дляпользовательможет пройти Keycloak изменить LDAP изпароль,здесьиз Выбор режима редактированиязаписываемый。Кроме того, после заполнения конфигурации вы можете воспользоваться правомизтестовое соединениеиТестовая проверкакнопка, чтобы проверить, работает ли конфигурация。Как показано ниже,Лучшие советы для успешной проверки. Нажмите «Сохранить», чтобы завершить изменение LDAP.

Обновите страницу после настройки LDAP.,Ниже будут четыре новыхизкнопка。НажмитеСинхронизировать всех пользователейТы можешьпользователь Синхронизировать с Keycloak。

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

  Как показано на рисунке ниже, доказано, что Keycloak успех Подключиться к LDAP。

Политика паролей пользователей

  потому что LDAP Сам пароль менять не очень удобно. Требуется дополнительная сторонняя поддержка. Здесь используется. Keycloak Встроенный изWAY изменить LDAP серединаизпароль。длягарантироватьпользователь Исправлятьизпарольиметь определенныеизбезопасность,Нам нужно создать несколько новыхпарольизсложные правила。Переключите левую панель навигации напроверятьвкладка,Выбрать еще разпароль Стратегиявкладка,использоватьверхний правый уголизДобавить политикудобавить разныеизстратегические требования,Нажмите кнопку «Сохранить», когда закончите.

  Хотя мы установили здесь требования политики к сложности новых паролей, они еще не вступили в силу для пользователей системы. Нам нужно вернуться к предыдущему LDAP Конфигурацияиз Расширенные настройкисередина Открытьпроверятьпароль Стратегия。Изображение нижесерединаиз LDAPv3 пароль Вы можете включить его или нет, это мало на что влияет.

  Чтобы проверить Политика паролей Действительно ли пользователи эффективны?,нуждатьсяпереключиться в самом начале страницы изпользователя. Нажмите Update кнопка для перехода на обновленную страницу пароля. Здесь система может проверить безопасность и потребовать еще раз ввести пароль и вторичный код проверки (если есть), просто введите их.

  Вот простой пароль для установки 1234 Возвращенное сообщение об ошибке является примером. Вообще говоря, мы установим следующие стратегии для пароля:

  • Длина пароля не должна быть менее 8 немного, не больше 32 Кусочек
  • пароль должен содержать как прописные, так и строчные буквы
  • пароль должен содержать цифры
  • пароль должен содержать хотя бы один специальный символ
OTP-верификация

  Как анализировалось ранее, полная из Единая служба аутентификации должны иметь многофакторную аутентификацию. Многофакторная аутентификация более безопасна, чем OTP (одноразовый пароль). Плащ-ключ Просто поддержи OTP – проверка. Как вы можете видеть на странице ниже, значение по умолчанию OTP Возможна настройка политикииспользовать FreeOTP и Google Аутентификатор. Но если вы измените одну из конфигураций, после сохранения будет отображаться, что поддерживается только Бесплатно ОТП. Как ни странно, FreeOTP Похоже, это программное обеспечение с открытым исходным кодом обновляется не очень часто, а его клиент для Android очень старый. По авторскому тесту, если OTP Поддержка стратегии Google Anthenticator, тогда более популярный на рынке сейчас Authy、Microsoft Anthenticator и т. д. могут быть поддержаны.

  Чтобы все пользователи системы могли OTP,Это можно сделать следующим образом вНеобходимая операциявкладкасередина Конфигурация OTP это операция по умолчанию. Таким образом, пользователю будет предложено настроить ОТП. (PS: Microsoft Office365 Также будет это требование по умолчанию. )

  Чтобы проверить OTP Доступно ли это?,Перейти кпользователь Страница НажмитеНастройка приложения проверкикнопка。

 Нажмите, чтобы перейти на страницу конфигурации, как показано ниже. использовать Только что упоминалось, что любое приложение может сканировать QR-код на странице, чтобы завершить добавление. Затем введите здесь одноразовый код проверки в соответствии с кодом вторичной проверки, отображаемым в приложении.,Нажмите «Отправить». Если он прыгает нормально,Конфигурация прошла успешно. Если конфигурация не удалась,останется на этой странице,И появляется красное сообщение об ошибке.

Приложение прямой интеграции LDAP

  В дополнение к вышеизложенному введению в построение на основе LDAP из Единая служба аутентификации(Например Keycloak) может предоставлять услуги проверки входа в систему для других приложений, а также может напрямую подключать приложения к LDAP Интеграция сервисов. Здесь может возникнуть вопрос: Поскольку LDAP Его можно интегрировать с приложениями, так зачем создавать его на основе LDAP из Единая служба А как насчет аутентификации? На самом деле здесь нужно кое-что учитывать» LDAP Что лучше — публиковаться в публичной сети или в «Единой»? служба аутентификации Хорошо ли выставлять это в общедоступную сеть? «Этот вопрос. LDAP Основной целью службы каталогов является обслуживание приложений во внутренней сети, а не в глобальной сети. С Единой служба аутентификации могут быть очень хорошими по желанию LDAP Безопасно и надежно защищено внутри сети и Единая служба аутентификации действует как веб-приложение и взаимодействует с другим веб-приложением или клиентским приложением. Такой способ может показаться более элегантным и обнадеживающим.

Написать цикл на тему «Интеграция» (выкопать яму). (PS: Заранее дайте соответствующую ссылку. Если есть возможность, то написано.)

решение проблем

(Добавлено 28 сентября 2022 г.)

вопрос

вопрос Описание:использовать Nginx актерское мастерство Keycloak Что делать, если страница входа в систему доступа продолжает загружаться?

Решение

Решение:Это главным образом потому, что Keycoak Конфигурация по умолчанию — Нет, актерское. мастерствомодель。еслииспользовать Nginx актерское мастерство, нужно быть в docker-compose.yml из environment Добавить конфигурацию внутри PROXY_ADDRESS_FORWARDING: "true" Затем перезапустите службу.

вопрос

вопрос Описание:Зачем развертыватьиз Keycloak Нет User Profile А как насчет функций?

Решение

Решение:Keycloak По умолчанию включена только функция стабильности, например User Profile Это все функции предварительной версии. Если вы хотите включить функцию предварительного просмотра, вам необходимо добавить конфигурацию JAVA_OPTS_APPEND: "-Dkeycloak.profile=preview" Затем перезапустите службу.

Ссылки

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

(использовать CC BY-NC-SA 4.0 Разрешено лицензионным соглашением)

Название этой статьи: " Сервис единой аутентификации Keycloak на базе LDAP 》

Ссылка на эту статью:https://cloud.tencent.com/developer/article/2143053

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose