Проверка авторизации не работает в пользовательской конечной точке KeycloakJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Проверка авторизации не работает в пользовательской конечной точке Keycloak

Сообщение Anonymous »

Я пытаюсь добавить пользовательскую конечную точку в свой экземпляр Keycloak, используя это руководство Нико Кёблера, также известного как @dasniko. Примеры работают, у меня есть две рабочие конечные точки: /test/hello и /test/hello-auth с конечной точкой /test/hello-auth, требующей действительный токен доступа. Однако когда я добавляю свою собственную конечную точку, скажем /test/greeting, требующую действительный токен доступа, авторизация всегда завершается неудачей.
Выполнение запроса с действительным токеном доступа к Конечная точка /test/hello-auth дает ответ 200. С помощью отладчика я убедился, что код выполняется по ожидаемому пути. Выполнение запроса к конечной точке /test/greeting с тем же токеном доступа всегда приводит к сбою аутентификации, AuthResult auth = new AppAuthManager.BearerTokenAuthenticator(session).authenticate(); всегда приводит к auth< /code> имеет значение null.

Код: Выделить всё

public class TestProviderFactory implements RealmResourceProviderFactory {

public static final String PROVIDER_ID = "test";

@Override
public RealmResourceProvider create(KeycloakSession keycloakSession) {
return new TestProvider(keycloakSession);
}

@Override
public void init(Config.Scope scope) {}

@Override
public void postInit(KeycloakSessionFactory keycloakSessionFactory) {}

@Override
public void close() {}

@Override
public String getId() {
return PROVIDER_ID;
}
}

Код: Выделить всё

public class TestProvider implements RealmResourceProvider {

private final KeycloakSession session;

public TestProvider(KeycloakSession session) {
this.session = session;
}

@Override
public Object getResource() {
return this;
}

@Override
public void close() {}

@GET
@Path("hello")
@Produces(MediaType.APPLICATION_JSON)
public Response hello() {
return Response.ok(Map.of("hello", session.getContext().getRealm().getName())).build();
}

@GET
@Path("hello-auth")
@Produces(MediaType.APPLICATION_JSON)
public Response helloAuth() {
AuthResult auth = checkAuth();
return Response.ok(Map.of("hello", session.getContext().getRealm().getName())).build();
}

@GET
@Path("greeting")
@Produces(MediaType.APPLICATION_JSON)
public Response greeting() {
AuthResult auth = checkAuth();
return Response.ok(Map.of("hello", session.getContext().getRealm().getName())).build();
}

private AuthenticationManager.AuthResult checkAuth() {
AuthResult auth = new AppAuthManager.BearerTokenAuthenticator(session).authenticate();
if (auth == null) { // 

Подробнее здесь: [url]https://stackoverflow.com/questions/78758191/authorization-check-not-working-in-custom-keycloak-endpoint[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»