【发布时间】:2019-03-06 18:37:14
【问题描述】:
上下文
我在 Google AppEngine 柔性环境中有一些服务通过 API 进行通信,同时我使用 IAP 来管理用户访问。我必须使用 Bearer JWT 令牌以编程方式对每个服务进行身份验证。
问题
在我的 Java 应用程序中,我使用 google 提供的代码来验证 IAP 服务,您可以在此处找到:https://cloud.google.com/iap/docs/authentication-howto#iap_make_request-java
问题出在这段代码中:
GoogleCredentials credentials =
GoogleCredentials.getApplicationDefault().createScoped(Collections.singleton(IAM_SCOPE));
// service account credentials are required to sign the jwt token
if (credentials == null || !(credentials instanceof ServiceAccountCredentials)) {
throw new Exception("Google credentials : service accounts credentials expected");
}
return (ServiceAccountCredentials) credentials;
createScoped 方法返回一个 ComputeEngineCredentials,而代码期待一个 ServiceAccountCredentials 响应对象。
欢迎所有建议。提前感谢有史以来最伟大的社区。p>
【问题讨论】:
-
这是因为我在柔性环境中运行我的 Java 服务:github.com/googleapis/google-auth-library-java/blob/master/… 但是,我们如何在 Java 柔性环境中进行身份验证??
-
我认为唯一的办法就是使用 json 服务帐户文件...
-
我遇到了同样的问题。如果我设置了指向我试图模拟的服务帐户的本地 json 凭据文件的环境变量集(即使它是计算引擎默认服务帐户),我能够获得正确的 ServiceAccountCredentials。这发生在计算引擎实例上。你能解决这个问题吗?
-
我没有尝试模拟身份验证,我只是尝试进行身份验证而无需提供 JSON 文件
标签: java google-app-engine google-cloud-platform google-iap