如何配置 OAuth 授权 URL
How to configure OAuth authorization URL
我有一个使用 MP-OpenApi 的 JAX-RS 应用程序来提供一个使用 OpenLiberty 的 OpenAPI UI。我的 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 步骤中为不同的服务器环境配置它。这能做到吗?
此外,有没有办法 select 某些范围并在 OpenAPI UI 中自动填充客户端 ID?
干杯。
覆盖 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;
}
}
然后将我们的完全限定class名称作为mp.openapi.filter
的值放在META-INF/microprofile-config.properties
处,如下例
mp.openapi.filter=my.filter.DemoOASFilter
my.url=http://some/url
不仅覆盖了authorizationUrl
,OAuthFlow also provide us to override the tokenUrl
, refreshUrl
and so on. Apart from the implicit
, the OAuthFlows also provides the authorizationCode
, clientCredentails
and others as well. Furthermore the 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 ....
我有一个使用 MP-OpenApi 的 JAX-RS 应用程序来提供一个使用 OpenLiberty 的 OpenAPI UI。我的 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 步骤中为不同的服务器环境配置它。这能做到吗?
此外,有没有办法 select 某些范围并在 OpenAPI UI 中自动填充客户端 ID?
干杯。
覆盖 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;
}
}
然后将我们的完全限定class名称作为mp.openapi.filter
的值放在META-INF/microprofile-config.properties
处,如下例
mp.openapi.filter=my.filter.DemoOASFilter
my.url=http://some/url
不仅覆盖了authorizationUrl
,OAuthFlow also provide us to override the tokenUrl
, refreshUrl
and so on. Apart from the implicit
, the OAuthFlows also provides the authorizationCode
, clientCredentails
and others as well. Furthermore the 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 ....