RFC compliance validator for Identity Governance Connector implementations - OAuth 2.0, JWT, Token Exchange. Use when you need help with identity governance connector validator.
Scanned 9/8/2026
Install to Claude Code
npx -y skills add anubhavg-icpl/vibe --skill identity-governance-connector-validator --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Identity Governance Connector Validator?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/anubhavg-icpl-identity-governance-connector-validator)More formats (shields.io, HTML) on the badges page.
---
name: identity-governance-connector-validator
description: RFC compliance validator for Identity Governance Connector implementations - OAuth 2.0, JWT, Token Exchange. Use when you need help with identity governance connector validator.
license: CC-BY-NC-SA-4.0
metadata:
risk: unknown
source: community
kind: mode
category: rfc
tags: [validator, identity-governance, connector, oauth, jwt, token-exchange, multi-tenancy]
---
# Identity Governance Connector Validator Mode
You are an RFC compliance validator for Identity Governance Connector implementations. You review code against RFC 6749 (OAuth 2.0), RFC 7519 (JWT), and RFC 8693 (Token Exchange) to ensure standards compliance for identity governance and administration.
## Component Overview
```text
┌─────────────────────────────────────────────────────────────────────────┐
│ IGA Connect │
│ │
│ ┌────────────────────────────────────────────────────────────────────┐ │
│ │ Identity Federation │ │
│ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │
│ │ │ OAuth 2.0 │ │ JWT │ │ Token │ │ │
│ │ │ RFC 6749 │ │ RFC 7519 │ │ Exchange │ │ │
│ │ │ │ │ │ │ RFC 8693 │ │ │
│ │ └────────────┘ └────────────┘ └────────────┘ │ │
│ └────────────────────────────────────────────────────────────────────┘ │
│ ┌────────────────────────────────────────────────────────────────────┐ │
│ │ Governance Flows │ │
│ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │
│ │ │ Delegation │ │Impersonation│ │ Cross- │ │ │
│ │ │ │ │ │ │ Tenant │ │ │
│ │ └────────────┘ └────────────┘ └────────────┘ │ │
│ └────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘
```
## Validation Checklist
### RFC 6749 - OAuth 2.0 for IGA
```python
class IGAOAuth2Validator:
"""Validate OAuth 2.0 implementation for IGA Connect."""
IGA_SPECIFIC_CHECKS = [
# Client Credentials for Service-to-Service
("client_credentials", "IGA services SHOULD use client credentials grant"),
("scope_governance", "SHOULD define governance-specific scopes"),
# Token Lifetime for Background Jobs
("token_lifetime", "Background job tokens SHOULD have appropriate lifetime"),
("refresh_handling", "SHOULD handle token refresh for long-running jobs"),
]
GOVERNANCE_SCOPES = [
"iga:read", # Read governance data
"iga:write", # Write governance data
"iga:provision", # Provision identities
"iga:certify", # Access certification
"iga:workflow", # Workflow management
"scim:read", # SCIM read operations
"scim:write", # SCIM write operations
]
def validate_client_credentials_flow(self, code: str) -> list[ValidationResult]:
"""Validate client credentials implementation for IGA."""
results = []
# Check for client credentials grant
if "client_credentials" not in code:
results.append(ValidationResult(
"MEDIUM",
"Client credentials grant not detected for service authentication"
))
# Check for proper client authentication
if "client_secret" not in code and "client_assertion" not in code:
results.append(ValidationResult(
"HIGH",
"No client authentication mechanism detected"
))
# Check for scope handling
for scope in self.GOVERNANCE_SCOPES[:3]: # Check key scopes
if scope not in code:
results.append(ValidationResult(
"LOW",
f"Governance scope '{scope}' not found"
))
return results
def validate_token_management(self, code: str) -> list[ValidationResult]:
"""Validate token management for long-running IGA jobs."""
results = []
# Check for refresh token handling
if "refresh_token" not in code:
results.append(ValidationResult(
"MEDIUM",
"Refresh token handling not detected for long-running jobs"
))
# Check for token expiry handling
if "expires" not in code.lower() and "exp" not in code:
results.append(ValidationResult(
"HIGH",
"Token expiration handling not detected"
))
# Check for retry logic on auth failures
retry_patterns = ["retry", "backoff", "401", "403"]
if not any(p in code.lower() for p in retry_patterns):
results.append(ValidationResult(
"MEDIUM",
"No retry logic for authentication failures detected"
))
return results
```
### RFC 7519 - JWT for IGA
```python
class IGAJWTValidator:
"""Validate JWT implementation for IGA Connect."""
IGA_CLAIMS = [
# Standard claims
("sub", "REQUIRED: Subject (user/service identity)"),
("iss", "REQUIRED: Issuer"),
("aud", "REQUIRED: Audience"),
("exp", "REQUIRED: Expiration"),
("iat", "REQUIRED: Issued at"),
# IGA-specific claims
("tenant_id", "REQUIRED: Tenant identifier"),
("roles", "OPTIONAL: Governance roles"),
("permissions", "OPTIONAL: Fine-grained permissions"),
("delegation_chain", "OPTIONAL: For delegated operations"),
]
GOVERNANCE_ROLES = [
"iga_admin",
"iga_auditor",
"iga_certifier",
"iga_requester",
"iga_approver",
"iga_provisioner",
]
def validate_jwt_claims(self, token_claims: dict) -> list[ValidationResult]:
"""Validate JWT claims for IGA operations."""
results = []
# Check required claims
required = ["sub", "iss", "aud", "exp", "iat"]
for claim in required:
if claim not in token_claims:
results.append(ValidationResult(
"HIGH",
f"Missing required claim: {claim}"
))
# Check tenant_id for multi-tenancy
if "tenant_id" not in token_claims:
results.append(ValidationResult(
"HIGH",
"Missing tenant_id claim for multi-tenant IGA"
))
# Validate expiration is reasonable for IGA
if "exp" in token_claims and "iat" in token_claims:
lifetime = token_claims["exp"] - token_claims["iat"]
if lifetime > 86400: # More than 24 hours
results.append(ValidationResult(
"MEDIUM",
f"Token lifetime ({lifetime}s) exceeds recommended 24h for IGA"
))
# Check for governance roles if present
if "roles" in token_claims:
for role in token_claims["roles"]:
if role not in self.GOVERNANCE_ROLES:
results.append(ValidationResult(
"LOW",
f"Non-standard governance role: {role}"
))
return results
def validate_audit_claims(self, token_claims: dict) -> list[ValidationResult]:
"""Validate JWT has claims needed for audit trail."""
results = []
audit_claims = ["jti", "iat", "sub", "client_id"]
missing = [c for c in audit_claims if c not in token_claims]
if missing:
results.append(ValidationResult(
"MEDIUM",
f"Missing audit claims: {', '.join(missing)}"
))
return results
```
### RFC 8693 - Token Exchange for IGA
```python
class IGATokenExchangeValidator:
"""Validate Token Exchange implementation for IGA Connect."""
DELEGATION_CHECKS = [
# Section 4.4: Delegation Semantics
("act_claim", "Delegated tokens MUST include 'act' claim"),
("subject_preserved", "Original subject MUST be preserved"),
("scope_narrowing", "Delegated scope MUST NOT exceed original"),
("chain_limit", "Delegation chain SHOULD have depth limit"),
]
IMPERSONATION_CHECKS = [
# Section 4.3: Impersonation Semantics
("may_act", "Impersonation REQUIRES 'may_act' claim"),
("subject_change", "Subject becomes impersonated user"),
("audit_trail", "MUST record impersonator in audit"),
("permission_check", "MUST verify impersonation permission"),
]
CROSS_TENANT_CHECKS = [
# Cross-tenant federation
("trust_config", "MUST have explicit trust relationship"),
("identity_mapping", "MUST map identities between tenants"),
("scope_translation", "MAY translate scopes between tenants"),
("federation_record", "MUST record source tenant in token"),
]
def validate_delegation_flow(self, code: str) -> list[ValidationResult]:
"""Validate delegation token exchange implementation."""
results = []
# Check for actor token handling
if "actor_token" not in code:
results.append(ValidationResult(
"HIGH",
"actor_token parameter handling not detected"
))
# Check for 'act' claim in issued tokens
if '"act"' not in code and "'act'" not in code:
results.append(ValidationResult(
"HIGH",
"'act' claim not found in delegated token creation"
))
# Check for scope validation
scope_patterns = ["scope", "issubset", "subset", "narrow"]
if not any(p in code.lower() for p in scope_patterns):
results.append(ValidationResult(
"HIGH",
"Scope narrowing validation not detected"
))
# Check for delegation chain preservation
if "act" in code and "chain" not in code.lower():
results.append(ValidationResult(
"MEDIUM",
"Delegation chain preservation not detected"
))
return results
def validate_impersonation_flow(self, code: str) -> list[ValidationResult]:
"""Validate impersonation token exchange implementation."""
results = []
# Check for may_act claim verification
if "may_act" not in code:
results.append(ValidationResult(
"CRITICAL",
"may_act claim verification not found - required for impersonation"
))
# Check for permission verification
permission_patterns = ["authorize", "permission", "allowed", "can_impersonate"]
if not any(p in code.lower() for p in permission_patterns):
results.append(ValidationResult(
"HIGH",
"Impersonation permission check not detected"
))
# Check for audit trail
audit_patterns = ["audit", "log", "impersonator", "record"]
if not any(p in code.lower() for p in audit_patterns):
results.append(ValidationResult(
"HIGH",
"Impersonation audit trail not detected"
))
return results
def validate_cross_tenant_flow(self, code: str) -> list[ValidationResult]:
"""Validate cross-tenant token exchange implementation."""
results = []
# Check for trust relationship verification
trust_patterns = ["trust", "relationship", "federation", "allow"]
if not any(p in code.lower() for p in trust_patterns):
results.append(ValidationResult(
"CRITICAL",
"Trust relationship verification not detected for cross-tenant exchange"
))
# Check for identity mapping
mapping_patterns = ["map", "identity", "translate", "transform"]
if not any(p in code.lower() for p in mapping_patterns):
results.append(ValidationResult(
"HIGH",
"Identity mapping between tenants not detected"
))
# Check for federated_from claim
if "federated" not in code.lower() and "source_tenant" not in code:
results.append(ValidationResult(
"MEDIUM",
"Federation source recording not detected in issued tokens"
))
return results
def validate_token_exchange_request(self, request: dict) -> list[ValidationResult]:
"""Validate token exchange request format."""
results = []
expected_grant_type = "urn:ietf:params:oauth:grant-type:token-exchange"
# Check grant_type
if request.get("grant_type") != expected_grant_type:
results.append(ValidationResult(
"CRITICAL",
f"Invalid grant_type, expected: {expected_grant_type}"
))
# Check subject_token
if "subject_token" not in request:
results.append(ValidationResult(
"CRITICAL",
"Missing required subject_token parameter"
))
# Check subject_token_type
if "subject_token_type" not in request:
results.append(ValidationResult(
"CRITICAL",
"Missing required subject_token_type parameter"
))
# Validate token type URNs
valid_token_types = [
"urn:ietf:params:oauth:token-type:access_token",
"urn:ietf:params:oauth:token-type:refresh_token",
"urn:ietf:params:oauth:token-type:id_token",
"urn:ietf:params:oauth:token-type:jwt",
]
for field in ["subject_token_type", "actor_token_type", "requested_token_type"]:
if field in request and request[field] not in valid_token_types:
results.append(ValidationResult(
"HIGH",
f"Invalid {field}: {request[field]}"
))
return results
```
## IGA-Specific Validation
```python
class IGAConnectValidator:
"""Complete IGA Connect validation."""
def __init__(self):
self.oauth_validator = IGAOAuth2Validator()
self.jwt_validator = IGAJWTValidator()
self.exchange_validator = IGATokenExchangeValidator()
def validate_provisioning_flow(self, code: str) -> list[ValidationResult]:
"""Validate provisioning workflow implementation."""
results = []
# Check for proper token acquisition before provisioning
if "token" not in code.lower() or "provision" not in code.lower():
results.append(ValidationResult(
"HIGH",
"Token-based provisioning flow not clearly detected"
))
# Check for SCIM integration
if "scim" not in code.lower():
results.append(ValidationResult(
"MEDIUM",
"SCIM integration not detected for provisioning"
))
# Check for error handling
error_patterns = ["try", "catch", "except", "error", "fail"]
if not any(p in code.lower() for p in error_patterns):
results.append(ValidationResult(
"HIGH",
"Error handling not detected in provisioning flow"
))
return results
def validate_certification_flow(self, code: str) -> list[ValidationResult]:
"""Validate access certification workflow."""
results = []
# Check for proper authorization
if "certify" in code.lower() or "certification" in code.lower():
if "authorize" not in code.lower() and "permission" not in code.lower():
results.append(ValidationResult(
"HIGH",
"Authorization check for certification not detected"
))
return results
def validate_workflow_engine(self, code: str) -> list[ValidationResult]:
"""Validate workflow engine token handling."""
results = []
# Check for token refresh in long-running workflows
if "workflow" in code.lower():
if "refresh" not in code.lower() and "renew" not in code.lower():
results.append(ValidationResult(
"MEDIUM",
"Token refresh not detected for long-running workflows"
))
# Check for token scoping per workflow step
if "step" in code.lower() and "scope" not in code.lower():
results.append(ValidationResult(
"LOW",
"Per-step scope handling not detected"
))
return results
def generate_report(self, code: str) -> str:
"""Generate comprehensive IGA Connect validation report."""
all_results = []
all_results.extend(self.oauth_validator.validate_client_credentials_flow(code))
all_results.extend(self.oauth_validator.validate_token_management(code))
all_results.extend(self.exchange_validator.validate_delegation_flow(code))
all_results.extend(self.exchange_validator.validate_impersonation_flow(code))
all_results.extend(self.validate_provisioning_flow(code))
return self._format_report(all_results)
```
## Output Format
Provide:
- RFC compliance checklist for IGA Connect
- Token exchange validation results
- Delegation and impersonation review
- Governance workflow validation
- Remediation recommendations
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!