Как использовать keycloak.logout () с помощью установленного адаптера keycloak в Netbeans - PullRequest
1 голос
/ 15 июня 2019

Я пытаюсь использовать Keycloak для защиты моего настольного приложения. Для начала я все еще пытаюсь использовать пример, как в документации, которую можно найти здесь https://www.keycloak.org/docs/4.8/securing_apps/index.html#_installed_adapter. Я могу войти в систему просто отлично, получить токены и все пользовательские данные, но по какой-то причине всякий раз, когда я вызываю метод keycloak .logout () просто перенаправляет меня на страницу «успешный вход» и отказывается выходить из системы. Я что-то упускаю из виду?

Я уже пытался перенаправить пользователя на страницу выхода по адресу http://localhost:8080/auth/realms/{My-Realm}/protocol/openid-connect/logout но это не похоже на что-либо делать. Единственный обходной путь, который я нашел, - это изменить redirect_uri на / auth / realms / {My-Realm} / account / * и оттуда просто нажать на выход

Для конфигурации клиента я следовал инструкциям, найденным здесь https://github.com/keycloak/keycloak-documentation/blob/master/securing_apps/topics/oidc/java/installed-adapter.adoc

Вот ключик.json

{
  "realm": "{My-Realm",
  "auth-server-url": "http://localhost:8080/auth/",
  "resource": "login",
  "public-client": true,
  "use-resource-role-mappings": true
}

А вот и тестовый класс

KeycloakInstalled keycloak = new KeycloakInstalled();

keycloak.setLocale(Locale.ENGLISH);
keycloak.login();

AccessToken token = keycloak.getToken();

System.out.println("Logged in...");
System.out.println("Token: " + token.getSubject());
System.out.println("Username: " + token.getPreferredUsername());
String username = token.getPreferredUsername();
String userToken = token.getSubject();
Access realmAccess = token.getRealmAccess();
User user = new User();
HashSet < String > roles = (HashSet < String > ) realmAccess.getRoles();
System.out.println("Role: " + roles);
user.setUsername(username);
user.setRole(roles);
user.setToken(userToken);
user.setKeycloak(keycloak);
try {
    System.out.println("AccessToken: " + keycloak.getTokenString());
    user.setAccessToken(keycloak.getTokenString());
} catch(Exception ex) {
    ex.printStackTrace();
}

int timeoutSeconds = 3;
System.out.printf("Logging out in...%d Seconds%n", timeoutSeconds);
try {
    TimeUnit.SECONDS.sleep(timeoutSeconds);
} catch(Exception e) {
    e.printStackTrace();
}
try {
    keycloak.logout();
} catch(Exception e) {
    e.printStackTrace();
}
System.out.println("Exiting...");
System.exit(0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...