Skip to content
Back to skills

2700 Sso Okta Tutorial 76fd8f99

ASecurity

This tutorial walks you through setting up Okta Single Sign-On (SSO) authentication for ContextForge, enabling enterprise identity management with Okta's comprehensive platform.

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 11, 2026
securitypythonrustgobashtestinggitapisecuritydocumentation

Works with

  • cli
  • api
  • mcp

Security analysis

A96/100
  • mediumUses curl or wget to download content

Pro shows the line behind each finding and how to fix it

Scanned October 11, 2026

npx -y skills add tools-only/X-Skills --skill 2700-sso-okta-tutorial_76fd8f99 --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 2700 Sso Okta Tutorial 76fd8f99?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 2700 Sso Okta Tutorial 76fd8f99
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tools-only-2700-sso-okta-tutorial-76fd8f99/badge)](https://www.skillsdirectory.com/skills/tools-only-2700-sso-okta-tutorial-76fd8f99)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
# Okta OIDC Setup Tutorial

This tutorial walks you through setting up Okta Single Sign-On (SSO) authentication for ContextForge, enabling enterprise identity management with Okta's comprehensive platform.

## Prerequisites

- ContextForge installed and running
- Okta account with admin access (Developer or Enterprise edition)
- Access to your gateway's environment configuration

## Step 1: Create Okta Application Integration

### 1.1 Access Okta Admin Console

1. Navigate to your Okta admin console

   - URL format: `https://[org-name].okta.com` or `https://[org-name].oktapreview.com`

2. Log in with your administrator credentials
3. Go to **Applications** → **Applications** in the left sidebar

### 1.2 Create New App Integration

1. Click **Create App Integration**
2. Choose **OIDC - OpenID Connect** as the sign-in method
3. Choose **Web Application** as the application type
4. Click **Next**

### 1.3 Configure General Settings

**App integration name**: `ContextForge`

**App logo**: Upload your organization's logo (optional)

**Grant type**: Select **Authorization Code** (should be pre-selected)

### 1.4 Configure Sign-in Settings

**Sign-in redirect URIs**: **Critical - must be exact**

- Production: `https://gateway.yourcompany.com/auth/sso/callback/okta`
- Development: `http://localhost:8000/auth/sso/callback/okta`
- Click **Add URI** if you need both

**Sign-out redirect URIs** (optional):

- Production: `https://gateway.yourcompany.com/admin/login`
- Development: `http://localhost:8000/admin/login`

**Controlled access**: Choose appropriate option:

- **Allow everyone in your organization to access** (most common)
- **Limit access to selected groups** (recommended for production)
- **Skip group assignment for now** (development only)

### 1.5 Save and Obtain Credentials

1. Click **Save**
2. After creation, you'll see the **Client Credentials**:

   - **Client ID**: Copy this value
   - **Client secret**: Copy this value (click to reveal)

3. Note your **Okta domain** (e.g., `https://dev-12345.okta.com`)

## Step 2: Configure Okta Application Settings

### 2.1 Configure Token Settings (Optional)

1. In your application, go to the **General** tab
2. Scroll to **General Settings** → **Edit**
3. Configure token lifetimes:

   - **Access token lifetime**: 1 hour (default)
   - **Refresh token lifetime**: 90 days (default)
   - **ID token lifetime**: 1 hour (default)

### 2.2 Configure Claims (Advanced)

1. Go to the **Sign On** tab
2. Scroll to **OpenID Connect ID Token**
3. Configure claims if you need custom user attributes:

   - `groups` - User's group memberships
   - `department` - User's department
   - `title` - User's job title

Example custom claim configuration:

- **Name**: `groups`
- **Include in token type**: ID Token, Always
- **Value type**: Groups
- **Filter**: Matches regex `.*` (for all groups)

## Step 3: Configure User and Group Access

### 3.1 Assign Users to Application

1. Go to the **Assignments** tab in your application
2. Click **Assign** → **Assign to People**
3. Select users who should have access
4. Click **Assign** for each user
5. Click **Save and Go Back**

### 3.2 Assign Groups to Application (Recommended)

1. Click **Assign** → **Assign to Groups**
2. Select groups that should have access:

   - `Everyone` - All users (not recommended for production)
   - `ContextForge Users` - Custom group for gateway access
   - `IT Admins` - Administrative access

3. For each group, you can set a custom **Application username**
4. Click **Assign** and **Done**

### 3.3 Create Custom Groups (Optional)

If you want specific groups for ContextForge:

1. Go to **Directory** → **Groups**
2. Click **Add Group**
3. Create groups like:

   - **Name**: `ContextForge Users`
   - **Description**: `Users with access to ContextForge`

4. Add appropriate users to these groups

## Step 4: Configure ContextForge Environment

### 4.1 Update Environment Variables

Add these variables to your `.env` file:

```bash
# Enable SSO System
SSO_ENABLED=true

# Okta OIDC Configuration
SSO_OKTA_ENABLED=true
SSO_OKTA_CLIENT_ID=0oa1b2c3d4e5f6g7h8i9
SSO_OKTA_CLIENT_SECRET=AbCdEfGhIjKlMnOpQrStUvWxYz1234567890abcdef
SSO_OKTA_ISSUER=https://dev-12345.okta.com

# Optional: Auto-create users on first login
SSO_AUTO_CREATE_USERS=true

# Optional: Restrict to corporate email domains
SSO_TRUSTED_DOMAINS=["yourcompany.com"]

# Optional: Preserve local admin authentication
SSO_PRESERVE_ADMIN_AUTH=true
```

### 4.2 Example Production Configuration

```bash
# Production Okta SSO Setup
SSO_ENABLED=true
SSO_OKTA_ENABLED=true
SSO_OKTA_CLIENT_ID=0oa1b2c3d4e5f6g7h8i9
SSO_OKTA_CLIENT_SECRET=AbCdEfGhIjKlMnOpQrStUvWxYz1234567890abcdef
SSO_OKTA_ISSUER=https://acmecorp.okta.com

# Enterprise security settings
SSO_AUTO_CREATE_USERS=true
SSO_TRUSTED_DOMAINS=["acmecorp.com"]
SSO_PRESERVE_ADMIN_AUTH=true

# Optional: Custom scopes for additional user attributes
SSO_OKTA_SCOPE="openid profile email groups"
```

### 4.3 Development Configuration

```bash
# Development Okta SSO Setup
SSO_ENABLED=true
SSO_OKTA_ENABLED=true
SSO_OKTA_CLIENT_ID=0oa_dev_client_id
SSO_OKTA_CLIENT_SECRET=dev_client_secret
SSO_OKTA_ISSUER=https://dev-12345.oktapreview.com

# More permissive for testing
SSO_AUTO_CREATE_USERS=true
SSO_PRESERVE_ADMIN_AUTH=true
```

### 4.4 Advanced Configuration Options

```bash
# Custom OAuth scopes for enhanced user data
SSO_OKTA_SCOPE="openid profile email groups address phone"

# Group mapping for automatic team assignment
OKTA_GROUP_MAPPING={"ContextForge Admins": "admin-team-uuid", "ContextForge Users": "user-team-uuid"}

# Custom authorization server (if using custom Okta authorization server)
SSO_OKTA_ISSUER=https://dev-12345.okta.com/oauth2/custom-auth-server-id
```

## Step 5: Restart and Verify Gateway

### 5.1 Restart the Gateway

```bash
# Development
make dev

# Or directly with uvicorn
uvicorn mcpgateway.main:app --reload --host 0.0.0.0 --port 8000

# Production
make serve
```

### 5.2 Verify Okta SSO is Enabled

Test that Okta appears in SSO providers:

```bash
# Check if Okta is listed
curl -X GET http://localhost:8000/auth/sso/providers

# Should return Okta in the list:
[
  {
    "id": "okta",
    "name": "okta",
    "display_name": "Okta"
  }
]
```

## Step 6: Test Okta SSO Login

### 6.1 Access Login Page

1. Navigate to your gateway's login page:

   - Development: `http://localhost:8000/admin/login`
   - Production: `https://gateway.yourcompany.com/admin/login`

2. You should see a "Continue with Okta" button

### 6.2 Test Authentication Flow

1. Click **Continue with Okta**
2. You'll be redirected to Okta's sign-in page
3. Enter your Okta credentials
4. Complete any multi-factor authentication if required
5. Grant consent for the application if prompted
6. You'll be redirected back to the gateway admin panel
7. You should be logged in successfully

### 6.3 Verify User Creation

Check that a user was created:

```bash
# Using the admin API (requires admin token)
curl -H "Authorization: Bearer YOUR_ADMIN_TOKEN" \
  http://localhost:8000/auth/users

# Look for your Okta email in the user list
```

## Step 7: Okta Advanced Features (Enterprise)

### 7.1 Multi-Factor Authentication (MFA)

Configure MFA policies in Okta:

1. Go to **Security** → **Multifactor**
2. Set up MFA policies for your ContextForge application
3. Configure factors (SMS, Email, Okta Verify app, etc.)
4. Users will be prompted for MFA during login

### 7.2 Adaptive Authentication

Configure risk-based authentication:

1. Go to **Security** → **Authentication** → **Sign On**
2. Create policies with conditions:

   - Device trust
   - Network location
   - User risk level
   - Time-based restrictions

### 7.3 Universal Directory Integration

Sync user attributes from external directories:

1. Go to **Directory** → **Directory Integrations**
2. Configure integration with:

   - Active Directory
   - LDAP
   - HR systems (Workday, BambooHR, etc.)

3. Map attributes for automatic user provisioning

### 7.4 API Access Management

For programmatic API access:

1. Create a custom authorization server
2. Configure API scopes and claims
3. Issue API tokens for service-to-service authentication

## Step 8: Production Deployment Checklist

### 8.1 Security Requirements

- [ ] HTTPS enforced for all redirect URIs
- [ ] Client secrets stored securely (vault/secret management)
- [ ] MFA policies configured appropriately
- [ ] Adaptive authentication policies set
- [ ] Password policies enforced
- [ ] Session management configured

### 8.2 Okta Configuration

- [ ] Application created with correct settings
- [ ] Appropriate users/groups assigned access
- [ ] Custom claims configured if needed
- [ ] Token lifetimes set appropriately
- [ ] Sign-out redirect URIs configured

### 8.3 Monitoring and Compliance

- [ ] System Log monitoring enabled
- [ ] Audit trail configured
- [ ] Compliance reporting set up (if required)
- [ ] Regular access reviews scheduled

## Troubleshooting

### Error: "SSO authentication is disabled"

**Problem**: SSO endpoints return 404
**Solution**: Set `SSO_ENABLED=true` and restart gateway

### Error: "invalid_client"

**Problem**: Wrong client ID or client secret
**Solution**: Verify credentials from Okta application settings

```bash
# Double-check these values match your Okta application
SSO_OKTA_CLIENT_ID=your-actual-client-id
SSO_OKTA_CLIENT_SECRET=your-actual-client-secret
```

### Error: "redirect_uri_mismatch"

**Problem**: Okta redirect URI doesn't match
**Solution**: Verify exact URL match in Okta application settings

```bash
# Okta redirect URI must exactly match:
https://your-domain.com/auth/sso/callback/okta

# Common mistakes:
https://your-domain.com/auth/sso/callback/okta/  # Extra slash
http://your-domain.com/auth/sso/callback/okta   # HTTP instead of HTTPS
https://your-domain.com/auth/sso/callback/oauth # Wrong provider ID
```

### Error: "User is not assigned to the client application"

**Problem**: User doesn't have access to the application
**Solution**: Assign user to the application

1. In Okta admin console, go to Applications → [Your App]
2. Go to Assignments tab
3. Assign the user or their group to the application

### Error: "The issuer specified in the request is invalid"

**Problem**: Wrong Okta domain or issuer URL
**Solution**: Verify issuer URL matches your Okta domain

```bash
# Get the correct issuer from Okta's well-known configuration
curl https://[your-okta-domain].okta.com/.well-known/openid_configuration

# Use the "issuer" field value
```

### MFA Bypass Issues

**Problem**: Users not prompted for MFA
**Solution**: Check MFA policies and user enrollment

1. Verify MFA policies are active for your application
2. Check user MFA enrollment status
3. Ensure policy conditions are met (device, location, etc.)

### Token Validation Errors

**Problem**: JWT tokens failing validation
**Solution**: Check token configuration and clock sync

1. Verify token lifetime settings
2. Check server clock synchronization
3. Validate JWT signature verification

## Testing Checklist

- [ ] Okta application integration created
- [ ] Client ID and secret configured
- [ ] Redirect URIs set correctly
- [ ] Users/groups assigned to application
- [ ] Environment variables configured
- [ ] Gateway restarted with new config
- [ ] `/auth/sso/providers` returns Okta provider
- [ ] Login page shows "Continue with Okta" button
- [ ] Authentication flow completes successfully
- [ ] User appears in gateway user list
- [ ] MFA working (if configured)
- [ ] Group claims included in tokens (if configured)

## Okta API Integration (Advanced)

### Programmatic User Management

Use Okta APIs for advanced user management:

```python
# Example: Sync Okta groups with Gateway teams
import requests

def sync_okta_groups():
    okta_token = "your-okta-api-token"
    okta_domain = "https://dev-12345.okta.com"

    # Get user's groups from Okta
    response = requests.get(
        f"{okta_domain}/api/v1/users/{user_id}/groups",
        headers={"Authorization": f"SSWS {okta_token}"}
    )

    groups = response.json()
    return [group['profile']['name'] for group in groups]
```

### Custom Authorization Server

For advanced API access patterns:

1. Create custom authorization server in Okta
2. Define custom scopes for ContextForge APIs
3. Configure audience restrictions
4. Use for service-to-service authentication

## Next Steps

After Okta SSO is working:

1. **Configure MFA policies** for enhanced security
2. **Set up adaptive authentication** based on risk
3. **Integrate with existing directories** (AD/LDAP)
4. **Configure custom user attributes** and claims
5. **Set up automated user provisioning/deprovisioning**
6. **Monitor authentication patterns** for security insights

## Related Documentation

- [Complete SSO Guide](sso.md) - Full SSO documentation
- [GitHub SSO Tutorial](sso-github-tutorial.md) - GitHub setup guide
- [Google SSO Tutorial](sso-google-tutorial.md) - Google setup guide
- [IBM Security Verify Tutorial](sso-ibm-tutorial.md) - IBM setup guide
- [Team Management](teams.md) - Managing teams and roles
- [RBAC Configuration](rbac.md) - Role-based access control

## Support

If you encounter issues:

1. Check Okta System Log for authentication errors
2. Enable debug logging: `LOG_LEVEL=DEBUG`
3. Review gateway logs for Okta-specific errors
4. Verify all Okta settings match tutorial exactly
5. Use Okta's support resources and community forums

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.