Как добавить схемы безопасности OpenApi / Swagger в Apache Camels RouteBuilder.restConfiguration ()?
Я пытаюсь добавить
springdoc-openapi-ui
и
camel-springdoc-starter
. Работает не так уж и плохо.
На данный момент у меня проблемы с контекстным путем
'/camel'
и с отсутствующим
securitySchemes
.
Есть ли у кого-нибудь идеи, как это сделать
Как мне получить такую конфигурацию?
{
"openapi": "3.0.1",
"info": {
"title": "some title",
"version": "0.8.15-SNAPSHOT"
},
"servers": [
{
"url": "http://localhost"
}
],
"security": [
{
"Keycloak": []
}
],
"components": {
"schemas": {
...
},
"securitySchemes": {
"Keycloak": {
"type": "oauth2",
"name": "Keycloak",
"flows": {
"password": {
"tokenUrl": "http://localhost:8080/auth/realms/sample-app/protocol/openid-connect/token",
"scopes": {
"email": "",
"profile": ""
}
}
}
}
}
}
}
Используя что-то вроде этого:
@Override
public void configure() {
restConfiguration()
.component("servlet")
.apiProperty("api.title", "RDF-Pub Server")
.apiProperty("api.version", appVersion)
.apiProperty("api.components.securitySchemes.Keycloak.type", "oauth2")
.apiProperty("api.components.securitySchemes.Keycloak.name", "Keycloak")
.apiProperty("api.components.securitySchemes.Keycloak.flows.password.tokenUrl", "http://localhost:8080/auth/realms/example-app/protocol/openid-connect/token")
.apiProperty("api.components.securitySchemes.Keycloak.flows.password.scopes.email", "")
.apiProperty("api.components.securitySchemes.Keycloak.flows.password.scopes.profile", "");
}
1 ответ
нашел так:
private void routeCollection() {
rest()
.securityDefinitions()
.oauth2("local_keycloak", "Using a local keycloak instance")
.password("http://localhost:8080/auth/realms/sample-app/protocol/openid-connect/token")
.withScope("email", "accessing the email address")
.withScope("profile", "accessing the profile")
.end()
.end()
.get("/{owner}/{collection}")
.route()
.routeId("readCollection")
.process("processorA")
.process("processorB")
.endRest();
}
Я извлек материал методом:
private RestDefinition oauth2Rest() {
return rest()
.securityDefinitions()
.oauth2("local_keycloak", "Using a local keycloak instance")
.password("http://localhost:8080/auth/realms/sample-app/protocol/openid-connect/token")
.withScope("email", "accessing the email address")
.withScope("profile", "accessing the profile")
.end()
.end();
}
и вызвал его один раз в конфигурации:
@Override
public void configure() {
oauth2Rest();
// it tells Camel how to configure the REST service
restConfiguration()
...
Результат: