Получение пользовательских данных из Keycloak с использованием токена доступа: методы и примеры кода

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

Метод 1: использование API REST администратора Keycloak
Keycloak предоставляет комплексный API REST администратора, который обеспечивает программный доступ для управления и получения пользовательских данных. Чтобы получить пользовательские данные с помощью токена доступа, вы можете выполнить вызов API к серверу Keycloak с соответствующей конечной точкой и токеном доступа.

Вот пример использования команды curlв Linux:

curl -X GET \
  'http://your-keycloak-server/auth/admin/realms/your-realm/users/{user-id}' \
  -H 'Authorization: Bearer {access-token}'

Замените {user-id}на идентификатор пользователя, для которого вы хотите получить данные, и {access-token}на действительный токен доступа.

Метод 2: использование Java-адаптера Keycloak
Если вы разрабатываете приложение Java, вы можете использовать библиотеку Java-адаптера Keycloak для взаимодействия с Keycloak. Адаптер предоставляет API высокого уровня для аутентификации и авторизации, включая возможность получения пользовательских данных с помощью токена доступа.

Вот пример использования Java-адаптера Keycloak:

KeycloakSecurityContext session = (KeycloakSecurityContext) request.getAttribute(KeycloakSecurityContext.class.getName());
AccessToken accessToken = session.getToken();
String userId = accessToken.getSubject();
Keycloak keycloak = KeycloakBuilder.builder()
        .serverUrl("https://your-keycloak-server/auth")
        .realm("your-realm")
        .bearerOnly(true)
        .build();
UserRepresentation user = keycloak.realm("your-realm")
        .users()
        .get(userId)
        .toRepresentation();

Предполагается, что в вашем проекте настроена зависимость Java-адаптера Keycloak.

Метод 3: использование адаптера JavaScript Keycloak
Для веб-приложений Keycloak предоставляет адаптер JavaScript, который можно использовать для получения пользовательских данных с помощью токена доступа в коде JavaScript на стороне клиента.

Вот пример использования адаптера JavaScript Keycloak:

var keycloak = Keycloak({
    realm: 'your-realm',
    url: 'http://your-keycloak-server/auth',
    clientId: 'your-client-id'
});
keycloak.init({ onLoad: 'login-required' }).success(function (authenticated) {
    if (authenticated) {
        var userId = keycloak.tokenParsed.sub;
        keycloak.loadUserInfo().success(function (userInfo) {
            console.log(userInfo);
        });
    }
});

В этом примере предполагается, что вы включили сценарий адаптера JavaScript Keycloak на свою HTML-страницу.

Получение пользовательских данных из Keycloak с использованием токена доступа является важным аспектом интеграции Keycloak в ваши приложения. В этой статье мы рассмотрели три метода: использование API REST администратора Keycloak, адаптера Java и адаптера JavaScript. Каждый метод предлагает свой подход в зависимости от требований вашего приложения. Используя эти методы, вы можете легко получать пользовательские данные и расширять возможности аутентификации и авторизации ваших приложений.