CIM Architecture Overview – PingFederate Integration
Date Recorded: August 12, 2025
Duration: 38m 30s
Participants:
- Matt Riek
- Michael Paterson
Purpose
This document outlines the architectural integration of PingFederate and PingOne with the CIAM (Customer Identity Management) system. It is intended to onboard developers and provide a high-level overview of the login flow, provisioning, and adapter configuration.
Overview of PingFederate Integration
Goals
- Provide a bird’s-eye view of the login flow through PingFederate.
- Explain how PingFederate interacts with CIAM components.
- Clarify the structure and purpose of key services: PF Adapters, Datastore Provisioner, and PingFederate Configuration.
Key Components
1. Policy Administration Point (PAP)
- Part of the CQRS pattern (Command Query Responsibility Segregation).
- Handles mutations (writes) and reads of policy data.
- Backed by PostgreSQL (LDAP was considered but rejected due to write limitations).
2. Policy Retrieval Point
- Represents the query side of CQRS.
- Used for access patterns similar to directory services.
Datastore Provisioner
Function
- A lightweight REST API service written in Go.
- Provisions identities for PingFederate during login.
- Talks to a secure endpoint on the PAP to retrieve or upsert user data.
Flow
- User logs in via an upstream IDP (e.g., Gary from John Deere).
- If the user doesn’t exist in CIAM, the provisioner creates or updates the identity.
- PingFederate uses a predefined contract to communicate with this service.
PingFederate Configuration
Structure
- Located in the
ping-federate-configuration folder. - Built using JSON templates and Python tooling.
- Templates are extracted from PingFederate via its REST API and versioned.
Deployment
- Docker image of PingFederate is preconfigured with templates.
- The location of the Datastore Provisioner is embedded in the image.
Authentication Flow
Policies and Fragments
- Login flows are built using policies and fragments.
- Fragments are modular units that can call other fragments.
- Policies select fragments based on client ID and other selectors.
Fragment Mapping
- Each fragment has input/output mappings.
- Outputs are mapped to contracts, which are later used to generate access tokens.
Simplification Strategy
- Reducing the number of policies simplifies maintenance.
- As clients move through adoption phases, older policies are deprecated.
PF Adapters
Purpose
- Extend PingFederate’s login flow via REST-based agentless adapters.
- Located in the
pf-adapters folder.
Types
- Reference IDP Adapter: REST API-based integration.
- Adapters include:
bp-selectoridp-chooserlogin-asselect-org-unit (to be merged into PF Adapters)
Flow
- PingFederate redirects to the adapter using a pickup parameter.
- Adapter uses the parameter to fetch session data from PingFederate.
- Adapter presents a form to the user.
- User input is sent back via a dropoff to continue the flow.
Contract Mapping
Final Step
- Authentication results in a policy contract.
- Contracts are mapped to access tokens via the application configuration.
- This completes the login flow from IDP to token issuance.
Next Steps
- Future topics: contract mappings, adapter specifics, and CIAM internals.