如何配置OAuth授权网址

问题描述 投票:2回答:1

我有使用MP-OpenAPI的是提供一种使用一个OpenLiberty UI OpenAPI的一个JAX-RS应用程序。我的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的用户界面的客户端id?

干杯。

open-liberty microprofile
1个回答
2
投票

To override the URL

关于向Microprofile OpenAPI Spec: 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也为我们提供覆盖tokenUrlrefreshUrl等。除了implicit中,OAuthFlows还提供了authorizationCodeclientCredentails和其他的方面。此外,OASFilter界面给我们更多的覆盖,例如APIResponsetagserver等,太。

Integrate with Microprofile: Config

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

我试图把URL配置到META-INF/microprofile-config.properties上面的例子,但没有实现,因为它给我一个java.util.NoSuchElementException

总之在environment variablesystem properties得以实现。

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

java -Dmy.url=http://some/url -jar  ....
© www.soinside.com 2019 - 2024. All rights reserved.