Skip to main content

API authentication

Snow Atlas authentication is governed by the Snow Atlas Identity Provider (IDP). Snow Atlas APIs are protected by access tokens issued by the IDP.

Snow Atlas currently supports OAuth2 and OpenID Connect (OIDC).

OpenID Connect discovery

OIDC clients can query the well known configuration endpoint at any time to determine the level of interoperability. Available at: https://{region}.snowsoftware.io/idp/.well-known/openid-configuration

Note

You can find your Data region in the Snow Atlas settings menu, in License details. Your Data region is on the General information tab. For further information, see General information.

OpenID Connect response types

All endpoints derived from the OpenID Connect well known configuration endpoint returns errors formatted according to https://openid.net/specs/openid-connect-core-1_0.html#AuthError.

Identity management APIs return a different set of response types that do not conform to the OIDC specification.

Identity APIs

The identity APIs are hosted at https://{region}.snowsoftware.io/idp/api.

Product and core APIs are available at https://{region}.snowsoftware.io/api.

Tokens

Authorization request

The authorization request must be initiated against the regional issuer: https://{region}.snowsoftware.io/idp.

Multiplexing authorization requests against https://apex.snowsoftware.io/idp is not supported for third party or native clients.

The following optional parameters are supported on authorization requests.

Name

Values

Description

max_age

The maximum age of the user session in seconds required to authorize the user. Combine with response validation of the identity token auth_time claim on the client on callback if used for authorization purposes.

prompt

select_account

Redirects the user to the login page allowing them to select a different domain

prompt

none

Does not prompt the user for interactive actions, and instead returns an error to the client if necessary

scope

openid

Uses OIDC and returns an identity token in the token response

scope

offline_access

Returns a refresh token in the token response

Token request

Resources

In addition to the OIDC scope parameter, the token can also be limited to individual APIs. You can use multiple values by defining the parameter multiple times. If no values are defined in the request, a default set of all available values are included.

Values

Description

api://snowsoftware.io/api

Scopes the access token to product and core APIs

api://snowsoftware.io/idp/api

Scopes the access token to identity management APIs

It is recommended that you explicitly specify the intended resources and exclude access to sensitive identity management APIs if not required.

Token response

The token response contains the requested tokens formatted according to https://openid.net/specs/openid-connect-core-1_0.html#TokenResponse.

As part of any token response, the expires_in property is made available in the response payload that defines the number of seconds until the access token expires.

Access tokens

Access tokens are either returned as JSON Web Tokens (JWT) conforming to RFC 7519 - JSON Web Token (JWT), or opaque reference tokens if configured as such.

Note

Snow Software reserves the right to change the access token format or dialect at its discretion, including the type of access token issued for a specific client. Therefore, clients must always treat the access token as opaque regardless of the initial format returned.

The access token is only valid for use against the Snow Atlas region it was issued from.

Identity tokens

Identity tokens are returned as JWTs. Claims that are not part of the OIDC specification and are omitted from the table below are to be treated as internal. Claims that are defined as nullable may be omitted from the token if not set.

Table 8. Claims

Name

Description

Nullable

sub*

The ID of the user

No

tenant

The ID of the tenant

No

tenant_name

The name of the tenant

No

region

The data region

No

preferred_username*

The username

Yes

given_name*

The user's first name

Yes

family_name*

The user's last name

Yes

locale*

Country code according to ISO3166‑1 in uppercase, separated by a dash, for example, en-US or fr-CA

Yes

zoneinfo*

Time zone database value that represents the user's time zone

Yes

profile*

A resource URI to the user's profile page

No

auth_time**

The time when the current session was established. Note that this is not the same as the time when the token was issued, which is defined by the claim iat.

No

picture*

A resource URI to an external profile picture

Yes

iss**

The URL to the issuer of this token

No

aud**

Provides the client id for which this token is valid

No

azp**

The authorizing party

No

exp**

The expiration of the token

No

iat**

The time when the token was issued

No



* Standard OIDC claims according to https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims

** ID Token claims according to https://openid.net/specs/openid-connect-core-1_0.html#IDToken

Refresh tokens

You can use refresh tokens to request additional access tokens when these expire. Rolling refresh tokens are used which means a new refresh token is returned in every token response and the used refresh token is revoked.

Making authenticated requests

Clients that have successfully acquired an access token can pass the access token in the Authorization header using Bearer Authentication:

Authorization: Bearer <access_token>

Example 40. Example
curl -H "Authorization: Bearer <access_token>" https://{region}.snowsoftware.io/api


Response management

It is recommended that clients manage the following status codes when making requests to Snow Atlas APIs:

Response code

Response description

Recommended action

401

Unauthorized

Reauthenticate and retry once

403

Forbidden

Abort

429

Too Many Requests

The backoff time, if any, is indicated by the Retry-After response header in seconds. Abort for the duration specified by Retry-After, and retry.

For more information, see Client error responses (400 - 499).