Конфигурация Swagger UI — OAuth 2.0 с идентификатором клиента Micronaut 2.5.1 и секретом клиента в отдельной конфигурации

#java #micronaut #micronaut-openapi

Вопрос:

Попытка выполнить конфигурацию swagger OAuth в последней версии Micronaut в соответствии с документацией micronuat https://micronaut-projects.github.io/micronaut-openapi/latest/guide/index.html#enableendpoints

 swagger-ui.oauth2RedirectUrl
swagger-ui.oauth2.clientId
swagger-ui.oauth2.clientSecret
swagger-ui.oauth2.realm
swagger-ui.oauth2.appName
swagger-ui.oauth2.scopeSeparator
swagger-ui.oauth2.scopes
swagger-ui.oauth2.additionalQueryStringParams
swagger-ui.oauth2.useBasicAuthenticationWithAccessCodeGrant
swagger-ui.oauth2.usePkceWithAuthorizationCodeGrant
 

При настройке любого из этих свойств Micronaut создаст не только swagger-ui/index.html файл, но также и swagger-ui/oauth2-redirect.html один

Я вижу, что он создал файл oauth2-redirect.html с приведенным ниже кодом

 tasks.withType(JavaCompile).all {
    options.forkOptions.jvmArgs << '-Dmicronaut.openapi.views.spec=swagger-ui.enabled=true,swagger-ui.theme=flattop,swagger-ui.oauth2RedirectUrl=http://localhost:8080/swagger-ui/oauth2-redirect.html,swagger-ui.oauth2.clientId=myClientId,swagger-ui.oauth2.scopes=openid,swagger-ui.oauth2.usePkceWithAuthorizationCodeGrant=true'
}
 

Для oauth2.ClientID, oauth2RedirectUrl и oauth2.clientSecret эти значения различаются для каждой среды PROD, TEST, DEV, UAT. Установив значение, подобное приведенному выше коду, его трудно настроить для каждой среды. Есть ли лучший способ сделать это?

Ответ №1:

В моем проекте это было решено путем создания различных файлов свойств для каждого env и управления компиляцией с помощью параметров

 tasks.withType(JavaCompile) {
  String openapiPropertyFile = 'openapi/openapi-dev.properties'
  if(project.hasProperty("openapiPropertyFile")){
      openapiPropertyFile = project.property('openapiPropertyFile')
  }
  options.fork = true
  options.forkOptions.jvmArgs << "-Dmicronaut.openapi.config.file=$openapiPropertyFile"
}
 

а потом вы строите его вот так

 $ sh ./gradlew clean jib -PopenapiPropertyFile=openapi/openapi-uat.properties -PimageSuffix=-uat
 

Хотя я хотел бы знать, как сделать эту компиляцию после публикации, потому что в моем случае это вынуждает создавать отдельные образы докеров, где я хотел бы иметь один, а затем монтировать эти свойства.