Interactive Training Module

OpenID Connectwith Delinea

A comprehensive guide to OIDC authentication, implementation patterns, and integration with Delinea Secret Server.

OIDC Protocol
OAuth 2.0 Built On
JWT Token Format
SSO Primary Use

What is OIDC?

OpenID Connect (OIDC) is an identity layer built on top of OAuth 2.0 that enables secure, standardized user authentication across applications.

Definition

OpenID Connect

OIDC is an open authentication protocol that sits on top of OAuth 2.0. It standardizes how applications verify the identity of end-users based on authentication performed by an Authorization Server, and obtain basic profile information via REST-like APIs.

Key Relationship

OIDC vs OAuth 2.0

OAuth 2.0 handles authorization — granting access to resources. OIDC adds authentication — confirming who the user is. Together they provide a complete identity and access management framework.

Core Token

The ID Token

OIDC introduces the ID Token — a JWT (JSON Web Token) containing claims about the authenticated user: their identity, when they authenticated, and by which provider. This token can be cryptographically verified.

Delinea Context

OIDC in Secret Server

Delinea Secret Server supports OIDC as both an Identity Provider (IdP) and a Relying Party (RP), enabling it to issue tokens for service accounts and accept tokens from external providers like Azure AD, Okta, or Ping Identity for SSO authentication.

Core Concept

Identity Provider (IdP)

The server that authenticates the user and issues tokens. In OIDC, the IdP exposes a /.well-known/openid-configuration discovery endpoint listing all its capabilities.

Core Concept

Relying Party (RP)

The application that delegates authentication to the IdP. After receiving an ID Token, the RP validates it cryptographically before granting access — it "relies" on the IdP's identity assertion.

Core Concept

UserInfo Endpoint

A protected REST endpoint on the IdP that returns additional claims about the authenticated user. The RP presents an Access Token to retrieve attributes like email, groups, and department beyond what's in the ID Token.

Authentication Flows

OIDC defines several grant types for different application scenarios. Choose the correct flow based on your application's architecture and trust level.

USER APP / RP OIDC PROVIDER RESOURCE ① Login Request ② Redirect + client_id, scope, state ③ Login Page ④ Credentials / MFA ⑤ Auth Code + state ⑥ Token Request (code + secret) ⑦ ID Token + Access Token ⑧ API Call with Access Token
①②User clicks login. App redirects browser to IdP with client_id, redirect_uri, scope (openid profile email), and a random state value.
③④IdP presents login form. User authenticates — password, MFA, smart card etc. Credentials never reach the app.
⑤⑥IdP redirects back with a short-lived authorization code. App exchanges it server-side using its client secret — keeping tokens off the browser.
⑦⑧IdP returns ID Token (who the user is) + Access Token (what they can do). App validates JWT signature, then uses Access Token for API calls.
Hybrid Flow — Code + Token in Front Channel
BROWSER SPA AUTHORIZATION SERVER BACKEND ① Auth request (response_type=code token) ② Code + Access Token (front-channel) ③ Pass auth code to backend ④ Token exchange (back-channel) ⑤ ID Token + Refresh Token
Use CaseBest for SPAs or apps needing immediate token use in the browser while still completing a secure back-channel exchange.
response_typeSet to code token or code id_token to receive both a code and tokens in the front channel simultaneously.
SecurityAlways validate the c_hash or at_hash claim in the ID Token to bind it to the auth code/access token received.
Client Credentials — Machine-to-Machine (M2M)
SERVICE / DAEMON OIDC TOKEN ENDPOINT ① POST /token grant_type=client_credentials client_id + client_secret (or JWT assertion) ② Access Token (JWT, no user context) ③ Call protected resource API
No UserClient Credentials has no user interaction. Used by background services, scripts, or microservices to authenticate with other services.
DelineaSecret Server supports Client Credentials for automated pipelines — vault retrieval, rotation jobs, and CI/CD secret injection.
Best PracticeUse JWT Bearer assertion instead of client_secret for higher-security M2M flows. Sign the assertion with the service's private key.
Delinea Secret Server — OIDC SSO Login Flow
ADMIN USER SECRET SERVER EXTERNAL IdP ACTIVE DIRECTORY ① Access Secret Server URL ② Display OIDC Login Button ③ Click "Login with SSO" ④ Redirect to IdP (Okta/Azure/Ping) ⑤ User authenticates + MFA ⑥ ID Token (name, email, groups) ⑦ Validate token claims → map to AD groups ⑧ Return roles + permissions ⑨ Access Granted
ConfigIn Secret Server: Admin → Configuration → OIDC. Paste IdP discovery URL and register the SS redirect URI in your IdP as a client app.
Claims MappingMap OIDC claims (like groups) to Secret Server roles. Group membership from IdP can automatically grant vault folder access.
FallbackAlways retain a local admin account. If the IdP is unavailable, break-glass access is needed to maintain system access.
SyncCombine OIDC login with AD sync. OIDC handles authentication; AD provides authoritative group membership for role-based access.

Use Cases

Click any use case to explore Delinea-specific scenarios, implementation notes, and benefits.

🔐

SSO for Secret Server

Centralise login through an enterprise IdP — Azure AD, Okta, Ping Identity.

🤖

CI/CD Pipeline Secrets

Pipelines retrieve secrets at runtime using client credentials — no hardcoded passwords.

🔄

Privileged Session Federation

Use OIDC tokens to launch privileged sessions without re-authenticating.

📱

Mobile App Authentication

Native/mobile apps use PKCE flow for secure, passwordless vault access.

🏢

Multi-Tenant Environments

Serve different business units with isolated OIDC tenants from one Secret Server.

🛡️

Zero Trust Access

Every secret access request validated against fresh OIDC claims — no implicit trust.

Implementation Guide

Follow these steps to configure OIDC authentication with Delinea Secret Server. Track your progress as you go.

1
Register IdP App
2
Configure Secret Server
3
Map Claims & Groups
4
Token Validation
5
Test & Verify
Step 01 Register Application in Your IdP

Before configuring Secret Server, you must register it as an OIDC client application in your Identity Provider (Azure AD, Okta, Ping Identity, etc.).

⚠ Important

The Redirect URI must exactly match what you configure in Secret Server. A mismatch will cause authentication failures — even a trailing slash difference matters.

Required Application Settings

  • Application type: Web / Server-side
  • Grant types: Authorization Code
  • Redirect URI: https://your-secretserver/signin-oidc
  • Scopes: openid profile email groups
  • Note down: Client ID, Client Secret, Discovery URL
Azure AD — App Registration (PowerShell)
# Register Secret Server as OIDC app in Azure AD
$app = New-AzADApplication `
  -DisplayName "Delinea Secret Server" `
  -ReplyUrls "https://secretserver.corp.com/signin-oidc" `
  -AvailableToOtherTenants $false

# Create client secret (note: rotate every 90 days)
$cred = New-AzADAppCredential `
  -ApplicationId $app.AppId `
  -EndDate (Get-Date).AddDays(90)

# Output discovery URL
$tenantId = (Get-AzContext).Tenant.Id
Write-Output "Discovery URL: https://login.microsoftonline.com/$tenantId/v2.0/.well-known/openid-configuration"
Write-Output "Client ID: $($app.AppId)"
Step 02 Configure OIDC in Secret Server

Navigate to Admin → Configuration → Login → OpenID Connect in Secret Server to enter the IdP details.

Secret Server — OIDC Configuration (REST API)
# POST to Secret Server API to configure OIDC provider
POST /api/v1/configuration/oidc/providers
Authorization: Bearer {admin_token}
Content-Type: application/json

{
  "name": "Corporate Azure AD",
  "clientId": "a1b2c3d4-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "clientSecret": "~YourClientSecretHere~",
  "discoveryUrl": "https://login.microsoftonline.com/{tenantId}/v2.0/.well-known/openid-configuration",
  "scopes": ["openid", "profile", "email", "groups"],
  "responseType": "code",
  "enablePkce": true,
  "autoProvisionUsers": true,
  "active": true
}
  • Discovery URL auto-populates endpoints — verify token_endpoint and userinfo_endpoint are reachable
  • Enable PKCE (code_challenge_method=S256) even for confidential clients
  • Set Auto Provision to create local user accounts on first SSO login
  • Configure logout redirect URL if IdP-initiated logout is required
ℹ Discovery Endpoint

Secret Server automatically fetches the IdP's .well-known/openid-configuration document to populate all required endpoint URLs, supported algorithms, and JWKS URI. Always prefer this over manual endpoint entry.

Step 03 Map Claims & Group Synchronisation

Claims mapping connects OIDC token claims to Secret Server user attributes and roles. Group claims drive automatic role assignment.

Sample ID Token Claims (JWT Payload)
{
  "sub": "1234567890-abcdef",            // Unique user ID
  "name": "Jane Smith",
  "email": "jsmith@corp.com",
  "email_verified": true,
  "groups": [
    "SS-VaultAdmins",
    "SS-UnixOperators"
  ],
  "iss": "https://login.microsoftonline.com/{tenant}/v2.0",
  "aud": "a1b2c3d4-xxxx-xxxx-xxxx-xxxxxxxxxxxx",  // Must match client_id
  "iat": 1700000000,
  "exp": 1700003600,
  "nonce": "abc123xyz"                          // Replay protection
}

Claims Mapping Configuration

OIDC Claim
SS Attribute
Notes
sub
Username (unique)
Immutable ID
email
Email Address
For notifications
name
Display Name
Profile display
groups
SS Role Assignment
Auto role mapping ✓
✓ Pro Tip

Use AD security groups that mirror Secret Server roles (e.g., SS-Admins, SS-Operators). When a user is added to the AD group, they automatically get the corresponding SS role on next login — no manual SS admin action needed.

Step 04 Token Validation & Security Hardening

Secret Server validates every ID Token before granting access. Understanding this validation chain helps troubleshoot issues and ensures proper security posture.

JWT Validation Checklist (RFC 8725)
// Secret Server performs these checks on every ID Token

validateToken(idToken) {
  // 1. Signature — fetch public key from JWKS URI
  verifySignature(idToken, jwksUri);

  // 2. Issuer (iss) must match configured IdP
  assert(idToken.iss === configuredIssuer);

  // 3. Audience (aud) must include our client_id
  assert(idToken.aud.includes(clientId));

  // 4. Expiry (exp) must be in the future
  assert(idToken.exp > Date.now() / 1000);

  // 5. Issued-at (iat) not too far in the past
  assert(Date.now() / 1000 - idToken.iat < 300);

  // 6. Nonce matches what was sent in auth request
  assert(idToken.nonce === sessionNonce);

  // 7. Algorithm (alg) must be RS256 or ES256
  assert(['RS256', 'ES256'].includes(idToken.header.alg));
}
⚠ Never Accept 'alg:none'

Always explicitly whitelist permitted signing algorithms. Accepting none or HS256 with a shared secret from an untrusted source allows token forgery attacks. Secret Server enforces RS256/ES256 by default — do not override this.

Step 05 Test, Verify & Go Live

Before enabling OIDC for all users, validate the configuration with a test user and confirm all expected behaviours.

Pre-Go-Live Checklist

  • Test login with a non-admin user account through IdP SSO
  • Confirm correct SS role assigned via group claim mapping
  • Verify logout clears session at both SS and IdP (single logout)
  • Confirm token refresh works (user stays logged in beyond initial token expiry)
  • Test break-glass: log in with local admin while OIDC is active
  • Review SS audit logs to confirm OIDC login events are captured
  • Document IdP client secret rotation procedure and schedule
Verify OIDC Discovery Endpoint (curl)
# Fetch and inspect IdP discovery document
curl -s "https://login.microsoftonline.com/{tenant}/v2.0/.well-known/openid-configuration" \
  | python3 -m json.tool

# Verify JWKS endpoint is accessible from Secret Server host
curl -s "https://login.microsoftonline.com/{tenant}/discovery/v2.0/keys" \
  | python3 -c "import sys,json; keys=json.load(sys.stdin)['keys']; print(f'{len(keys)} signing keys found')"

# Test token decode (replace TOKEN with actual JWT)
TOKEN="eyJhbGc..."
echo $TOKEN | cut -d. -f2 | base64 -d 2>/dev/null | python3 -m json.tool
✓ Ready to Go Live

Once all checklist items are confirmed, navigate to Admin → Configuration → Login and set the OIDC provider as the default login method. Consider a phased rollout — enable for a pilot group first before enforcing org-wide.

Benefits of OIDC with Secret Server

Why invest in OIDC integration? Here are the operational, security, and compliance benefits organisations realise.

🔒

Eliminate Password Sprawl

Users authenticate once via their corporate IdP and gain vault access without a separate Secret Server password. Reduces the credential attack surface and eliminates password fatigue across multiple systems.

↓ Credential exposure risk

Enforce Strong MFA

OIDC delegates authentication to the enterprise IdP, which can enforce phishing-resistant MFA (FIDO2, hardware tokens) before issuing tokens. Secret Server inherits this security without managing MFA itself.

↑ Authentication assurance level
🚀

Automated User Lifecycle

User onboarding/offboarding propagates automatically. When IT disables a user in Azure AD or Okta, their OIDC tokens stop being issued — access to Secret Server terminates without any vault admin action.

↓ Orphaned account risk
📋

Centralised Audit Trail

Authentication events are recorded at both the IdP and Secret Server. Security teams get a unified view of who accessed the vault, from which device, with what authentication method — critical for compliance reporting.

✓ SOC 2 / ISO 27001 / PCI DSS
🏗️

Dynamic Role-Based Access

Group membership in AD/IdP directly drives vault permissions. Add a user to the "SS-DBAdmins" group and they immediately gain access to database credential folders — consistent RBAC without manual vault configuration.

↓ Manual provisioning overhead
🌐

Zero-Password Pipelines

CI/CD pipelines use Client Credentials flow to retrieve secrets at build/deploy time via short-lived tokens. No static service account passwords in config files, environment variables, or source code.

↓ DevSecOps credential risk

Knowledge Check

Test your understanding of OIDC and its application within Delinea Secret Server.

Glossary

Key OIDC and PAM terms for quick reference.

Authorization Code
A short-lived, single-use code issued by the IdP. Must be exchanged server-side for tokens — never exposed to end users.
ID Token
A signed JWT containing claims about the authenticated user. Issued by the IdP as part of the OIDC protocol — specific to OIDC, not OAuth 2.0.
Access Token
A credential used to access protected resources (APIs). May be a JWT or opaque string. Has a scope that limits what it can be used for.
Refresh Token
A long-lived token used to obtain new access tokens without re-authentication. Should be stored securely and rotated on use.
JWKS URI
JSON Web Key Set endpoint. Serves the IdP's public keys used to verify token signatures. Fetched automatically via the discovery document.
PKCE
Proof Key for Code Exchange (RFC 7636). Prevents auth code interception attacks by binding the code request to a cryptographic verifier known only to the client.
Discovery Document
JSON document at /.well-known/openid-configuration advertising all IdP endpoints, supported scopes, and algorithms.
Claims
Key-value pairs in a JWT encoding information about the user or token (e.g., sub, email, groups, exp). Standard claims are defined in OIDC Core spec.
Nonce
A random value included in the auth request and embedded in the ID Token. Prevents replay attacks by ensuring each token matches a specific auth session.
Relying Party (RP)
The application that offloads authentication to an OIDC provider. In a Delinea deployment, Secret Server acts as the RP when configured for SSO.
Client Credentials
OAuth 2.0 grant type for machine-to-machine auth. No user involved — the service authenticates using its own client_id and client_secret.
PAM
Privileged Access Management. Delinea Secret Server is a PAM solution — it vaults, controls, and audits access to privileged credentials and systems.