Как настроить URL авторизации OAuth - PullRequest
0 голосов
/ 28 января 2019

У меня есть приложение JAX-RS, использующее MP-OpenApi для предоставления интерфейса OpenAPI с использованием OpenLiberty.Мой API аутентифицирован с использованием неявного потока OAuth2.В настоящее время это настраивается с использованием аннотаций, например:

@SecurityScheme(
    securitySchemeName = JaxRsApplication.OAUTH2_SECURITY_SCHEME_NAME,
    type = SecuritySchemeType.OAUTH2,
    flows = @OAuthFlows(
            implicit = @OAuthFlow(
                    authorizationUrl = "https://auth-server/connect/authorize",
                    scopes = @OAuthScope(name = "some-api-scope", description = "Some API Scope"))))

Моя цель - настроить значение authorizationUrl в файле конфигурации вместо жесткого кодирования в аннотации, чтобы я мог настроить его для различных серверных сред, как:шаг CI / CD.Можно ли это сделать?

Кроме того, есть ли способ выбрать некоторые области и автоматически заполнить идентификатор клиента в пользовательском интерфейсе OpenAPI?

Приветствия.

1 Ответ

0 голосов
/ 05 февраля 2019

Для переопределения URL

Что касается спецификации Микропрофиля OpenAPI: OASFilter , мы можем переопределить authorizationUrl в следующем примере: -

package my.filter;

import org.eclipse.microprofile.config.Config;
import org.eclipse.microprofile.config.ConfigProvider;

import org.eclipse.microprofile.openapi.OASFilter;
import org.eclipse.microprofile.openapi.models.security.SecurityScheme;

public class DemoOASFilter implements OASFilter {
    @Override
    public SecurityScheme filterSecurityScheme(final SecurityScheme securityScheme) {
        Config config = ConfigProvider.getConfig();
        String myUrl  = config.getValue("my.url", 
                                        String.class);
        securityScheme.getFlows().
                       getImplicit().
                       setAuthorizationUrl(myUrl);

        return securityScheme;
    }
}

Затем поместите наше полное имя класса в качестве значения mp.openapi.filter в META-INF/microprofile-config.properties как в следующем примере

mp.openapi.filter=my.filter.DemoOASFilter
my.url=http://some/url

Не только для переопределения authorizationUrl, OAuthFlow также дает нам возможность переопределить tokenUrl, refreshUrl и так далее.Помимо implicit, OAuthFlows также предоставляет authorizationCode, clientCredentails и другие.Кроме того, интерфейс OASFilter позволяет нам переопределять больше, например, APIResponse, tag, server и т. Д.

Интеграция с Microprofile: Config

Config config = ConfigProvider.getConfig();
String myUrl  = config.getValue("my.url", 
                                String.class);

Я пытался поместить конфигурацию URL в META-INF/microprofile-config.properties, как в приведенном выше примере, но не достиг, поскольку он дает мне java.util.NoSuchElementException.

В любом случае environment variable и system propertiesдостигнуты.

docker run -it \
    --env my.url=http://some/url \
    ....

java -Dmy.url=http://some/url -jar  ....
...