Java 的开源身份验证客户端库。
该项目由 3 个工件组成:
目录:
快速入门
谷歌-auth-library-oauth2-http
谷歌身份验证库凭据
google-auth-library-appengine
CI状态
贡献
执照
如果您使用 Maven,请将其添加到您的 pom.xml 文件中(请注意,您可以将google-auth-library-oauth2-http
替换为google-auth-library-credentials
和google-auth-library-appengine
中的任意一个,具体取决于您的应用程序需求):
< dependency >
< groupId >com.google.auth groupId >
< artifactId >google-auth-library-oauth2-http artifactId >
< version >1.19.0 version >
dependency >
如果您使用 Gradle,请将其添加到您的依赖项中
implementation ' com.google.auth:google-auth-library-oauth2-http:1.19.0 '
如果您使用 SBT,请将其添加到您的依赖项中
libraryDependencies + = " com.google.auth " % " google-auth-library-oauth2-http " % " 1.19.0 "
该库提供了 Java 应用程序默认凭据的实现。应用程序默认凭据提供了一种获取授权凭据以用于调用 Google API 的简单方法。
它们最适合调用需要独立于用户的应用程序具有相同身份和授权级别的情况。这是授权调用 Cloud API 的推荐方法,特别是当您构建使用 Google Cloud Platform 的应用程序时。
应用程序默认凭证还支持工作负载身份联合,以便从非 Google Cloud 平台访问 Google Cloud 资源,包括 Amazon Web Services (AWS)、Microsoft Azure 或任何支持 OpenID Connect (OIDC) 的身份提供商。建议在非 Google Cloud 环境中使用工作负载身份联合,因为它无需在本地下载、管理和存储服务帐号私钥,请参阅:工作负载身份联合。
要获取应用程序默认凭据,请使用GoogleCredentials.getApplicationDefault()
或GoogleCredentials.getApplicationDefault(HttpTransportFactory)
。这些方法返回应用程序默认凭据,用于识别和授权整个应用程序。 (按顺序)搜索以下内容以查找应用程序默认凭据:
GOOGLE_APPLICATION_CREDENTIALS
环境变量指向的凭据文件gcloud auth application-default login
命令提供的凭据NO_GCE_CHECK=true
跳过此检查GCE_METADATA_HOST=
自定义GCE元数据服务器地址要从服务帐户 JSON 密钥获取凭据,请使用GoogleCredentials.fromStream(InputStream)
或GoogleCredentials.fromStream(InputStream, HttpTransportFactory)
。请注意,在访问令牌可用之前必须刷新凭据。
GoogleCredentials credentials = GoogleCredentials . fromStream ( new FileInputStream ( "/path/to/credentials.json" ));
credentials . refreshIfExpired ();
AccessToken token = credentials . getAccessToken ();
// OR
AccessToken token = credentials . refreshAccessToken ();
允许颁发给用户或服务帐户的凭据来冒充另一个用户或服务帐户。使用 ImpersonatedCredentials 的源项目必须启用“IAMCredentials”API。此外,目标服务账户必须向原始委托人授予“服务账户令牌创建者”IAM 角色。
String credPath = "/path/to/svc_account.json" ;
ServiceAccountCredentials sourceCredentials = ServiceAccountCredentials
. fromStream ( new FileInputStream ( credPath ));
sourceCredentials = ( ServiceAccountCredentials ) sourceCredentials
. createScoped ( Arrays . asList ( "https://www.googleapis.com/auth/iam" ));
ImpersonatedCredentials targetCredentials = ImpersonatedCredentials . create ( sourceCredentials ,
"[email protected]" , null ,
Arrays . asList ( "https://www.googleapis.com/auth/devstorage.read_only" ), 300 );
Storage storage_service = StorageOptions . newBuilder (). setProjectId ( "project-id" )
. setCredentials ( targetCredentials ). build (). getService ();
for ( Bucket b : storage_service . list (). iterateAll ())
System . out . println ( b );
使用工作负载身份联合,您的应用程序可以从 Amazon Web Services (AWS)、Microsoft Azure 或任何支持 OpenID Connect (OIDC) 的身份提供商访问 Google Cloud 资源。
传统上,在 Google Cloud 外部运行的应用程序使用服务帐号密钥来访问 Google Cloud 资源。使用身份联合,您的工作负载可以模拟服务帐户。这使得外部工作负载可以直接访问 Google Cloud 资源,从而消除与服务帐号密钥相关的维护和安全负担。
为了从 Amazon Web Services (AWS) 访问 Google Cloud 资源,需要满足以下要求:
请按照有关如何从 AWS 配置工作负载身份联合的详细说明进行操作。
配置AWS提供商以模拟服务账户后,需要生成凭证配置文件。与服务帐户凭据文件不同,生成的凭据配置文件包含非敏感元数据,用于指示库如何检索外部主题令牌并将其交换为服务帐户访问令牌。可以使用 gcloud CLI 生成配置文件。
要生成 AWS 工作负载身份配置,请运行以下命令:
# Generate an AWS configuration file.
gcloud iam workload-identity-pools create-cred-config
projects/ $PROJECT_NUMBER /locations/global/workloadIdentityPools/ $POOL_ID /providers/ $AWS_PROVIDER_ID
--service-account $SERVICE_ACCOUNT_EMAIL
--aws
--output-file /path/to/generated/config.json
其中需要替换以下变量:
$PROJECT_NUMBER
:Google Cloud 项目编号。$POOL_ID
:工作负载身份池 ID。$AWS_PROVIDER_ID
:AWS 提供商 ID。$SERVICE_ACCOUNT_EMAIL
:要模拟的服务帐户的电子邮件。这会在指定的输出文件中生成配置文件。
如果您使用的是 AWS IMDSv2,则需要将附加标志--enable-imdsv2
添加到gcloud iam workload-identity-pools create-cred-config
命令中:
gcloud iam workload-identity-pools create-cred-config
projects/ $PROJECT_NUMBER /locations/global/workloadIdentityPools/ $POOL_ID /providers/ $AWS_PROVIDER_ID
--service-account $SERVICE_ACCOUNT_EMAIL
--aws
--output-file /path/to/generated/config.json
--enable-imdsv2
您现在可以使用 Auth 库从 AWS 调用 Google Cloud 资源。
为了从 Microsoft Azure 访问 Google Cloud 资源,需要满足以下要求:
请遵循有关如何从 Microsoft Azure 配置工作负载身份联合的详细说明。
配置 Azure 提供程序以模拟服务帐户后,需要生成凭据配置文件。与服务帐户凭据文件不同,生成的凭据配置文件包含非敏感元数据,用于指示库如何检索外部主题令牌并将其交换为服务帐户访问令牌。可以使用 gcloud CLI 生成配置文件。
要生成 Azure 工作负载身份配置,请运行以下命令:
# Generate an Azure configuration file.
gcloud iam workload-identity-pools create-cred-config
projects/ $PROJECT_NUMBER /locations/global/workloadIdentityPools/ $POOL_ID /providers/ $AZURE_PROVIDER_ID
--service-account $SERVICE_ACCOUNT_EMAIL
--azure
--output-file /path/to/generated/config.json
其中需要替换以下变量:
$PROJECT_NUMBER
:Google Cloud 项目编号。$POOL_ID
:工作负载身份池 ID。$AZURE_PROVIDER_ID
:Azure 提供商 ID。$SERVICE_ACCOUNT_EMAIL
:要模拟的服务帐户的电子邮件。这会在指定的输出文件中生成配置文件。
您现在可以使用 Auth 库从 Azure 调用 Google Cloud 资源。
为了从支持 OpenID Connect (OIDC) 的身份提供商访问 Google Cloud 资源,需要满足以下要求:
请遵循有关如何从 OIDC 身份提供商配置工作负载身份联合的详细说明。
配置 OIDC 提供程序以模拟服务帐户后,需要生成凭证配置文件。与服务帐户凭据文件不同,生成的凭据配置文件包含非敏感元数据,用于指示库如何检索外部主题令牌并将其交换为服务帐户访问令牌。可以使用 gcloud CLI 生成配置文件。
对于 OIDC 提供程序,Auth 库可以从本地文件位置(源自文件的凭据)或本地服务器(源自 URL 的凭据)检索 OIDC 令牌。
文件源凭证对于文件源凭证,后台进程需要在过期之前使用新的 OIDC 令牌不断刷新文件位置。对于具有一小时生命周期的令牌,需要每小时在文件中更新一次令牌。令牌可以直接存储为纯文本或 JSON 格式。
要生成文件来源的 OIDC 配置,请运行以下命令:
# Generate an OIDC configuration file for file-sourced credentials.
gcloud iam workload-identity-pools create-cred-config
projects/ $PROJECT_NUMBER /locations/global/workloadIdentityPools/ $POOL_ID /providers/ $OIDC_PROVIDER_ID
--service-account $SERVICE_ACCOUNT_EMAIL
--credential-source-file $PATH_TO_OIDC_ID_TOKEN
# Optional arguments for file types. Default is "text":
# --credential-source-type "json"
# Optional argument for the field that contains the OIDC credential.
# This is required for json.
# --credential-source-field-name "id_token"
--output-file /path/to/generated/config.json
其中需要替换以下变量:
$PROJECT_NUMBER
:Google Cloud 项目编号。$POOL_ID
:工作负载身份池 ID。$OIDC_PROVIDER_ID
:OIDC 提供商 ID。$SERVICE_ACCOUNT_EMAIL
:要模拟的服务帐户的电子邮件。$PATH_TO_OIDC_ID_TOKEN
:用于检索 OIDC 令牌的文件路径。这会在指定的输出文件中生成配置文件。
来自 URL 的凭据对于来自 URL 的凭据,本地服务器需要托管 GET 端点以返回 OIDC 令牌。响应可以是纯文本或 JSON。还可以指定其他必需的请求标头。
要生成源自 URL 的 OIDC 工作负载身份配置,请运行以下命令:
# Generate an OIDC configuration file for URL-sourced credentials.
gcloud iam workload-identity-pools create-cred-config
projects/ $PROJECT_NUMBER /locations/global/workloadIdentityPools/ $POOL_ID /providers/ $OIDC_PROVIDER_ID
--service-account $SERVICE_ACCOUNT_EMAIL
--credential-source-url $URL_TO_GET_OIDC_TOKEN
--credential-source-headers $HEADER_KEY = $HEADER_VALUE
# Optional arguments for file types. Default is "text":
# --credential-source-type "json"
# Optional argument for the field that contains the OIDC credential.
# This is required for json.
# --credential-source-field-name "id_token"
--output-file /path/to/generated/config.json
其中需要替换以下变量:
$PROJECT_NUMBER
:Google Cloud 项目编号。$POOL_ID
:工作负载身份池 ID。$OIDC_PROVIDER_ID
:OIDC 提供商 ID。$SERVICE_ACCOUNT_EMAIL
:要模拟的服务帐户的电子邮件。$URL_TO_GET_OIDC_TOKEN
:调用以检索 OIDC 令牌的本地服务器端点的 URL。$HEADER_KEY
和$HEADER_VALUE
:将 GET 请求传递到$URL_TO_GET_OIDC_TOKEN
的附加标头键/值对,例如Metadata-Flavor=Google
。您现在可以使用 Auth 库从 OIDC 提供商调用 Google Cloud 资源。
源自可执行文件的凭证对于源自可执行文件的凭证,本地可执行文件用于检索第 3 方令牌。可执行文件必须处理向 stdout 提供有效、未过期的 OIDC ID 令牌或 JSON 格式的 SAML 断言。
要使用源自可执行文件的凭据,必须将GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES
环境变量设置为1
。
要生成源自可执行文件的工作负载身份配置,请运行以下命令:
# Generate a configuration file for executable-sourced credentials.
gcloud iam workload-identity-pools create-cred-config
projects/ $PROJECT_NUMBER /locations/global/workloadIdentityPools/ $POOL_ID /providers/ $PROVIDER_ID
--service-account= $SERVICE_ACCOUNT_EMAIL
--subject-token-type= $SUBJECT_TOKEN_TYPE
# The absolute path for the program, including arguments.
# e.g. --executable-command="/path/to/command --foo=bar"
--executable-command= $EXECUTABLE_COMMAND
# Optional argument for the executable timeout. Defaults to 30s.
# --executable-timeout-millis=$EXECUTABLE_TIMEOUT
# Optional argument for the absolute path to the executable output file.
# See below on how this argument impacts the library behaviour.
# --executable-output-file=$EXECUTABLE_OUTPUT_FILE
--output-file /path/to/generated/config.json
其中需要替换以下变量:
$PROJECT_NUMBER
:Google Cloud 项目编号。$POOL_ID
:工作负载身份池 ID。$PROVIDER_ID
:OIDC 或 SAML 提供商 ID。$SERVICE_ACCOUNT_EMAIL
:要模拟的服务帐户的电子邮件。$SUBJECT_TOKEN_TYPE
:主题令牌类型。$EXECUTABLE_COMMAND
:要运行的完整命令,包括参数。必须是程序的绝对路径。 --executable-timeout-millis
标志是可选的。这是身份验证库等待可执行文件完成的持续时间(以毫秒为单位)。未提供时默认为 30 秒。允许的最大值为 2 分钟。最短时间为 5 秒。
--executable-output-file
标志是可选的。如果提供,文件路径必须指向可执行文件生成的 3PI 凭证响应。这对于缓存凭据很有用。通过指定此路径,Auth 库将在运行可执行文件之前首先检查其是否存在。通过缓存对此文件的可执行 JSON 响应,可以提高性能,因为它避免了在输出文件中缓存的凭据过期之前运行可执行文件的需要。可执行文件必须处理对此文件的写入 - 身份验证库将仅尝试从此位置读取。文件中内容的格式应与下面所示的可执行文件所需的 JSON 格式匹配。
为了检索第 3 方令牌,库将使用指定的命令调用可执行文件。可执行文件的输出必须遵循下面指定的响应格式。它必须将响应输出到标准输出。
成功的可执行 OIDC 响应示例:
{
"version" : 1 ,
"success" : true ,
"token_type" : " urn:ietf:params:oauth:token-type:id_token " ,
"id_token" : " HEADER.PAYLOAD.SIGNATURE " ,
"expiration_time" : 1620499962
}
成功的可执行 SAML 响应示例:
{
"version" : 1 ,
"success" : true ,
"token_type" : " urn:ietf:params:oauth:token-type:saml2 " ,
"saml_response" : " ... " ,
"expiration_time" : 1620499962
}
可执行错误响应示例:
{
"version" : 1 ,
"success" : false ,
"code" : " 401 " ,
"message" : " Caller not authorized. "
}
这些都是错误响应的必填字段。库将使用代码和消息字段作为引发异常的一部分。
对于成功的响应,仅当在凭证配置中指定输出文件时才需要expiration_time
字段。
响应格式字段摘要:
version
:JSON 输出的版本。目前仅支持版本 1。success
:为 true 时,响应必须包含第 3 方令牌和令牌类型。如果在凭证配置中指定了输出文件,则响应还必须包含expiration_time 字段。可执行文件还必须以退出代码 0 退出。如果为 false,则响应必须包含错误代码和消息字段,并以非零值退出。token_type
:第 3 方主题令牌类型。必须是urn:ietf:params:oauth:token-type:jwt 、 urn:ietf:params:oauth:token-type:id_token或urn:ietf:params:oauth:token-type:saml2 。id_token
:第 3 方 OIDC 令牌。saml_response
:第 3 方 SAML 响应。expiration_time
:第 3 方主题令牌过期时间(以秒为单位)(Unix 纪元时间)。code
:错误代码字符串。message
:错误消息。所有响应类型都必须包含version
和success
字段。
token_type
以及id_token
或saml_response
之一。如果在凭证配置中指定了输出文件,则expiration_time
字段也必须存在。code
和message
字段。运行可执行文件时,该库将填充以下环境变量:
GOOGLE_EXTERNAL_ACCOUNT_AUDIENCE
:凭证配置中的受众字段。始终存在。GOOGLE_EXTERNAL_ACCOUNT_TOKEN_TYPE
:此预期的主题令牌类型。始终存在。GOOGLE_EXTERNAL_ACCOUNT_IMPERSONATED_EMAIL
:服务帐户电子邮件。仅在使用服务帐户模拟时出现。GOOGLE_EXTERNAL_ACCOUNT_OUTPUT_FILE
:凭证配置的输出文件位置。仅在凭证配置中指定时才存在。可执行文件可以使用这些环境变量来避免对这些值进行硬编码。
强烈建议采取以下安全措施:
鉴于使用可执行来源凭证的复杂性,建议使用现有支持的机制(文件来源/URL 来源)来提供第 3 方凭证,除非它们不满足您的特定要求。
您现在可以使用 Auth 库从 OIDC 或 SAML 提供商调用 Google Cloud 资源。
在构建 IdentityPoolCredentials 时可以使用 IdentityPoolSubjectTokenSupplier 的自定义实现来提供可交换 GCP 访问令牌的主题令牌。当 GCP 凭证调用时,供应商必须返回有效的、未过期的主题令牌。
IdentityPoolCredentials 不会缓存返回的令牌,因此应在令牌提供者中实现缓存逻辑,以防止对同一主题令牌的多个请求。
import java . io . IOException ;
public class CustomTokenSupplier implements IdentityPoolSubjectTokenSupplier {
@ Override
public String getSubjectToken ( ExternalAccountSupplierContext context ) throws IOException {
// Any call to the supplier will pass a context object with the requested
// audience and subject token type.
string audience = context . getAudience ();
string tokenType = context . getSubjectTokenType ();
try {
// Return a valid, unexpired token for the requested audience and token type.
// Note that IdentityPoolCredentials do not cache the subject token so
// any caching logic needs to be implemented in the token supplier.
return retrieveToken ( audience , tokenType );
} catch ( Exception e ) {
// If token is unavailable, throw IOException.
throw new IOException ( e );
}
}
private String retrieveToken ( string tokenType , string audience ) {
// Retrieve a subject token of the requested type for the requested audience.
}
}
CustomTokenSupplier tokenSupplier = new CustomTokenSupplier ();
IdentityPoolCredentials identityPoolCredentials =
IdentityPoolCredentials . newBuilder ()
. setSubjectTokenSupplier ( tokenSupplier ) // Sets the token supplier.
. setAudience (...) // Sets the GCP audience.
. setSubjectTokenType ( SubjectTokenTypes . JWT ) // Sets the subject token type.
. build ();
受众所在位置: //iam.googleapis.com/projects/$PROJECT_NUMBER/locations/global/workloadIdentityPools/$WORKLOAD_POOL_ID/providers/$PROVIDER_ID
其中需要替换以下变量:
$PROJECT_NUMBER
:Google Cloud 项目编号。$WORKLOAD_POOL_ID
:工作负载身份池 ID。$PROVIDER_ID
:提供商 ID。还可以通过使用 gcloud CLI 生成凭证配置文件来找到受众、服务帐户模拟 URL 和任何其他构建器字段的值。
初始化 AwsCredentials 时可以提供 AwsSecurityCredentialsSupplier 的自定义实现。如果提供,AwsCredentials 实例将按照供应商的要求检索 AWS 安全凭证以换取 GCP 访问令牌。当 GCP 凭证调用时,供应商必须返回有效、未过期的 AWS 安全凭证。
AwsCredentials 不会缓存返回的 AWS 安全凭证或区域,因此应在供应商中实现缓存逻辑,以防止对同一资源的多个请求。
class CustomAwsSupplier implements AwsSecurityCredentialsSupplier {
@ Override
AwsSecurityCredentials getAwsSecurityCredentials ( ExternalAccountSupplierContext context ) throws IOException {
// Any call to the supplier will pass a context object with the requested
// audience.
string audience = context . getAudience ();
try {
// Return valid, unexpired AWS security credentials for the requested audience.
// Note that AwsCredentials do not cache the AWS security credentials so
// any caching logic needs to be implemented in the credentials' supplier.
return retrieveAwsSecurityCredentials ( audience );
} catch ( Exception e ) {
// If credentials are unavailable, throw IOException.
throw new IOException ( e );
}
}
@ Override
String getRegion ( ExternalAccountSupplierContext context ) throws IOException {
try {
// Return a valid AWS region. i.e. "us-east-2".
// Note that AwsCredentials do not cache the region so
// any caching logic needs to be implemented in the credentials' supplier.
return retrieveAwsRegion ();
} catch ( Exception e ) {
// If region is unavailable, throw IOException.
throw new IOException ( e );
}
}
private AwsSecurityCredentials retrieveAwsSecurityCredentials ( string audience ) {
// Retrieve Aws security credentials for the requested audience.
}
private String retrieveAwsRegion () {
// Retrieve current AWS region.
}
}
CustomAwsSupplier awsSupplier = new CustomAwsSupplier ();
AwsCredentials credentials = AwsCredentials . newBuilder ()
. setSubjectTokenType ( SubjectTokenTypes . AWS4 ) // Sets the subject token type.
. setAudience (...) // Sets the GCP audience.
. setAwsSecurityCredentialsSupplier ( supplier ) // Sets the supplier.
. build ();
受众所在位置: //iam.googleapis.com/projects/$PROJECT_NUMBER/locations/global/workloadIdentityPools/$WORKLOAD_POOL_ID/providers/$PROVIDER_ID
其中需要替换以下变量:
$PROJECT_NUMBER
:Google Cloud 项目编号。$WORKLOAD_POOL_ID
:工作负载身份池 ID。$PROVIDER_ID
:提供商 ID。受众、服务帐户模拟 URL 和任何其他构建器字段的值也可以通过使用 gcloud CLI 生成凭证配置文件来找到。
使用服务帐户模拟通过工作负载身份联合创建凭据配置时,您可以提供可选参数来配置服务帐户访问令牌生存期。
要生成具有可配置令牌生命周期的配置,请运行以下命令(本示例使用 AWS 配置,但可以为所有工作负载身份联合提供商配置令牌生命周期):
# Generate an AWS configuration file with configurable token lifetime.
gcloud iam workload-identity-pools create-cred-config
projects/ $PROJECT_NUMBER /locations/global/workloadIdentityPools/ $POOL_ID /providers/ $AWS_PROVIDER_ID
--service-account $SERVICE_ACCOUNT_EMAIL
--aws
--output-file /path/to/generated/config.json
--service-account-token-lifetime-seconds $TOKEN_LIFETIME
其中需要替换以下变量:
$PROJECT_NUMBER
:Google Cloud 项目编号。$POOL_ID
:工作负载身份池 ID。$AWS_PROVIDER_ID
:AWS 提供商 ID。$SERVICE_ACCOUNT_EMAIL
:要模拟的服务帐户的电子邮件。$TOKEN_LIFETIME
:服务帐户访问令牌所需的生命周期(以秒为单位)。 service-account-token-lifetime-seconds
标志是可选的。如果未提供,则默认为一小时。允许的最小值为 600(10 分钟),允许的最大值为 43200(12 小时)。如果需要大于一小时的生命周期,则必须将服务帐户添加为强制执行constraints/iam.allowServiceAccountCredentialLifetimeExtension
约束的组织策略中的允许值。
请注意,配置较短的生命周期(例如 10 分钟)将导致库每 10 分钟启动一次整个令牌交换流程,即使第 3 方令牌未过期,这也会调用第 3 方令牌提供者。
员工身份联合允许您使用外部身份提供商 (IdP) 对使用 IAM 的员工(一组用户,例如员工、合作伙伴和承包商)进行身份验证和授权,以便用户可以访问 Google Cloud 服务。劳动力身份联合扩展了 Google Cloud 的身份功能,以支持无同步、基于属性的单点登录。
借助员工身份联合,您的员工可以使用支持 OpenID Connect (OIDC) 或 SAML 2.0 的外部身份提供商 (IdP)(例如 Azure Active Directory (Azure AD)、Active Directory 联合身份验证服务 (AD FS)、Okta)访问 Google Cloud 资源,以及其他。
为了从支持 OpenID Connect (OIDC) 的身份提供商访问 Google Cloud 资源,需要满足以下要求:
请遵循有关如何配置员工身份联合的详细说明。
配置 OIDC 或 SAML 2.0 提供程序后,需要生成凭证配置文件。生成的凭证配置文件包含非敏感元数据,用于指示库如何检索外部主题令牌并将其交换为 GCP 访问令牌。可以使用 gcloud CLI 生成配置文件。
Auth 库可以从本地文件位置(源自文件的凭据)、本地服务器(源自 URL 的凭据)或通过调用可执行文件(源自可执行的凭据)来检索外部主题令牌。
文件源凭证对于文件源凭证,后台进程需要在过期之前使用新的主题令牌不断刷新文件位置。对于具有一小时生命周期的令牌,需要每小时在文件中更新一次令牌。令牌可以直接存储为纯文本或 JSON 格式。
要生成文件来源的 OIDC 配置,请运行以下命令:
# Generate an OIDC configuration file for file-sourced credentials.
gcloud iam workforce-pools create-cred-config
locations/global/workforcePools/ $WORKFORCE_POOL_ID /providers/ $PROVIDER_ID
--subject-token-type=urn:ietf:params:oauth:token-type:id_token
--credential-source-file= $PATH_TO_OIDC_ID_TOKEN
--workforce-pool-user-project= $WORKFORCE_POOL_USER_PROJECT
# Optional arguments for file types. Default is "text":
# --credential-source-type "json"
# Optional argument for the field that contains the OIDC credential.
# This is required for json.
# --credential-source-field-name "id_token"
--output-file=/path/to/generated/config.json
其中需要替换以下变量:
$WORKFORCE_POOL_ID
:劳动力池 ID。$PROVIDER_ID
:提供商 ID。$PATH_TO_OIDC_ID_TOKEN
:用于检索 OIDC 令牌的文件路径。$WORKFORCE_POOL_USER_PROJECT
:与劳动力池用户项目关联的项目编号。要生成源自文件的 SAML 配置,请运行以下命令:
# Generate a SAML configuration file for file-sourced credentials.
gcloud iam workforce-pools create-cred-config
locations/global/workforcePools/ $WORKFORCE_POOL_ID /providers/ $PROVIDER_ID
--credential-source-file= $PATH_TO_SAML_ASSERTION
--subject-token-type=urn:ietf:params:oauth:token-type:saml2
--workforce-pool-user-project= $WORKFORCE_POOL_USER_PROJECT
--output-file=/path/to/generated/config.json
其中需要替换以下变量:
$WORKFORCE_POOL_ID
:劳动力池 ID。$PROVIDER_ID
:提供商 ID。$PATH_TO_SAML_ASSERTION
:用于检索 Base64 编码的 SAML 断言的文件路径。$WORKFORCE_POOL_USER_PROJECT
:与劳动力池用户项目关联的项目编号。这些命令在指定的输出文件中生成配置文件。
来自 URL 的凭据对于来自 URL 的凭据,本地服务器需要托管 GET 端点以返回 OIDC 令牌。响应可以是纯文本或 JSON。还可以指定其他必需的请求标头。
要生成源自 URL 的 OIDC 员工身份配置,请运行以下命令:
# Generate an OIDC configuration file for URL-sourced credentials.
gcloud iam workforce-pools create-cred-config
locations/global/workforcePools/ $WORKFORCE_POOL_ID /providers/ $PROVIDER_ID
--subject-token-type=urn:ietf:params:oauth:token-type:id_token
--credential-source-url= $URL_TO_RETURN_OIDC_ID_TOKEN
--credential-source-headers $HEADER_KEY = $HEADER_VALUE
--workforce-pool-user-project= $WORKFORCE_POOL_USER_PROJECT
--output-file=/path/to/generated/config.json
其中需要替换以下变量:
$WORKFORCE_POOL_ID
:劳动力池 ID。$PROVIDER_ID
:提供商 ID。$URL_TO_RETURN_OIDC_ID_TOKEN
:本地服务器端点的 URL。$HEADER_KEY
和$HEADER_VALUE
:将 GET 请求传递到$URL_TO_GET_OIDC_TOKEN
的附加标头键/值对,例如Metadata-Flavor=Google
。$WORKFORCE_POOL_USER_PROJECT
:与劳动力池用户项目关联的项目编号。要生成源自 URL 的 SAML 配置,请运行以下命令:
# Generate a SAML configuration file for file-sourced credentials.
gcloud iam workforce-pools create-cred-config
locations/global/workforcePools/ $WORKFORCE_POOL_ID /providers/ $PROVIDER_ID
--subject-token-type=urn:ietf:params:oauth:token-type:saml2
--credential-source-url= $URL_TO_GET_SAML_ASSERTION
--credential-source-headers