Java中的Bigtable身份验证

Posted

技术标签:

【中文标题】Java中的Bigtable身份验证【英文标题】:Bigtable authentication in java 【发布时间】:2015-12-01 11:58:54 【问题描述】:

我正在寻找一种在 Bigable 中进行身份验证的替代方法。 默认方法涉及环境变量,这与我有关。

我找到了GoogleCredential 类。它可以使用fromStream读取json密钥文件,但是如何使用GoogleCredential的新实例。 没有办法setApplicationDefault()。我需要以某种方式覆盖它。

HBase 代码对GoogleCredential 一无所知。

【问题讨论】:

CBT 代码确实知道凭据。不要设置配置变量。我们使用 applicationDefault 作为获取凭据的主要方法(即通过 gcloud auth 命令设置的凭据)。见github.com/GoogleCloudPlatform/cloud-bigtable-client/blob/… 和github.com/GoogleCloudPlatform/cloud-bigtable-client/blob/… 快速入门强制您使用环境变量,但我有一个拉取请求来删除该检查:github.com/GoogleCloudPlatform/cloud-bigtable-examples/pull/116 【参考方案1】:

编辑 2016 年 12 月 6 日

默认身份验证现在需要gcloud auth application-default login 才能使用您的用户帐户进行 API 调用。你也可以这样做:

$ gcloud iam service-accounts create my-account $ gcloud iam service-accounts keys create key.json --iam-account=my-account@my-project.iam.gserviceaccount.com $ export GOOGLE_APPLICATION_CREDENTIALS=key.json $ ./my_applicaiton.sh

旧文本

对于大多数情况,默认身份验证就足够了。如果您已经完成了 gcloud init 或它的前身 gcloud auth login,那么通常应该就足够了。 (编辑 - gcloud beta auth application-default login 现在用于 API 访问)。 在某些特殊情况下它不会出现,例如,如果您在 Docker 容器中本地运行。那么您的默认身份验证将无法正确设置,您需要设置GOOGLE_APPLICATION_CREDENTIALS

为了完整起见,如果您正在进行一些跨项目活动,也可以在您的hbase-site.xml 文件中设置google.bigtable.auth.json.keyfile 键,但这应该非常少见。

【讨论】:

hbase-site.xml 属性正是我所寻找的。它的值是对 FileInputStream 的馈送,因此可以使用相对路径。

以上是关于Java中的Bigtable身份验证的主要内容,如果未能解决你的问题,请参考以下文章

JAVA 中的 JWT 身份验证。

使用JAVA请求需要Basic身份验证的网页

AES GCM 解密绕过 JAVA 中的身份验证

使用 ppk 文件进行 java sftp 身份验证

Java WebApp 中的 CAC 身份验证

java- 哪种方式易于实现且安全,用于 Web 应用程序/Web 服务中的最终用户身份验证