370 lines
13 KiB
Ruby
370 lines
13 KiB
Ruby
# Copyright 2015 Google Inc.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
require 'date'
|
|
require 'google/apis/core/base_service'
|
|
require 'google/apis/core/json_representation'
|
|
require 'google/apis/core/hashable'
|
|
require 'google/apis/errors'
|
|
|
|
module Google
|
|
module Apis
|
|
module IamcredentialsV1
|
|
|
|
#
|
|
class GenerateAccessTokenRequest
|
|
include Google::Apis::Core::Hashable
|
|
|
|
# The sequence of service accounts in a delegation chain. Each service
|
|
# account must be granted the `roles/iam.serviceAccountTokenCreator` role
|
|
# on its next service account in the chain. The last service account in the
|
|
# chain must be granted the `roles/iam.serviceAccountTokenCreator` role
|
|
# on the service account that is specified in the `name` field of the
|
|
# request.
|
|
# The delegates must have the following format:
|
|
# `projects/-/serviceAccounts/`ACCOUNT_EMAIL_OR_UNIQUEID``
|
|
# Corresponds to the JSON property `delegates`
|
|
# @return [Array<String>]
|
|
attr_accessor :delegates
|
|
|
|
# The desired lifetime duration of the access token in seconds.
|
|
# Must be set to a value less than or equal to 3600 (1 hour). If a value is
|
|
# not specified, the token's lifetime will be set to a default value of one
|
|
# hour.
|
|
# Corresponds to the JSON property `lifetime`
|
|
# @return [String]
|
|
attr_accessor :lifetime
|
|
|
|
# Code to identify the scopes to be included in the OAuth 2.0 access token.
|
|
# See https://developers.google.com/identity/protocols/googlescopes for more
|
|
# information.
|
|
# At least one value required.
|
|
# Corresponds to the JSON property `scope`
|
|
# @return [Array<String>]
|
|
attr_accessor :scope
|
|
|
|
def initialize(**args)
|
|
update!(**args)
|
|
end
|
|
|
|
# Update properties of this object
|
|
def update!(**args)
|
|
@delegates = args[:delegates] if args.key?(:delegates)
|
|
@lifetime = args[:lifetime] if args.key?(:lifetime)
|
|
@scope = args[:scope] if args.key?(:scope)
|
|
end
|
|
end
|
|
|
|
#
|
|
class GenerateAccessTokenResponse
|
|
include Google::Apis::Core::Hashable
|
|
|
|
# The OAuth 2.0 access token.
|
|
# Corresponds to the JSON property `accessToken`
|
|
# @return [String]
|
|
attr_accessor :access_token
|
|
|
|
# Token expiration time.
|
|
# The expiration time is always set.
|
|
# Corresponds to the JSON property `expireTime`
|
|
# @return [String]
|
|
attr_accessor :expire_time
|
|
|
|
def initialize(**args)
|
|
update!(**args)
|
|
end
|
|
|
|
# Update properties of this object
|
|
def update!(**args)
|
|
@access_token = args[:access_token] if args.key?(:access_token)
|
|
@expire_time = args[:expire_time] if args.key?(:expire_time)
|
|
end
|
|
end
|
|
|
|
#
|
|
class GenerateIdTokenRequest
|
|
include Google::Apis::Core::Hashable
|
|
|
|
# The audience for the token, such as the API or account that this token
|
|
# grants access to.
|
|
# Corresponds to the JSON property `audience`
|
|
# @return [String]
|
|
attr_accessor :audience
|
|
|
|
# The sequence of service accounts in a delegation chain. Each service
|
|
# account must be granted the `roles/iam.serviceAccountTokenCreator` role
|
|
# on its next service account in the chain. The last service account in the
|
|
# chain must be granted the `roles/iam.serviceAccountTokenCreator` role
|
|
# on the service account that is specified in the `name` field of the
|
|
# request.
|
|
# The delegates must have the following format:
|
|
# `projects/-/serviceAccounts/`ACCOUNT_EMAIL_OR_UNIQUEID``
|
|
# Corresponds to the JSON property `delegates`
|
|
# @return [Array<String>]
|
|
attr_accessor :delegates
|
|
|
|
# Include the service account email in the token. If set to `true`, the
|
|
# token will contain `email` and `email_verified` claims.
|
|
# Corresponds to the JSON property `includeEmail`
|
|
# @return [Boolean]
|
|
attr_accessor :include_email
|
|
alias_method :include_email?, :include_email
|
|
|
|
def initialize(**args)
|
|
update!(**args)
|
|
end
|
|
|
|
# Update properties of this object
|
|
def update!(**args)
|
|
@audience = args[:audience] if args.key?(:audience)
|
|
@delegates = args[:delegates] if args.key?(:delegates)
|
|
@include_email = args[:include_email] if args.key?(:include_email)
|
|
end
|
|
end
|
|
|
|
#
|
|
class GenerateIdTokenResponse
|
|
include Google::Apis::Core::Hashable
|
|
|
|
# The OpenId Connect ID token.
|
|
# Corresponds to the JSON property `token`
|
|
# @return [String]
|
|
attr_accessor :token
|
|
|
|
def initialize(**args)
|
|
update!(**args)
|
|
end
|
|
|
|
# Update properties of this object
|
|
def update!(**args)
|
|
@token = args[:token] if args.key?(:token)
|
|
end
|
|
end
|
|
|
|
#
|
|
class GenerateIdentityBindingAccessTokenRequest
|
|
include Google::Apis::Core::Hashable
|
|
|
|
# Required. Input token.
|
|
# Must be in JWT format according to
|
|
# RFC7523 (https://tools.ietf.org/html/rfc7523)
|
|
# and must have 'kid' field in the header.
|
|
# Supported signing algorithms: RS256 (RS512, ES256, ES512 coming soon).
|
|
# Mandatory payload fields (along the lines of RFC 7523, section 3):
|
|
# - iss: issuer of the token. Must provide a discovery document at
|
|
# $iss/.well-known/openid-configuration . The document needs to be
|
|
# formatted according to section 4.2 of the OpenID Connect Discovery
|
|
# 1.0 specification.
|
|
# - iat: Issue time in seconds since epoch. Must be in the past.
|
|
# - exp: Expiration time in seconds since epoch. Must be less than 48 hours
|
|
# after iat. We recommend to create tokens that last shorter than 6
|
|
# hours to improve security unless business reasons mandate longer
|
|
# expiration times. Shorter token lifetimes are generally more secure
|
|
# since tokens that have been exfiltrated by attackers can be used for
|
|
# a shorter time. you can configure the maximum lifetime of the
|
|
# incoming token in the configuration of the mapper.
|
|
# The resulting Google token will expire within an hour or at "exp",
|
|
# whichever is earlier.
|
|
# - sub: JWT subject, identity asserted in the JWT.
|
|
# - aud: Configured in the mapper policy. By default the service account
|
|
# email.
|
|
# Claims from the incoming token can be transferred into the output token
|
|
# accoding to the mapper configuration. The outgoing claim size is limited.
|
|
# Outgoing claims size must be less than 4kB serialized as JSON without
|
|
# whitespace.
|
|
# Example header:
|
|
# `
|
|
# "alg": "RS256",
|
|
# "kid": "92a4265e14ab04d4d228a48d10d4ca31610936f8"
|
|
# `
|
|
# Example payload:
|
|
# `
|
|
# "iss": "https://accounts.google.com",
|
|
# "iat": 1517963104,
|
|
# "exp": 1517966704,
|
|
# "aud":
|
|
# "https://iamcredentials.googleapis.com/google.iam.credentials.v1.CloudGaia",
|
|
# "sub": "113475438248934895348",
|
|
# "my_claims": `
|
|
# "additional_claim": "value"
|
|
# `
|
|
# `
|
|
# Corresponds to the JSON property `jwt`
|
|
# @return [String]
|
|
attr_accessor :jwt
|
|
|
|
# Code to identify the scopes to be included in the OAuth 2.0 access token.
|
|
# See https://developers.google.com/identity/protocols/googlescopes for more
|
|
# information.
|
|
# At least one value required.
|
|
# Corresponds to the JSON property `scope`
|
|
# @return [Array<String>]
|
|
attr_accessor :scope
|
|
|
|
def initialize(**args)
|
|
update!(**args)
|
|
end
|
|
|
|
# Update properties of this object
|
|
def update!(**args)
|
|
@jwt = args[:jwt] if args.key?(:jwt)
|
|
@scope = args[:scope] if args.key?(:scope)
|
|
end
|
|
end
|
|
|
|
#
|
|
class GenerateIdentityBindingAccessTokenResponse
|
|
include Google::Apis::Core::Hashable
|
|
|
|
# The OAuth 2.0 access token.
|
|
# Corresponds to the JSON property `accessToken`
|
|
# @return [String]
|
|
attr_accessor :access_token
|
|
|
|
# Token expiration time.
|
|
# The expiration time is always set.
|
|
# Corresponds to the JSON property `expireTime`
|
|
# @return [String]
|
|
attr_accessor :expire_time
|
|
|
|
def initialize(**args)
|
|
update!(**args)
|
|
end
|
|
|
|
# Update properties of this object
|
|
def update!(**args)
|
|
@access_token = args[:access_token] if args.key?(:access_token)
|
|
@expire_time = args[:expire_time] if args.key?(:expire_time)
|
|
end
|
|
end
|
|
|
|
#
|
|
class SignBlobRequest
|
|
include Google::Apis::Core::Hashable
|
|
|
|
# The sequence of service accounts in a delegation chain. Each service
|
|
# account must be granted the `roles/iam.serviceAccountTokenCreator` role
|
|
# on its next service account in the chain. The last service account in the
|
|
# chain must be granted the `roles/iam.serviceAccountTokenCreator` role
|
|
# on the service account that is specified in the `name` field of the
|
|
# request.
|
|
# The delegates must have the following format:
|
|
# `projects/-/serviceAccounts/`ACCOUNT_EMAIL_OR_UNIQUEID``
|
|
# Corresponds to the JSON property `delegates`
|
|
# @return [Array<String>]
|
|
attr_accessor :delegates
|
|
|
|
# The bytes to sign.
|
|
# Corresponds to the JSON property `payload`
|
|
# NOTE: Values are automatically base64 encoded/decoded in the client library.
|
|
# @return [String]
|
|
attr_accessor :payload
|
|
|
|
def initialize(**args)
|
|
update!(**args)
|
|
end
|
|
|
|
# Update properties of this object
|
|
def update!(**args)
|
|
@delegates = args[:delegates] if args.key?(:delegates)
|
|
@payload = args[:payload] if args.key?(:payload)
|
|
end
|
|
end
|
|
|
|
#
|
|
class SignBlobResponse
|
|
include Google::Apis::Core::Hashable
|
|
|
|
# The ID of the key used to sign the blob.
|
|
# Corresponds to the JSON property `keyId`
|
|
# @return [String]
|
|
attr_accessor :key_id
|
|
|
|
# The signed blob.
|
|
# Corresponds to the JSON property `signedBlob`
|
|
# NOTE: Values are automatically base64 encoded/decoded in the client library.
|
|
# @return [String]
|
|
attr_accessor :signed_blob
|
|
|
|
def initialize(**args)
|
|
update!(**args)
|
|
end
|
|
|
|
# Update properties of this object
|
|
def update!(**args)
|
|
@key_id = args[:key_id] if args.key?(:key_id)
|
|
@signed_blob = args[:signed_blob] if args.key?(:signed_blob)
|
|
end
|
|
end
|
|
|
|
#
|
|
class SignJwtRequest
|
|
include Google::Apis::Core::Hashable
|
|
|
|
# The sequence of service accounts in a delegation chain. Each service
|
|
# account must be granted the `roles/iam.serviceAccountTokenCreator` role
|
|
# on its next service account in the chain. The last service account in the
|
|
# chain must be granted the `roles/iam.serviceAccountTokenCreator` role
|
|
# on the service account that is specified in the `name` field of the
|
|
# request.
|
|
# The delegates must have the following format:
|
|
# `projects/-/serviceAccounts/`ACCOUNT_EMAIL_OR_UNIQUEID``
|
|
# Corresponds to the JSON property `delegates`
|
|
# @return [Array<String>]
|
|
attr_accessor :delegates
|
|
|
|
# The JWT payload to sign: a JSON object that contains a JWT Claims Set.
|
|
# Corresponds to the JSON property `payload`
|
|
# @return [String]
|
|
attr_accessor :payload
|
|
|
|
def initialize(**args)
|
|
update!(**args)
|
|
end
|
|
|
|
# Update properties of this object
|
|
def update!(**args)
|
|
@delegates = args[:delegates] if args.key?(:delegates)
|
|
@payload = args[:payload] if args.key?(:payload)
|
|
end
|
|
end
|
|
|
|
#
|
|
class SignJwtResponse
|
|
include Google::Apis::Core::Hashable
|
|
|
|
# The ID of the key used to sign the JWT.
|
|
# Corresponds to the JSON property `keyId`
|
|
# @return [String]
|
|
attr_accessor :key_id
|
|
|
|
# The signed JWT.
|
|
# Corresponds to the JSON property `signedJwt`
|
|
# @return [String]
|
|
attr_accessor :signed_jwt
|
|
|
|
def initialize(**args)
|
|
update!(**args)
|
|
end
|
|
|
|
# Update properties of this object
|
|
def update!(**args)
|
|
@key_id = args[:key_id] if args.key?(:key_id)
|
|
@signed_jwt = args[:signed_jwt] if args.key?(:signed_jwt)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|