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. Каждый метод предлагает свой подход в зависимости от требований вашего приложения. Используя эти методы, вы можете легко получать пользовательские данные и расширять возможности аутентификации и авторизации ваших приложений.