gpt4 book ai didi

java - Java 中的 Google Cloud Endpoints 硬编码客户端 ID 以及 useDatastoreForAdditionalConfig 的使用

转载 作者:行者123 更新时间:2023-11-30 07:29:37 24 4
gpt4 key购买 nike

我对使用 Java 的 Google Cloud Endpoint API 中客户端 ID 的硬编码性质有疑问。

我们有多个项目,其客户端 ID 与特定项目相关联,并且发现我们必须创建项目特定的 GAE 工件 (WAR)。这是一个不太理想的情况,因为我们使用微服务架构,并且将会出现人工制品的组合爆炸。

在尝试创建与环境无关的工件时,我们使用了 API 的一个记录不足的功能,即 useDatastoreForAdditionalConfig 属性。

为了说明这一点,而不是以下内容:

@Api(
name = "example",
version = "v1",
scopes = { "example-scope" },
clientIds = { "example-client-id" },
)

我们使用:

@Api( name = "example",
version = "v1",
useDatastoreForAdditionalConfig = AnnotationBoolean.TRUE
)

但是我们听说此功能将在即将发布的版本中被弃用。我的问题是,我们 build 文物的方式是否有问题?另外,如果我们的构建过程没有任何问题,Google 是否认为这是一个问题,并且他们是否有计划支持在 Java 中创建与项目无关的 GAE 工件?

最佳答案

经过 @saiyr 的一些指导,我们提出了这个问题的解决方案,并认为分享答案会有所帮助。

我们通过执行以下操作绕过了框架中的客户端 ID 断言:

import com.google.api.server.spi.Constant;
import com.google.api.server.spi.auth.GoogleOAuth2Authenticator;

@Api(
name = "example",
version = "v1",
scopes = { Constant.API_EMAIL_SCOPE },
clientIds = { Constant.SKIP_CLIENT_ID_CHECK },
authenticators = { ClientIdAuthenticator.class,GoogleOAuth2Authenticator.class }
)

然后我们创建了一个自定义身份 validator ,它负责客户端 ID 的编程断言:

public class ClientIdAuthenticator implements Authenticator { 
@Override
public User authenticate(HttpServletRequest httpServletRequest) {
// Lookup config from cloud datastore for requestURI
OAuthService service = OAuthServiceFactory.getOAuthService();
String clientId = service.getClientId(Constant.API_EMAIL_SCOPE);
// Assert clientId contained in datastore configuration
}
}

关于java - Java 中的 Google Cloud Endpoints 硬编码客户端 ID 以及 useDatastoreForAdditionalConfig 的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36329744/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com