tcauth

package
v0.0.0-...-a5b7ecb Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 11, 2019 License: MPL-2.0 Imports: 5 Imported by: 5

Documentation

Overview

Authentication related API end-points for Taskcluster and related services. These API end-points are of interest if you wish to:

  • Authorize a request signed with Taskcluster credentials,
  • Manage clients and roles,
  • Inspect or audit clients and roles,
  • Gain access to various services guarded by this API.

See:

How to use this package

First create an Auth object:

auth := tcauth.New(nil)

and then call one or more of auth's methods, e.g.:

err := auth.Ping(.....)

handling any errors...

if err != nil {
	// handle error...
}

Taskcluster Schema

The source code of this go package was auto-generated from the API definition at https://taskcluster-staging.net/references/auth/v1/api.json together with the input and output schemas it references, downloaded on Thu, 27 Jun 2019 at 07:22:00 UTC. The code was generated by https://github.com/taskcluster/taskcluster-client-go/blob/master/build.sh.

Example (Scopes)
package main

import (
	"fmt"
	"log"

	tcclient "github.com/taskcluster/taskcluster-client-go"
	"github.com/taskcluster/taskcluster-client-go/tcauth"
)

func main() {

	// Note: the API call we will make doesn't need credentials as it supplies public information.
	// However, for the purpose of demonstrating the general case, this is how you can provide
	// credentials for API calls that require them.
	myAuth := tcauth.New(
		&tcclient.Credentials{
			ClientID:    "SOME-CLIENT-ID",
			AccessToken: "SOME-WELL-FORMED-ACCESS-TOKEN",
		},
		"https://taskcluster.net",
	)

	// Look up client details for client id "project/taskcluster/tc-client-go/tests"...
	resp, err := myAuth.Client("project/taskcluster/tc-client-go/tests")

	// Handle any errors...
	if err != nil {
		log.Printf("Error occurred: %s", err)
		return
	}

	// Report results...
	fmt.Printf("Client ID:  %v\n", resp.ClientID)
	fmt.Printf("Expires:    %v\n", resp.Expires)
	// Could also print expanded scopes, for example:
	//   fmt.Printf("Expanded Scopes:  %v\n", resp.ExpandedScopes)

}
Output:

Client ID:  project/taskcluster/tc-client-go/tests
Expires:    3017-02-01T05:00:00.000Z
Example (UpdateClient)
package main

import (
	"fmt"
	"log"
	"time"

	tcclient "github.com/taskcluster/taskcluster-client-go"
	"github.com/taskcluster/taskcluster-client-go/tcauth"
)

func main() {

	// In this example we will connect to a local auth server running on
	// localhost:8080 with authentication disabled. This could be, for
	// example, a locally deployed taskcluster-proxy instance.
	myAuth := tcauth.New(nil, "http://localhost:8080")

	// Set target url to localhost url...
	myAuth.BaseURL = "http://localhost:60024/v1"

	// Update client id "b2g-power-tests" with new description and expiry...
	client, err := myAuth.UpdateClient(
		"b2g-power-tests",
		&tcauth.CreateClientRequest{
			Description: "Grant access to download artifacts for `flame-kk-eng`",
			Expires:     tcclient.Time(time.Now().AddDate(1, 0, 0)),
		},
	)

	// Handle any errors...
	if err != nil {
		log.Printf("Error occurred: %s", err)
		return
	}

	// Report results...
	fmt.Printf("Client Id:        %v\n", client.ClientID)
	fmt.Printf("Created:          %v\n", client.Created)
	fmt.Printf("Description:      %v\n", client.Description)
	fmt.Printf("Expanded Scopes:  %v\n", client.ExpandedScopes)
	fmt.Printf("Expires:          %v\n", client.Expires)
	fmt.Printf("Last Date Used:   %v\n", client.LastDateUsed)
	fmt.Printf("Last Modified:    %v\n", client.LastModified)
	fmt.Printf("Last Rotated:     %v\n", client.LastRotated)
}
Output:

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AWSS3CredentialsResponse

type AWSS3CredentialsResponse struct {

	// Temporary STS credentials for use when operating on S3
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/aws-s3-credentials-response.json#/properties/credentials
	Credentials TemporarySecurityCredentials `json:"credentials"`

	// Date and time of when the temporary credentials expires.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/aws-s3-credentials-response.json#/properties/expires
	Expires tcclient.Time `json:"expires"`
}

Response for a request to get access to an S3 bucket.

See https://taskcluster-staging.net/schemas/auth/v1/aws-s3-credentials-response.json#

type Auth

type Auth tcclient.Client

func New

func New(credentials *tcclient.Credentials, rootURL string) *Auth

New returns an Auth client, configured to run against production. Pass in nil credentials to create a client without authentication. The returned client is mutable, so returned settings can be altered.

auth := tcauth.New(
    nil,                                      // client without authentication
    "http://localhost:1234/my/taskcluster",   // taskcluster hosted at this root URL on local machine
)
err := auth.Ping(.....)                       // for example, call the Ping(.....) API endpoint (described further down)...
if err != nil {
	// handle errors...
}

func NewFromEnv

func NewFromEnv() *Auth

NewFromEnv returns an *Auth configured from environment variables.

The root URL is taken from TASKCLUSTER_PROXY_URL if set to a non-empty string, otherwise from TASKCLUSTER_ROOT_URL if set, otherwise the empty string.

The credentials are taken from environment variables:

TASKCLUSTER_CLIENT_ID
TASKCLUSTER_ACCESS_TOKEN
TASKCLUSTER_CERTIFICATE

If TASKCLUSTER_CLIENT_ID is empty/unset, authentication will be disabled.

func (*Auth) AuthenticateHawk

Validate the request signature given on input and return list of scopes that the authenticating client has.

This method is used by other services that wish rely on Taskcluster credentials for authentication. This way we can use Hawk without having the secret credentials leave this service.

See #authenticateHawk

func (*Auth) AwsS3Credentials

func (auth *Auth) AwsS3Credentials(level, bucket, prefix, format string) (*AWSS3CredentialsResponse, error)

Get temporary AWS credentials for `read-write` or `read-only` access to a given `bucket` and `prefix` within that bucket. The `level` parameter can be `read-write` or `read-only` and determines which type of credentials are returned. Please note that the `level` parameter is required in the scope guarding access. The bucket name must not contain `.`, as recommended by Amazon.

This method can only allow access to a whitelisted set of buckets. To add a bucket to that whitelist, contact the Taskcluster team, who will add it to the appropriate IAM policy. If the bucket is in a different AWS account, you will also need to add a bucket policy allowing access from the Taskcluster account. That policy should look like this:

```js

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "allow-taskcluster-auth-to-delegate-access",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::692406183521:root"
      },
      "Action": [
        "s3:ListBucket",
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject",
        "s3:GetBucketLocation"
      ],
      "Resource": [
        "arn:aws:s3:::<bucket>",
        "arn:aws:s3:::<bucket>/*"
      ]
    }
  ]
}

```

The credentials are set to expire after an hour, but this behavior is subject to change. Hence, you should always read the `expires` property from the response, if you intend to maintain active credentials in your application.

Please note that your `prefix` may not start with slash `/`. Such a prefix is allowed on S3, but we forbid it here to discourage bad behavior.

Also note that if your `prefix` doesn't end in a slash `/`, the STS credentials may allow access to unexpected keys, as S3 does not treat slashes specially. For example, a prefix of `my-folder` will allow access to `my-folder/file.txt` as expected, but also to `my-folder.txt`, which may not be intended.

Finally, note that the `PutObjectAcl` call is not allowed. Passing a canned ACL other than `private` to `PutObject` is treated as a `PutObjectAcl` call, and will result in an access-denied error from AWS. This limitation is due to a security flaw in Amazon S3 which might otherwise allow indefinite access to uploaded objects.

**EC2 metadata compatibility**, if the querystring parameter `?format=iam-role-compat` is given, the response will be compatible with the JSON exposed by the EC2 metadata service. This aims to ease compatibility for libraries and tools built to auto-refresh credentials. For details on the format returned by EC2 metadata service see: [EC2 User Guide](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#instance-metadata-security-credentials).

Required scopes:

If levelIsReadOnly:
  Any of:
  - auth:aws-s3:read-only:<bucket>/<prefix>
  - auth:aws-s3:read-write:<bucket>/<prefix>

See #awsS3Credentials

func (*Auth) AwsS3Credentials_SignedURL

func (auth *Auth) AwsS3Credentials_SignedURL(level, bucket, prefix, format string, duration time.Duration) (*url.URL, error)

Returns a signed URL for AwsS3Credentials, valid for the specified duration.

Required scopes:

If levelIsReadOnly:
  Any of:
  - auth:aws-s3:read-only:<bucket>/<prefix>
  - auth:aws-s3:read-write:<bucket>/<prefix>

See AwsS3Credentials for more details.

func (*Auth) AzureAccounts

func (auth *Auth) AzureAccounts() (*AzureListAccountResponse, error)

Retrieve a list of all Azure accounts managed by Taskcluster Auth.

Required scopes:

auth:azure-table:list-accounts

See #azureAccounts

func (*Auth) AzureAccounts_SignedURL

func (auth *Auth) AzureAccounts_SignedURL(duration time.Duration) (*url.URL, error)

Returns a signed URL for AzureAccounts, valid for the specified duration.

Required scopes:

auth:azure-table:list-accounts

See AzureAccounts for more details.

func (*Auth) AzureContainerSAS

func (auth *Auth) AzureContainerSAS(account, container, level string) (*AzureBlobSharedAccessSignature, error)

Get a shared access signature (SAS) string for use with a specific Azure Blob Storage container.

The `level` parameter can be `read-write` or `read-only` and determines which type of credentials are returned. If level is read-write, it will create the container if it doesn't already exist.

Required scopes:

If levelIsReadOnly:
  Any of:
  - auth:azure-container:read-only:<account>/<container>
  - auth:azure-container:read-write:<account>/<container>

See #azureContainerSAS

func (*Auth) AzureContainerSAS_SignedURL

func (auth *Auth) AzureContainerSAS_SignedURL(account, container, level string, duration time.Duration) (*url.URL, error)

Returns a signed URL for AzureContainerSAS, valid for the specified duration.

Required scopes:

If levelIsReadOnly:
  Any of:
  - auth:azure-container:read-only:<account>/<container>
  - auth:azure-container:read-write:<account>/<container>

See AzureContainerSAS for more details.

func (*Auth) AzureContainers

func (auth *Auth) AzureContainers(account, continuationToken string) (*AzureListContainersResponse, error)

Retrieve a list of all containers in an account.

Required scopes:

auth:azure-container:list-containers:<account>

See #azureContainers

func (*Auth) AzureContainers_SignedURL

func (auth *Auth) AzureContainers_SignedURL(account, continuationToken string, duration time.Duration) (*url.URL, error)

Returns a signed URL for AzureContainers, valid for the specified duration.

Required scopes:

auth:azure-container:list-containers:<account>

See AzureContainers for more details.

func (*Auth) AzureTableSAS

func (auth *Auth) AzureTableSAS(account, table, level string) (*AzureTableSharedAccessSignature, error)

Get a shared access signature (SAS) string for use with a specific Azure Table Storage table.

The `level` parameter can be `read-write` or `read-only` and determines which type of credentials are returned. If level is read-write, it will create the table if it doesn't already exist.

Required scopes:

If levelIsReadOnly:
  Any of:
  - auth:azure-table:read-only:<account>/<table>
  - auth:azure-table:read-write:<account>/<table>

See #azureTableSAS

func (*Auth) AzureTableSAS_SignedURL

func (auth *Auth) AzureTableSAS_SignedURL(account, table, level string, duration time.Duration) (*url.URL, error)

Returns a signed URL for AzureTableSAS, valid for the specified duration.

Required scopes:

If levelIsReadOnly:
  Any of:
  - auth:azure-table:read-only:<account>/<table>
  - auth:azure-table:read-write:<account>/<table>

See AzureTableSAS for more details.

func (*Auth) AzureTables

func (auth *Auth) AzureTables(account, continuationToken string) (*AzureListTableResponse, error)

Retrieve a list of all tables in an account.

Required scopes:

auth:azure-table:list-tables:<account>

See #azureTables

func (*Auth) AzureTables_SignedURL

func (auth *Auth) AzureTables_SignedURL(account, continuationToken string, duration time.Duration) (*url.URL, error)

Returns a signed URL for AzureTables, valid for the specified duration.

Required scopes:

auth:azure-table:list-tables:<account>

See AzureTables for more details.

func (*Auth) Client

func (auth *Auth) Client(clientId string) (*GetClientResponse, error)

Get information about a single client.

See #client

func (*Auth) CreateClient

func (auth *Auth) CreateClient(clientId string, payload *CreateClientRequest) (*CreateClientResponse, error)

Create a new client and get the `accessToken` for this client. You should store the `accessToken` from this API call as there is no other way to retrieve it.

If you loose the `accessToken` you can call `resetAccessToken` to reset it, and a new `accessToken` will be returned, but you cannot retrieve the current `accessToken`.

If a client with the same `clientId` already exists this operation will fail. Use `updateClient` if you wish to update an existing client.

The caller's scopes must satisfy `scopes`.

Required scopes:

All of:
* auth:create-client:<clientId>
* For scope in scopes each <scope>

See #createClient

func (*Auth) CreateRole

func (auth *Auth) CreateRole(roleId string, payload *CreateRoleRequest) (*GetRoleResponse, error)

Create a new role.

The caller's scopes must satisfy the new role's scopes.

If there already exists a role with the same `roleId` this operation will fail. Use `updateRole` to modify an existing role.

Creation of a role that will generate an infinite expansion will result in an error response.

Required scopes:

All of:
* auth:create-role:<roleId>
* For scope in scopes each <scope>

See #createRole

func (*Auth) CurrentScopes

func (auth *Auth) CurrentScopes() (*SetOfScopes, error)

Return the expanded scopes available in the request, taking into account all sources of scopes and scope restrictions (temporary credentials, assumeScopes, client scopes, and roles).

See #currentScopes

func (*Auth) DeleteClient

func (auth *Auth) DeleteClient(clientId string) error

Delete a client, please note that any roles related to this client must be deleted independently.

Required scopes:

auth:delete-client:<clientId>

See #deleteClient

func (*Auth) DeleteRole

func (auth *Auth) DeleteRole(roleId string) error

Delete a role. This operation will succeed regardless of whether or not the role exists.

Required scopes:

auth:delete-role:<roleId>

See #deleteRole

func (*Auth) DisableClient

func (auth *Auth) DisableClient(clientId string) (*GetClientResponse, error)

Disable a client. If the client is already disabled, this does nothing.

This is typically used by identity providers to disable clients when the corresponding identity's scopes no longer satisfy the client's scopes.

Required scopes:

auth:disable-client:<clientId>

See #disableClient

func (*Auth) EnableClient

func (auth *Auth) EnableClient(clientId string) (*GetClientResponse, error)

Enable a client that was disabled with `disableClient`. If the client is already enabled, this does nothing.

This is typically used by identity providers to re-enable clients that had been disabled when the corresponding identity's scopes changed.

Required scopes:

auth:enable-client:<clientId>

See #enableClient

func (*Auth) ExpandScopes

func (auth *Auth) ExpandScopes(payload *SetOfScopes) (*SetOfScopes, error)

Return an expanded copy of the given scopeset, with scopes implied by any roles included.

See #expandScopes

func (*Auth) ExpandScopesGet

func (auth *Auth) ExpandScopesGet(payload *SetOfScopes) (*SetOfScopes, error)

Stability: *** DEPRECATED ***

Return an expanded copy of the given scopeset, with scopes implied by any roles included.

This call uses the GET method with an HTTP body. It remains only for backward compatibility.

See #expandScopesGet

func (*Auth) GcpCredentials

func (auth *Auth) GcpCredentials(projectId, serviceAccount string) (*GCPCredentialsResponse, error)

Get temporary GCP credentials for the given serviceAccount in the given project.

Only preconfigured projects are allowed. Any serviceAccount in that project may be used.

The call adds the necessary policy if the serviceAccount doesn't have it. The credentials are set to expire after an hour, but this behavior is subject to change. Hence, you should always read the `expires` property from the response, if you intend to maintain active credentials in your application.

Required scopes:

auth:gcp:access-token:<projectId>/<serviceAccount>

See #gcpCredentials

func (*Auth) GcpCredentials_SignedURL

func (auth *Auth) GcpCredentials_SignedURL(projectId, serviceAccount string, duration time.Duration) (*url.URL, error)

Returns a signed URL for GcpCredentials, valid for the specified duration.

Required scopes:

auth:gcp:access-token:<projectId>/<serviceAccount>

See GcpCredentials for more details.

func (*Auth) ListClients

func (auth *Auth) ListClients(continuationToken, limit, prefix string) (*ListClientResponse, error)

Get a list of all clients. With `prefix`, only clients for which it is a prefix of the clientId are returned.

By default this end-point will try to return up to 1000 clients in one request. But it **may return less, even none**. It may also return a `continuationToken` even though there are no more results. However, you can only be sure to have seen all results if you keep calling `listClients` with the last `continuationToken` until you get a result without a `continuationToken`.

See #listClients

func (*Auth) ListRoleIds

func (auth *Auth) ListRoleIds(continuationToken, limit string) (*GetRoleIdsResponse, error)

If no limit is given, the roleIds of all roles are returned. Since this list may become long, callers can use the `limit` and `continuationToken` query arguments to page through the responses.

See #listRoleIds

func (*Auth) ListRoles

func (auth *Auth) ListRoles() (*GetAllRolesNoPagination, error)

Get a list of all roles, each role object also includes the list of scopes it expands to.

See #listRoles

func (*Auth) ListRoles2

func (auth *Auth) ListRoles2(continuationToken, limit string) (*GetAllRolesResponse, error)

If no limit is given, all roles are returned. Since this list may become long, callers can use the `limit` and `continuationToken` query arguments to page through the responses.

See #listRoles2

func (*Auth) Ping

func (auth *Auth) Ping() error

Respond without doing anything. This endpoint is used to check that the service is up.

See #ping

func (*Auth) ResetAccessToken

func (auth *Auth) ResetAccessToken(clientId string) (*CreateClientResponse, error)

Reset a clients `accessToken`, this will revoke the existing `accessToken`, generate a new `accessToken` and return it from this call.

There is no way to retrieve an existing `accessToken`, so if you loose it you must reset the accessToken to acquire it again.

Required scopes:

auth:reset-access-token:<clientId>

See #resetAccessToken

func (*Auth) Role

func (auth *Auth) Role(roleId string) (*GetRoleResponse, error)

Get information about a single role, including the set of scopes that the role expands to.

See #role

func (*Auth) SentryDSN

func (auth *Auth) SentryDSN(project string) (*SentryDSNResponse, error)

Get temporary DSN (access credentials) for a sentry project. The credentials returned can be used with any Sentry client for up to 24 hours, after which the credentials will be automatically disabled.

If the project doesn't exist it will be created, and assigned to the initial team configured for this component. Contact a Sentry admin to have the project transferred to a team you have access to if needed

Required scopes:

auth:sentry:<project>

See #sentryDSN

func (*Auth) SentryDSN_SignedURL

func (auth *Auth) SentryDSN_SignedURL(project string, duration time.Duration) (*url.URL, error)

Returns a signed URL for SentryDSN, valid for the specified duration.

Required scopes:

auth:sentry:<project>

See SentryDSN for more details.

func (*Auth) StatsumToken

func (auth *Auth) StatsumToken(project string) (*StatsumTokenResponse, error)

Get temporary `token` and `baseUrl` for sending metrics to statsum.

The token is valid for 24 hours, clients should refresh after expiration.

Required scopes:

auth:statsum:<project>

See #statsumToken

func (*Auth) StatsumToken_SignedURL

func (auth *Auth) StatsumToken_SignedURL(project string, duration time.Duration) (*url.URL, error)

Returns a signed URL for StatsumToken, valid for the specified duration.

Required scopes:

auth:statsum:<project>

See StatsumToken for more details.

func (*Auth) TestAuthenticate

func (auth *Auth) TestAuthenticate(payload *TestAuthenticateRequest) (*TestAuthenticateResponse, error)

Utility method to test client implementations of Taskcluster authentication.

Rather than using real credentials, this endpoint accepts requests with clientId `tester` and accessToken `no-secret`. That client's scopes are based on `clientScopes` in the request body.

The request is validated, with any certificate, authorizedScopes, etc. applied, and the resulting scopes are checked against `requiredScopes` from the request body. On success, the response contains the clientId and scopes as seen by the API method.

See #testAuthenticate

func (*Auth) TestAuthenticateGet

func (auth *Auth) TestAuthenticateGet() (*TestAuthenticateResponse, error)

Utility method similar to `testAuthenticate`, but with the GET method, so it can be used with signed URLs (bewits).

Rather than using real credentials, this endpoint accepts requests with clientId `tester` and accessToken `no-secret`. That client's scopes are `['test:*', 'auth:create-client:test:*']`. The call fails if the `test:authenticate-get` scope is not available.

The request is validated, with any certificate, authorizedScopes, etc. applied, and the resulting scopes are checked, just like any API call. On success, the response contains the clientId and scopes as seen by the API method.

This method may later be extended to allow specification of client and required scopes via query arguments.

See #testAuthenticateGet

func (*Auth) UpdateClient

func (auth *Auth) UpdateClient(clientId string, payload *CreateClientRequest) (*GetClientResponse, error)

Update an exisiting client. The `clientId` and `accessToken` cannot be updated, but `scopes` can be modified. The caller's scopes must satisfy all scopes being added to the client in the update operation. If no scopes are given in the request, the client's scopes remain unchanged

Required scopes:

All of:
* auth:update-client:<clientId>
* For scope in scopesAdded each <scope>

See #updateClient

func (*Auth) UpdateRole

func (auth *Auth) UpdateRole(roleId string, payload *CreateRoleRequest) (*GetRoleResponse, error)

Update an existing role.

The caller's scopes must satisfy all of the new scopes being added, but need not satisfy all of the role's existing scopes.

An update of a role that will generate an infinite expansion will result in an error response.

Required scopes:

All of:
* auth:update-role:<roleId>
* For scope in scopesAdded each <scope>

See #updateRole

func (*Auth) WebsocktunnelToken

func (auth *Auth) WebsocktunnelToken(wstAudience, wstClient string) (*WebsocktunnelTokenResponse, error)

Get a temporary token suitable for use connecting to a [websocktunnel](https://github.com/taskcluster/websocktunnel) server.

The resulting token will only be accepted by servers with a matching audience value. Reaching such a server is the callers responsibility. In general, a server URL or set of URLs should be provided to the caller as configuration along with the audience value.

The token is valid for a limited time (on the scale of hours). Callers should refresh it before expiration.

Required scopes:

auth:websocktunnel-token:<wstAudience>/<wstClient>

See #websocktunnelToken

func (*Auth) WebsocktunnelToken_SignedURL

func (auth *Auth) WebsocktunnelToken_SignedURL(wstAudience, wstClient string, duration time.Duration) (*url.URL, error)

Returns a signed URL for WebsocktunnelToken, valid for the specified duration.

Required scopes:

auth:websocktunnel-token:<wstAudience>/<wstClient>

See WebsocktunnelToken for more details.

type AuthenticationFailedResponse

type AuthenticationFailedResponse struct {

	// Message saying why the authentication failed.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/authenticate-hawk-response.json#/oneOf[1]/properties/message
	Message string `json:"message"`

	// The kind of response, `auth-failed` or `auth-success`.
	//
	// Possible values:
	//   * "auth-failed"
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/authenticate-hawk-response.json#/oneOf[1]/properties/status
	Status string `json:"status"`
}

Response from a request to authenticate a hawk request.

See https://taskcluster-staging.net/schemas/auth/v1/authenticate-hawk-response.json#/oneOf[1]

type AuthenticationSuccessfulResponse

type AuthenticationSuccessfulResponse struct {

	// The `clientId` that made this request.  This may be the `id` supplied in
	// the Authorization header, or in the case of a named temporary credential
	// may be embedded in the payload.  In any case, this clientId can be used
	// for logging, auditing, and identifying the credential but **must** not be
	// used for access control.  That's what scopes are for.
	//
	// Syntax:     ^[A-Za-z0-9!@/:.+|_-]+$
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/authenticate-hawk-response.json#/oneOf[0]/properties/clientId
	ClientID string `json:"clientId"`

	// The expiration time for the credentials used to make this request.
	// This should be treated as the latest time at which the authorization
	// is valid.  For most cases, where the access being authorized occurs
	// immediately, this field can be ignored, as the value will always be
	// in the future if the status is `auth-success`.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/authenticate-hawk-response.json#/oneOf[0]/properties/expires
	Expires tcclient.Time `json:"expires"`

	// Payload as extracted from `Authentication` header. This property is
	// only present if a hash is available. You are not required to validate
	// this hash, but if you do, please check `scheme` to ensure that it's
	// on a scheme you support.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/authenticate-hawk-response.json#/oneOf[0]/properties/hash
	Hash json.RawMessage `json:"hash,omitempty"`

	// Authentication scheme the client used. Generally, you don't need to
	// read this property unless `hash` is provided and you want to validate
	// the payload hash. Additional values may be added in the future.
	//
	// Possible values:
	//   * "hawk"
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/authenticate-hawk-response.json#/oneOf[0]/properties/scheme
	Scheme string `json:"scheme"`

	// List of scopes the client is authorized to access.  Scopes must be
	// composed of printable ASCII characters and spaces.
	//
	// Array items:
	// Syntax:     ^[ -~]*$
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/authenticate-hawk-response.json#/oneOf[0]/properties/scopes/items
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/authenticate-hawk-response.json#/oneOf[0]/properties/scopes
	Scopes []string `json:"scopes"`

	// The kind of response, `auth-failed` or `auth-success`.
	//
	// Possible values:
	//   * "auth-success"
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/authenticate-hawk-response.json#/oneOf[0]/properties/status
	Status string `json:"status"`
}

Response from a request to authenticate a hawk request.

See https://taskcluster-staging.net/schemas/auth/v1/authenticate-hawk-response.json#/oneOf[0]

type AzureBlobSharedAccessSignature

type AzureBlobSharedAccessSignature struct {

	// Date and time of when the Shared-Access-Signature expires.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/azure-container-response.json#/properties/expiry
	Expiry tcclient.Time `json:"expiry"`

	// Shared-Access-Signature string. This is the querystring parameters to
	// be appened after `?` or `&` depending on whether or not a querystring is
	// already present in the URL.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/azure-container-response.json#/properties/sas
	Sas string `json:"sas"`
}

Response to a request for an Shared-Access-Signature to access an Azure Blob Storage container.

See https://taskcluster-staging.net/schemas/auth/v1/azure-container-response.json#

type AzureListAccountResponse

type AzureListAccountResponse struct {

	// A list of accountIds that are managed by auth. These are
	// the accounts that can have SAS credentials fetched for tables
	// within them.
	//
	// Array items:
	// See https://taskcluster-staging.net/schemas/auth/v1/azure-account-list-response.json#/properties/accounts/items
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/azure-account-list-response.json#/properties/accounts
	Accounts []string `json:"accounts"`
}

A list of Azure accounts managed by taskcluster-auth

See https://taskcluster-staging.net/schemas/auth/v1/azure-account-list-response.json#

type AzureListContainersResponse

type AzureListContainersResponse struct {

	// A list of containers that are in an account.  Credentials are available for
	// these containers from the `azureBlobSAS` method.
	//
	// Array items:
	// See https://taskcluster-staging.net/schemas/auth/v1/azure-container-list-response.json#/properties/containers/items
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/azure-container-list-response.json#/properties/containers
	Containers []string `json:"containers"`

	// Opaque `continuationToken` to be given as query-string option to get the
	// next set of containers.
	// This property is only present if another request is necessary to fetch all
	// results. In practice the next request with a `continuationToken` may not
	// return additional results, but it can. Thus, you can only be sure to have
	// all the results if you've called this method with `continuationToken`
	// until you get a result without a `continuationToken`.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/azure-container-list-response.json#/properties/continuationToken
	ContinuationToken string `json:"continuationToken,omitempty"`
}

A list of Azure containers in an account

See https://taskcluster-staging.net/schemas/auth/v1/azure-container-list-response.json#

type AzureListTableResponse

type AzureListTableResponse struct {

	// Opaque `continuationToken` to be given as query-string option to get the
	// next set of tables.
	// This property is only present if another request is necessary to fetch all
	// results. In practice the next request with a `continuationToken` may not
	// return additional results, but it can. Thus, you can only be sure to have
	// all the results if you've called `azureAccountTables` with `continuationToken`
	// until you get a result without a `continuationToken`.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/azure-table-list-response.json#/properties/continuationToken
	ContinuationToken string `json:"continuationToken,omitempty"`

	// A list of tables that are in an account. These are
	// the tables that can have SAS credentials fetched for them.
	//
	// Array items:
	// See https://taskcluster-staging.net/schemas/auth/v1/azure-table-list-response.json#/properties/tables/items
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/azure-table-list-response.json#/properties/tables
	Tables []string `json:"tables"`
}

A list of Azure tables in an account

See https://taskcluster-staging.net/schemas/auth/v1/azure-table-list-response.json#

type AzureTableSharedAccessSignature

type AzureTableSharedAccessSignature struct {

	// Date and time of when the Shared-Access-Signature expires.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/azure-table-access-response.json#/properties/expiry
	Expiry tcclient.Time `json:"expiry"`

	// Shared-Access-Signature string. This is the querystring parameters to
	// be appened after `?` or `&` depending on whether or not a querystring is
	// already present in the URL.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/azure-table-access-response.json#/properties/sas
	Sas string `json:"sas"`
}

Response to a request for an Shared-Access-Signature to access and Azure Table Storage table.

See https://taskcluster-staging.net/schemas/auth/v1/azure-table-access-response.json#

type CreateClientRequest

type CreateClientRequest struct {

	// If `true`, the service may delete this client after it has expired.  If
	// `false` (the default), the client will remain after expiration, although
	// it cannot be used for authentication in that state.
	//
	// Default:    false
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/create-client-request.json#/properties/deleteOnExpiration
	DeleteOnExpiration bool `json:"deleteOnExpiration,omitempty"`

	// Description of what these credentials are used for in markdown.
	// Should include who is the owner, point of contact.
	//
	// Max length: 10240
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/create-client-request.json#/properties/description
	Description string `json:"description"`

	// Date and time where the clients access is set to expire
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/create-client-request.json#/properties/expires
	Expires tcclient.Time `json:"expires"`

	// List of scopes the client has (unexpanded).
	//
	// Array items:
	// A single scope. A scope must be composed of
	// printable ASCII characters and spaces.  Scopes ending in more than
	// one `*` character are forbidden.
	//
	// Syntax:     ^[ -~]*$
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/create-client-request.json#/properties/scopes/items
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/create-client-request.json#/properties/scopes
	Scopes []string `json:"scopes,omitempty"`
}

Properties to create a client.

See https://taskcluster-staging.net/schemas/auth/v1/create-client-request.json#

type CreateClientResponse

type CreateClientResponse struct {

	// AccessToken used for authenticating requests, you should store this
	// you won't be able to retrive it again!
	//
	// Syntax:     ^[a-zA-Z0-9_-]{22,66}$
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/create-client-response.json#/properties/accessToken
	AccessToken string `json:"accessToken"`

	// ClientId of the client
	//
	// Syntax:     ^[A-Za-z0-9!@/:.+|_-]+$
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/create-client-response.json#/properties/clientId
	ClientID string `json:"clientId"`

	// Date and time when this client was created
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/create-client-response.json#/properties/created
	Created tcclient.Time `json:"created"`

	// If `true`, the service may delete this client after it has expired.  If
	// `false`, the client will remain after expiration, although it cannot be
	// used for authentication in that state.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/create-client-response.json#/properties/deleteOnExpiration
	DeleteOnExpiration bool `json:"deleteOnExpiration"`

	// Description of what these credentials are used for in markdown.
	// Should include who is the owner, point of contact.
	//
	// Max length: 10240
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/create-client-response.json#/properties/description
	Description string `json:"description"`

	// If true, this client is disabled and cannot be used.  This usually occurs when the
	// scopes available to the user owning the client no longer satisfy the client.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/create-client-response.json#/properties/disabled
	Disabled bool `json:"disabled"`

	// List of scopes granted to this client by matching roles, including the
	// client's scopes and the implicit role `client-id:<clientId>`.
	//
	// Array items:
	// A single scope. A scope must be composed of
	// printable ASCII characters and spaces.  Scopes ending in more than
	// one `*` character are forbidden.
	//
	// Syntax:     ^[ -~]*$
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/create-client-response.json#/properties/expandedScopes/items
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/create-client-response.json#/properties/expandedScopes
	ExpandedScopes []string `json:"expandedScopes"`

	// Date and time where the clients access is set to expire
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/create-client-response.json#/properties/expires
	Expires tcclient.Time `json:"expires"`

	// Date of last time this client was used. Will only be updated every 6 hours
	// or so this may be off by up-to 6 hours. But it still gives a solid hint
	// as to whether or not this client is in use.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/create-client-response.json#/properties/lastDateUsed
	LastDateUsed tcclient.Time `json:"lastDateUsed"`

	// Date and time of last modification
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/create-client-response.json#/properties/lastModified
	LastModified tcclient.Time `json:"lastModified"`

	// Date and time of when the `accessToken` was reset last time.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/create-client-response.json#/properties/lastRotated
	LastRotated tcclient.Time `json:"lastRotated"`

	// List of scopes the client has (unexpanded).
	//
	// Default:    []
	//
	// Array items:
	// A single scope. A scope must be composed of
	// printable ASCII characters and spaces.  Scopes ending in more than
	// one `*` character are forbidden.
	//
	// Syntax:     ^[ -~]*$
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/create-client-response.json#/properties/scopes/items
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/create-client-response.json#/properties/scopes
	Scopes []string `json:"scopes"`
}

All details about a client including the `accessToken`

See https://taskcluster-staging.net/schemas/auth/v1/create-client-response.json#

type CreateRoleRequest

type CreateRoleRequest struct {

	// Description of what this role is used for in markdown.
	// Should include who is the owner, point of contact.
	//
	// Max length: 10240
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/create-role-request.json#/properties/description
	Description string `json:"description"`

	// List of scopes the role grants access to.  Scopes must be composed of
	// printable ASCII characters and spaces.
	//
	// Array items:
	// A single scope. A scope must be composed of
	// printable ASCII characters and spaces.  Scopes ending in more than
	// one `*` character are forbidden.
	//
	// Syntax:     ^[ -~]*$
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/create-role-request.json#/properties/scopes/items
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/create-role-request.json#/properties/scopes
	Scopes []string `json:"scopes"`
}

Data to create or update a role.

See https://taskcluster-staging.net/schemas/auth/v1/create-role-request.json#

type Dsn

type Dsn struct {

	// Access credential and URL for public error reports.
	// These credentials can be used for up-to 24 hours.
	// This is for use in client-side applications only.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/sentry-dsn-response.json#/properties/dsn/properties/public
	Public string `json:"public"`

	// Access credential and URL for private error reports.
	// These credentials can be used for up-to 24 hours.
	// This is for use in serser-side applications and should **not** be
	// leaked.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/sentry-dsn-response.json#/properties/dsn/properties/secret
	Secret string `json:"secret"`
}

Access credentials and urls for the Sentry project. Credentials will expire in 24-48 hours, you should refresh them within 24 hours.

See https://taskcluster-staging.net/schemas/auth/v1/sentry-dsn-response.json#/properties/dsn

type GCPCredentialsResponse

type GCPCredentialsResponse struct {

	// Temporary oauth2 access token to access the given service account
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/gcp-credentials-response.json#/properties/accessToken
	AccessToken string `json:"accessToken"`

	// The access token expire time
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/gcp-credentials-response.json#/properties/expireTime
	ExpireTime tcclient.Time `json:"expireTime"`
}

Response for a request to get a GCP temporary credential.

See https://taskcluster-staging.net/schemas/auth/v1/gcp-credentials-response.json#

type GetAllRolesResponse

type GetAllRolesResponse struct {

	// A continuation token is returned if there are more results than listed
	// here. You can optionally provide the token in the request payload to
	// load the additional results.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/list-roles2-response.json#/properties/continuationToken
	ContinuationToken string `json:"continuationToken,omitempty"`

	// A list of requested roles
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/list-roles2-response.json#/properties/roles
	Roles []GetRoleResponse `json:"roles"`
}

If no limit is given, all roles are returned. Since this list may become long, callers can use the `limit` and `continuationToken` query arguments to page through the responses.

See https://taskcluster-staging.net/schemas/auth/v1/list-roles2-response.json#

type GetClientResponse

type GetClientResponse struct {

	// ClientId of the client scopes is requested about
	//
	// Syntax:     ^[A-Za-z0-9!@/:.+|_-]+$
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/get-client-response.json#/properties/clientId
	ClientID string `json:"clientId"`

	// Date and time when this client was created
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/get-client-response.json#/properties/created
	Created tcclient.Time `json:"created"`

	// If `true`, the service may delete this client after it has expired.  If
	// `false`, the client will remain after expiration, although it cannot be
	// used for authentication in that state.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/get-client-response.json#/properties/deleteOnExpiration
	DeleteOnExpiration bool `json:"deleteOnExpiration"`

	// Description of what these credentials are used for in markdown.
	// Should include who is the owner, point of contact.
	//
	// Max length: 10240
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/get-client-response.json#/properties/description
	Description string `json:"description"`

	// If true, this client is disabled and cannot be used.  This usually occurs when the
	// scopes available to the user owning the client no longer satisfy the client.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/get-client-response.json#/properties/disabled
	Disabled bool `json:"disabled"`

	// List of scopes granted to this client by matching roles.  Scopes must be
	// composed of printable ASCII characters and spaces.
	//
	// Array items:
	// Scope that client is granted by a role
	//
	// Syntax:     ^[ -~]*$
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/get-client-response.json#/properties/expandedScopes/items
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/get-client-response.json#/properties/expandedScopes
	ExpandedScopes []string `json:"expandedScopes"`

	// Date and time where the clients access is set to expire
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/get-client-response.json#/properties/expires
	Expires tcclient.Time `json:"expires"`

	// Date of last time this client was used. Will only be updated every 6 hours
	// or so this may be off by up-to 6 hours. But it still gives a solid hint
	// as to whether or not this client is in use.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/get-client-response.json#/properties/lastDateUsed
	LastDateUsed tcclient.Time `json:"lastDateUsed"`

	// Date and time of last modification
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/get-client-response.json#/properties/lastModified
	LastModified tcclient.Time `json:"lastModified"`

	// Date and time of when the `accessToken` was reset last time.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/get-client-response.json#/properties/lastRotated
	LastRotated tcclient.Time `json:"lastRotated"`

	// List of scopes the client has (unexpanded).  Scopes must be composed of
	// printable ASCII characters and spaces.
	//
	// Default:    []
	//
	// Array items:
	// Scope
	//
	// Syntax:     ^[ -~]*$
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/get-client-response.json#/properties/scopes/items
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/get-client-response.json#/properties/scopes
	Scopes []string `json:"scopes"`
}

Get all details about a client, useful for tools modifying a client

See https://taskcluster-staging.net/schemas/auth/v1/get-client-response.json#

type GetRoleIdsResponse

type GetRoleIdsResponse struct {

	// A continuation token is returned if there are more results than listed
	// here. You can optionally provide the token in the request payload to
	// load the additional results.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/list-role-ids-response.json#/properties/continuationToken
	ContinuationToken string `json:"continuationToken,omitempty"`

	// A list of requested roleIds
	//
	// Array items:
	// See https://taskcluster-staging.net/schemas/auth/v1/list-role-ids-response.json#/properties/roleIds/items
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/list-role-ids-response.json#/properties/roleIds
	RoleIds []string `json:"roleIds"`
}

If no limit is given, the roleIds of all roles are returned. Since this list may become long, callers can use the `limit` and `continuationToken` query arguments to page through the responses.

See https://taskcluster-staging.net/schemas/auth/v1/list-role-ids-response.json#

type GetRoleResponse

type GetRoleResponse struct {

	// Date and time when this role was created
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/get-role-response.json#/properties/created
	Created tcclient.Time `json:"created"`

	// Description of what this role is used for in markdown.
	// Should include who is the owner, point of contact.
	//
	// Max length: 10240
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/get-role-response.json#/properties/description
	Description string `json:"description"`

	// List of scopes granted anyone who assumes this role, including anything
	// granted by roles that can be assumed when you have this role.
	// Hence, this includes any scopes in-directly granted as well.
	//
	// Array items:
	// A single scope. A scope must be composed of
	// printable ASCII characters and spaces.  Scopes ending in more than
	// one `*` character are forbidden.
	//
	// Syntax:     ^[ -~]*$
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/get-role-response.json#/properties/expandedScopes/items
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/get-role-response.json#/properties/expandedScopes
	ExpandedScopes []string `json:"expandedScopes"`

	// Date and time of last modification
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/get-role-response.json#/properties/lastModified
	LastModified tcclient.Time `json:"lastModified"`

	// roleId of the role requested
	//
	// Syntax:     ^[\x20-\x7e]+$
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/get-role-response.json#/properties/roleId
	RoleID string `json:"roleId"`

	// List of scopes the role grants access to.  Scopes must be composed of
	// printable ASCII characters and spaces.
	//
	// Array items:
	// A single scope. A scope must be composed of
	// printable ASCII characters and spaces.  Scopes ending in more than
	// one `*` character are forbidden.
	//
	// Syntax:     ^[ -~]*$
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/get-role-response.json#/properties/scopes/items
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/get-role-response.json#/properties/scopes
	Scopes []string `json:"scopes"`
}

Get all details about a role

See https://taskcluster-staging.net/schemas/auth/v1/get-role-response.json#

type HawkSignatureAuthenticationRequest

type HawkSignatureAuthenticationRequest struct {

	// Authorization header, **must** only be specified if request being
	// authenticated has a `Authorization` header.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/authenticate-hawk-request.json#/properties/authorization
	Authorization string `json:"authorization,omitempty"`

	// Host for which the request came in, this is typically the `Host` header
	// excluding the port if any.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/authenticate-hawk-request.json#/properties/host
	Host string `json:"host"`

	// HTTP method of the request being authenticated.
	//
	// Possible values:
	//   * "get"
	//   * "post"
	//   * "put"
	//   * "head"
	//   * "delete"
	//   * "options"
	//   * "trace"
	//   * "copy"
	//   * "lock"
	//   * "mkcol"
	//   * "move"
	//   * "purge"
	//   * "propfind"
	//   * "proppatch"
	//   * "unlock"
	//   * "report"
	//   * "mkactivity"
	//   * "checkout"
	//   * "merge"
	//   * "m-search"
	//   * "notify"
	//   * "subscribe"
	//   * "unsubscribe"
	//   * "patch"
	//   * "search"
	//   * "connect"
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/authenticate-hawk-request.json#/properties/method
	Method string `json:"method"`

	// Port on which the request came in, this is typically `80` or `443`.
	// If you are running behind a reverse proxy look for the `x-forwarded-port`
	// header.
	//
	// Mininum:    0
	// Maximum:    65535
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/authenticate-hawk-request.json#/properties/port
	Port int64 `json:"port"`

	// Resource the request operates on including querystring. This is the
	// string that follows the HTTP method.
	// **Note,** order of querystring elements is important.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/authenticate-hawk-request.json#/properties/resource
	Resource string `json:"resource"`

	// Source IP of the authentication request or request that requires
	// authentication. This is only used for audit logging.
	//
	// One of:
	//   * SourceIP
	//   * SourceIP1
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/authenticate-hawk-request.json#/properties/sourceIp
	SourceIP string `json:"sourceIp,omitempty"`
}

Request to authenticate a hawk request.

See https://taskcluster-staging.net/schemas/auth/v1/authenticate-hawk-request.json#

type HawkSignatureAuthenticationResponse

type HawkSignatureAuthenticationResponse json.RawMessage

Response from a request to authenticate a hawk request.

One of:

  • AuthenticationSuccessfulResponse
  • AuthenticationFailedResponse

See https://taskcluster-staging.net/schemas/auth/v1/authenticate-hawk-response.json#

func (*HawkSignatureAuthenticationResponse) MarshalJSON

func (this *HawkSignatureAuthenticationResponse) MarshalJSON() ([]byte, error)

MarshalJSON calls json.RawMessage method of the same name. Required since HawkSignatureAuthenticationResponse is of type json.RawMessage...

func (*HawkSignatureAuthenticationResponse) UnmarshalJSON

func (this *HawkSignatureAuthenticationResponse) UnmarshalJSON(data []byte) error

UnmarshalJSON is a copy of the json.RawMessage implementation.

type ListClientResponse

type ListClientResponse struct {

	// See https://taskcluster-staging.net/schemas/auth/v1/list-clients-response.json#/properties/clients
	Clients []GetClientResponse `json:"clients"`

	// A continuation token is returned if there are more results than listed
	// here. You can optionally provide the token in the request payload to
	// load the additional results.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/list-clients-response.json#/properties/continuationToken
	ContinuationToken string `json:"continuationToken,omitempty"`
}

List of clients

See https://taskcluster-staging.net/schemas/auth/v1/list-clients-response.json#

type SentryDSNResponse

type SentryDSNResponse struct {

	// Access credentials and urls for the Sentry project.
	// Credentials will expire in 24-48 hours, you should refresh them within
	// 24 hours.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/sentry-dsn-response.json#/properties/dsn
	Dsn Dsn `json:"dsn"`

	// Expiration time for the credentials. The credentials should not be used
	// after this time. They might not be revoked immediately, but will be at
	// some arbitrary point after this date-time.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/sentry-dsn-response.json#/properties/expires
	Expires tcclient.Time `json:"expires"`

	// Project name that the DSN grants access to.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/sentry-dsn-response.json#/properties/project
	Project string `json:"project"`
}

Sentry DSN for submitting errors.

See https://taskcluster-staging.net/schemas/auth/v1/sentry-dsn-response.json#

type SetOfScopes

type SetOfScopes struct {

	// List of scopes.  Scopes must be composed of printable ASCII characters and spaces.
	//
	// Array items:
	// Scope
	//
	// Syntax:     ^[ -~]*$
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/scopeset.json#/properties/scopes/items
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/scopeset.json#/properties/scopes
	Scopes []string `json:"scopes"`
}

A set of scopes

See https://taskcluster-staging.net/schemas/auth/v1/scopeset.json#

type SourceIP

type SourceIP string

Source IP of the authentication request or request that requires authentication. This is only used for audit logging.

See https://taskcluster-staging.net/schemas/auth/v1/authenticate-hawk-request.json#/properties/sourceIp/oneOf[0]

type SourceIP1

type SourceIP1 string

Source IP of the authentication request or request that requires authentication. This is only used for audit logging.

See https://taskcluster-staging.net/schemas/auth/v1/authenticate-hawk-request.json#/properties/sourceIp/oneOf[1]

type StatsumTokenResponse

type StatsumTokenResponse struct {

	// Base URL for the statsum server this project is allocated on.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/statsum-token-response.json#/properties/baseUrl
	BaseURL string `json:"baseUrl"`

	// Time at which the token expires and should not be used anymore.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/statsum-token-response.json#/properties/expires
	Expires tcclient.Time `json:"expires"`

	// Project name that the token grants access to.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/statsum-token-response.json#/properties/project
	Project string `json:"project"`

	// JWT token to be used as `Bearer <token>` when submitting data to statsum.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/statsum-token-response.json#/properties/token
	Token string `json:"token"`
}

Token for submitting statistics to statsum.

See https://taskcluster-staging.net/schemas/auth/v1/statsum-token-response.json#

type TemporarySecurityCredentials

type TemporarySecurityCredentials struct {

	// Access key identifier that identifies the temporary security
	// credentials.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/aws-s3-credentials-response.json#/properties/credentials/properties/accessKeyId
	AccessKeyID string `json:"accessKeyId"`

	// Secret access key used to sign requests
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/aws-s3-credentials-response.json#/properties/credentials/properties/secretAccessKey
	SecretAccessKey string `json:"secretAccessKey"`

	// A token that must passed with request to use the temporary
	// security credentials.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/aws-s3-credentials-response.json#/properties/credentials/properties/sessionToken
	SessionToken string `json:"sessionToken"`
}

Temporary STS credentials for use when operating on S3

See https://taskcluster-staging.net/schemas/auth/v1/aws-s3-credentials-response.json#/properties/credentials

type TestAuthenticateRequest

type TestAuthenticateRequest struct {

	// List of scopes that should be client used should be given.
	//
	// Default:    []
	//
	// Array items:
	// Scope
	//
	// Syntax:     ^[ -~]*$
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/test-authenticate-request.json#/properties/clientScopes/items
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/test-authenticate-request.json#/properties/clientScopes
	ClientScopes []string `json:"clientScopes"`

	// List of scopes the request should require.
	//
	// Default:    []
	//
	// Array items:
	// Scope
	//
	// Syntax:     ^[ -~]*$
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/test-authenticate-request.json#/properties/requiredScopes/items
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/test-authenticate-request.json#/properties/requiredScopes
	RequiredScopes []string `json:"requiredScopes"`
}

Details on how the test request should be authenticated.

See https://taskcluster-staging.net/schemas/auth/v1/test-authenticate-request.json#

type TestAuthenticateResponse

type TestAuthenticateResponse struct {

	// ClientId from the request as it will be logged
	//
	// Syntax:     ^[A-Za-z0-9!@/:.+|_-]+$
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/test-authenticate-response.json#/properties/clientId
	ClientID string `json:"clientId"`

	// List of scopes the request was authorized.
	//
	// Default:    []
	//
	// Array items:
	// Scope
	//
	// Syntax:     ^[ -~]*$
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/test-authenticate-response.json#/properties/scopes/items
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/test-authenticate-response.json#/properties/scopes
	Scopes []string `json:"scopes"`
}

Details on how the test request was authenticated.

See https://taskcluster-staging.net/schemas/auth/v1/test-authenticate-response.json#

type WebsocktunnelTokenResponse

type WebsocktunnelTokenResponse struct {

	// The time at which the JWT will expire.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/websocktunnel-token-response.json#/properties/expires
	Expires tcclient.Time `json:"expires"`

	// The JWT to be used as `Bearer <token>` when connecting to the service.
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/websocktunnel-token-response.json#/properties/token
	Token string `json:"token"`

	// Audience identifying the websocktunnel servers that will honor this token; this will be the
	// same as the requested `wstAudience`.
	//
	// Syntax:     ^[a-zA-Z0-9_-]{1,38}$
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/websocktunnel-token-response.json#/properties/wstAudience
	WstAudience string `json:"wstAudience"`

	// Id for the websocktunnel client connection; this will be the same as the requested `wstClient`.
	//
	// Syntax:     ^[a-zA-Z0-9_~.%-]+$
	//
	// See https://taskcluster-staging.net/schemas/auth/v1/websocktunnel-token-response.json#/properties/wstClient
	WstClient string `json:"wstClient"`
}

Token for connecting a worker to websocktunnel proxy

See https://taskcluster-staging.net/schemas/auth/v1/websocktunnel-token-response.json#

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL