Это руководство по настройке Express и Keycloak для защиты веб-маршрутов. Предпосылки Keycloak - это решение для управления идентификацией и доступом с открытым исходным кодом, которое упрощает защиту приложений или микросервисов с минимальным использованием кода или без него. Express - это минималистичный и гибкий фреймворк для веб-приложений Node.js. Работа с официальной документацией Keycloak может занять некоторое время, поскольку документация обширна и охватывает различные варианты использования. Это краткое руководство с минимальной настройкой.
Цель состоит в том, чтобы создать приложение Express, которое использует Keycloak для защиты маршрута «/ test». Вход в систему и настройки пользователя контролируются keycloak. Маршрут по умолчанию / ‘ не защищен. Маршрут / logout прерывает сеанс кейлоака.
Чтобы установить keycloak-connect npm в вашем экспресс-приложении, используйте следующую команду
npm install keycloak-connect --save
Настройте экспресс-сервер
Вам необходимо импортировать keycloak-connect и экспресс-сессии в ваше экспресс-приложение.
const Keycloak = require('keycloak-connect'); const session = require('express-session');
Затем настройте сеанс для использования memoryStore. Настройте промежуточное ПО keycloak для использования хранилища памяти сеанса.
var memoryStore = new session.MemoryStore(); var keycloak = new Keycloak({ store: memoryStore }); //session app.use(session({ secret:'thisShouldBeLongAndSecret', resave: false, saveUninitialized: true, store: memoryStore })); app.use(keycloak.middleware());
Затем вы можете использовать keycloak.protect на своих защищенных маршрутах. Это проверит, вошел ли пользователь в систему на сервере keycloak и перенаправит его на маршрут. Если пользователь не вошел в систему, сервер будет перенаправлен на страницу входа в keycloak. Пользователь может создавать новые учетные записи, щелкнув ссылку регистрации на странице входа. Это создает новых пользователей на сервере Keycloak.
//route protected with Keycloak app.get(‘/test’, keycloak.protect(), function(req, res){ res.render(‘test’, {title:’Test of the test’}); });
Установите маршрут выхода, чтобы использовать промежуточное программное обеспечение keycloak для завершения сеанса.
app.use( keycloak.middleware( { logout: '/'} ));
См. Следующую суть для полной реализации server.
Установка примера
Клонируйте это репо и cd в новый каталог, запустите npm install, есть некоторые дополнительные вещи, такие как представления в репо.
Демо-видео
Вы можете увидеть Keycloak и сервер Express.js в действии по адресу
Настройка сервера Keycloak
Для использования этого экспресс-приложения вам потребуется запустить сервер Keycloak. Keycloak можно загрузить и запустить локально или из контейнера докеров, см. Https://hub.docker.com/r/jboss/keycloak/ для получения дополнительной информации.
Загрузите Keycloak по адресу http://www.keycloak.org/downloads.html. Чтобы запустить его локально, распакуйте загруженный файл и запустите standalone.sh
./keycloak-unzip-directory/bin/standalone.sh
Затем вы можете получить доступ к серверу Keycloak из браузера, используя следующий URL-адрес
http://localhost:8080/auth/
Вы попадете на экран начального пароля для администратора Keycloak.
Для получения дополнительной информации о настройке Keycloak см. Следующее руководство www.keycloak.org/docs/latest/getting_started/index.html
Затем вам нужно настроить область http://www.keycloak.org/docs/latest/getting_started/index.html#creating-a-realm-and-user. Войдите в консоль администратора Keycloak, наведите указатель мыши на верхний левый угол, нажмите Добавить область и дайте ей имя.
Чтобы использовать адаптер Node.js, сначала необходимо создать клиент для своего приложения в консоли администрирования Keycloak. Настройте клиент Open ID Connect http://www.keycloak.org/docs/latest/server_admin/index.html#_clients. В вашем новом мире нажмите Клиенты и Создать и дайте своему клиенту имя / идентификатор.
Адаптер поддерживает общедоступный, конфиденциальный и однонаправленный доступ. Какой из них выбрать, зависит от сценария использования. В этом случае я выбрал общедоступный с помощью openid-connect.
Вам нужно будет определить действительный URL-адрес перенаправления.
После создания клиента перейдите на вкладку «Установка», выберите «Keycloak OIDC JSON для параметра формата» и нажмите «Загрузить».
Скачанный файл keycloak.json следует поместить в корневую папку вашего проекта. Пример файла keycloak.json
{ "realm": "test", "auth-server-url": "http://localhost:8080/auth", "ssl-required": "external", "resource": "keycloak-express", "public-client": true, "confidential-port": 0 }
Вот и все ваши веб-маршруты Express будут защищены Keycloak. Для получения дополнительной информации см. Http://www.keycloak.org/docs/latest/securing_apps/index.html#_nodejs_adapter.
"Мой блог"