Skip to main content

Enable Snowflake OAuth with PingFederate

Atlan supports Snowflake External OAuth with PingFederate as the identity provider. Once configured, queries you run in Insights authenticate with each user's PingFederate-issued JWT, and Snowflake runs the query as the mapped Snowflake user with that user's roles and audit identity.

For Okta as the identity provider instead, see Enable Snowflake OAuth.

Prerequisites

Before you begin, make sure you have:

  • A Snowflake connection in Atlan
  • Connection admin role in Atlan
  • ACCOUNTADMIN role in Snowflake (or a role with global CREATE INTEGRATION privilege)
  • Administrator access to your PingFederate instance
  • Egress IP for your Atlan tenant (provided by your Atlan support contact) for allowlisting in PingFederate

What you configure

You complete three setups. All three must be in place before queries succeed.

StepSystemOwnerOutcome
1SnowflakeSnowflake account administratorA security integration that trusts JWTs from your PingFederate instance
2PingFederatePingFederate administratorAn OAuth client and JWT access token manager that issue tokens Snowflake accepts
3AtlanAtlan connection adminSnowflake connection's SSO settings populated with values from Steps 1 and 2

Step 1: Create security integration in Snowflake

Who can do this?

You need the ACCOUNTADMIN role in Snowflake, or a role with global CREATE INTEGRATION privilege.

In a Snowflake SQL worksheet, run the following. Replace <YOUR_PF_ISSUER>, <YOUR_PF_JWKS_URL>, and <YOUR_AUDIENCE> with the values from Step 2.

USE ROLE ACCOUNTADMIN;

CREATE OR REPLACE SECURITY INTEGRATION ATLAN_PINGFEDERATE_SSO
TYPE = EXTERNAL_OAUTH
ENABLED = TRUE
EXTERNAL_OAUTH_TYPE = PING_FEDERATE
EXTERNAL_OAUTH_ISSUER = '<YOUR_PF_ISSUER>'
EXTERNAL_OAUTH_JWS_KEYS_URL = '<YOUR_PF_JWKS_URL>'
EXTERNAL_OAUTH_AUDIENCE_LIST = ('<YOUR_AUDIENCE>')
EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLAIM = ('sub')
EXTERNAL_OAUTH_SNOWFLAKE_USER_MAPPING_ATTRIBUTE = 'LOGIN_NAME'
EXTERNAL_OAUTH_ANY_ROLE_MODE = 'ENABLE'
COMMENT = 'PingFederate-issued JWTs for Atlan Insights.';

What each parameter does:

ParameterDescription
EXTERNAL_OAUTH_ISSUERThe iss claim PingFederate puts in the JWT. Matches the issuer field from PingFederate's OIDC discovery document.
EXTERNAL_OAUTH_JWS_KEYS_URLJWKS endpoint Snowflake uses to fetch PingFederate's signing keys.
EXTERNAL_OAUTH_AUDIENCE_LISTThe aud claim PingFederate puts in the JWT.
EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLAIMWhich JWT claim contains the user identity. sub is the default.
EXTERNAL_OAUTH_SNOWFLAKE_USER_MAPPING_ATTRIBUTEWhich Snowflake user attribute to match. Use LOGIN_NAME by default, or EMAIL_ADDRESS if your Snowflake login names aren't email addresses.
EXTERNAL_OAUTH_ANY_ROLE_MODEENABLE lets the user choose any granted role at session start.
Reusing an existing integration

If you already have an EXTERNAL_OAUTH security integration for another PingFederate-backed application, extend it instead of creating a new one. Add the Atlan audience to the existing list:

ALTER SECURITY INTEGRATION <existing_integration_name>
SET EXTERNAL_OAUTH_AUDIENCE_LIST = ('<existing_audience>', '<new_atlan_audience>');

Create matching Snowflake users

Each Atlan user that queries through Insights needs a Snowflake user whose LOGIN_NAME (or EMAIL_ADDRESS) equals the value PingFederate puts in the JWT mapping claim:

USE ROLE ACCOUNTADMIN;

CREATE USER "JANE_DOE"
LOGIN_NAME = '[email protected]'
DISPLAY_NAME = 'Jane Doe'
DEFAULT_ROLE = '<YOUR_ANALYST_ROLE>'
DEFAULT_WAREHOUSE = '<YOUR_WAREHOUSE>'
COMMENT = 'Atlan Insights user via PingFederate SSO';

GRANT ROLE <YOUR_ANALYST_ROLE> TO USER "JANE_DOE";

Step 2: Configure PingFederate

Who can do this?

You need administrator access to your PingFederate instance.

Create access token manager

Navigate to Applications → OAuth → Access Token Management → Create.

FieldValue
Instance NameAtlan Snowflake JWT
TypeJSON Web Token
Issuer Claim ValueThe value used for EXTERNAL_OAUTH_ISSUER in Step 1
Audience Claim ValueThe value used for EXTERNAL_OAUTH_AUDIENCE_LIST in Step 1
JWS AlgorithmRS256
Active Signing CertificateA certificate published at /pf/JWKS
Token Lifetime (minutes)60

For Attribute Contract, add sub and populate it dynamically per user from your identity store, typically the user's email or username. Don't hardcode the value—every user must receive a JWT with their own identity.

Define OAuth scope

Navigate to Applications → OAuth → Authorization Server Settings → Exclusive Scopes and add session:role-any.

session:role-any is a Snowflake convention. PingFederate must accept and pass it through.

Create OAuth client

Navigate to Applications → OAuth → Clients → Create New Client.

FieldValue
Client IDatlan-snowflake
NameAtlan Snowflake
Client AuthenticationCLIENT SECRET
Client SecretGenerate automatically. Save securely—you share this with Atlan in Step 3.
Restrict to Default Access Token ManagerChecked. Select Atlan Snowflake JWT from the access token manager you created in the previous section.
Allowed Grant TypesAuthorization Code, Refresh Token
Redirect URIs<your-atlan-tenant>/api/service/oauth (for example, https://example.atlan.com/api/service/oauth). Must include the path /api/service/oauth. Wildcards aren't honored.
Allowed Scopessession:role-any

Allow Atlan to reach PingFederate

Atlan's backend makes server-to-server calls to PingFederate's token endpoint. If PingFederate is behind a firewall, WAF, or IP allowlist, add your Atlan tenant egress IP to the allowlist for these paths:

  • /.well-known/openid-configuration
  • /as/authorization.oauth2
  • /as/token.oauth2
  • /pf/JWKS

Your Atlan support contact provides the tenant egress IP.

Step 3: Configure Snowflake connection in Atlan

Who can do this?

You need connection admin role on the Snowflake connection.

  1. From the left menu of any screen, click Assets.

  2. From the Assets page, click the Connector filter, and from the dropdown, click Snowflake.

  3. From the pills below the search bar, click Connection.

  4. From the list of results, select the Snowflake connection you want to configure.

  5. From the sidebar on the right, next to Connection settings, click Edit.

  6. In the Connection settings dialog, open the SSO tab and enter the following values from Step 2:

    FieldValue
    Client IDThe Client ID of the PingFederate OAuth client
    Client SecretThe Client Secret of the PingFederate OAuth client
    Metadata URIhttps://<your-pf-host>/.well-known/openid-configuration
    Scopesession:role-any
    Audience URIAudience Claim Value from PingFederate access token manager
  7. At the bottom right of the dialog, click Update.

Verify integration

After all three setups are in place, validate end-to-end:

  1. Open an Insights worksheet on the configured Snowflake connection.
  2. Run any query. Atlan opens a Login with Snowflake (PingFederate) modal.
  3. Click the login button. A new browser tab opens to your PingFederate authorization endpoint.
  4. Sign in with your usual SSO credentials. The tab closes and the modal flips to Login successful.
  5. Once login is successful, run your queries inside Atlan. Queries authenticate as the PingFederate-authenticated user, not as a shared service account.

Troubleshooting

For specific errors and fixes, see Troubleshooting PingFederate OAuth.

See also