Кваркус Чванливый пользовательский интерфейс Брелок

#swagger #openid-connect #quarkus

Вопрос:

Я хотел бы использовать свою аутентификацию с маскировкой ключей для пользовательского интерфейса Swagger, созданного Кваркусом. Это моя конфигурация в приложении.свойства:

 quarkus.swagger-ui.oauth2-redirect-url=http://localhost:8080/q/swagger-ui/oauth2-redirect.html
quarkus.smallrye-openapi.security-scheme=oidc
quarkus.smallrye-openapi.security-scheme-name=Keycloak
quarkus.smallrye-openapi.oidc-open-id-connect-url=http://localhost:8888/auth/realms/myrealm/.well-known/openid-configuration
quarkus.swagger-ui.oauth2-redirect-url=http://localhost:8080/q/swagger-ui
 

И мои контроллеры REST помечены так:

 @Path("/my-path")
@Authenticated
@SecurityRequirement(name = "Keycloak")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class MyController {

    @GET
    public List<MyObject> listAll() {
       // [...]
    }
}
 

Теперь, когда я нажимаю на кнопку «Авторизоваться» в Swagger, вместо того, чтобы перенаправляться на страницу входа в систему с ключом, я получаю всплывающее окно со всеми различными доступными разрешениями:

введите описание изображения здесь

Я не могу использовать ни один из них, так как мой ключ-ключ не разрешает прямые гранты.

Как я могу войти в систему с перенаправлением? Возможно ли это вообще?

Бонусный вопрос: Почему свойства swagger отображаются как неиспользуемые в IntelliJ?

введите описание изображения здесь

Ответ №1:

Хорошо, я нашел способ заставить это работать, хотя и с неявным потоком и выделенным вторым (публичным) клиентом в Keycloak.

Приложение Quarkus.свойства:

 # Swagger
quarkus.smallrye-openapi.security-scheme=oauth2-implicit
quarkus.smallrye-openapi.security-scheme-name=Keycloak
quarkus.smallrye-openapi.oauth2-implicit-authorization-url=http://localhost:8888/auth/realms/my-realm/protocol/openid-connect/auth
quarkus.swagger-ui.oauth2-redirect-url=http://localhost:8080/q/swagger-ui/oauth2-redirect.html
 

URL-адрес перенаправления должен быть oauth2-redirect.html

Теперь мне нужно только ввести идентификатор клиента:

введите описание изображения здесь

А затем я перенаправляюсь в Keycloak, а затем обратно в Swagger-UI. Надеюсь, это поможет любому, кто надеется достичь того же 👋 🏻