Skip to main content
Version: v0.25.0 (Latest)

Platform foundations

Platform foundations prepares an existing tenant before any credential exists. Issuance and verification both depend on the same three things: a tenant that resolves to the intended host and capabilities, key material the platform can sign with, and an authorization server that grants tokens. These journeys set that up once. The Credential issuance and Credential verification groups both assume it is done, and they can be followed in either order afterwards.

Every journey opens with a read, so you see the data you are about to add to or change before you change it.

Journeys in this group​

JourneyWhat it coversComplete first
1. Connect Azure KMS with BYOK and BYOCRead the KMS resources and offerings, configure an Azure Key Vault provider, register an existing key and its certificate chain, and remove references safely.An operator-provisioned tenant
2. Configure the authorization serverRead the tenant authorization servers, create and activate a hosted server, register clients, and tune its token and grant settings.An operator-provisioned tenant
3. Federate wallet sign-in to KeycloakCreate a hosted wallet proxy authorization server, register the Keycloak realm as an external resource, federate to it, and bind the proxy to the issuer.Configure the authorization server
4. Use the Developer ConsoleRead the tenant Developer Console policy, discover the mounted API operations and their OpenAPI documents, and export a Postman collection.An operator-provisioned tenant

Platform operators can onboard a tenant before a tenant application exists. Those platform-origin requests require operator authorization, so they are documented separately from the tenant Developer Console journeys.

Authentication boundaries​

Four authorities appear across all journeys, and a token from one never substitutes for another.

  • Platform operator. Platform OAuth administration, such as registering a tenant or offering a shared Azure vault, uses platform operator authorization. It never calls tenant-scoped configuration.
  • Tenant application. A tenant confidential client obtains a Client Credentials token on the tenant's default authorization server. That token authorizes tenant-scoped management operations: KMS, authorization servers, issuer and verifier settings, designs, status lists and trust domains.
  • Wallet. The wallet OAuth configuration issues wallet issuance tokens with different authority. They are restricted to that wallet issuance session and never authorize administration.
  • Anonymous. Public metadata and hosted status-list reads use no authentication. A public status URI is fetched anonymously; do not copy a management bearer token into that request.

Choose the right surface​

Each step links its Admin Console path, its REST operations and any static capture. Use the Admin Console for guided configuration, the REST reference for an integration contract, and the Developer Console or Postman for repeatable discovery and execution. The surfaces share identifiers, but a successful request on one surface does not prove that a later wallet or verifier step completed.

Postman setup​

For the complete deployment sequence, download the canonical EDK-Enterprise-Deployment.postman_collection.json. Start with 00 Start here to discover platform OAuth endpoints. Use Postman's Get New Access Token and Use Token on 01 Platform - create tenant with the platform operator account. Create the tenant and wait for onboarding to complete. Activate the tenant owner in a browser, then use 02 Tenant owner - register application to register a confidential client on the tenant's default AS.

On 03 Tenant application, obtain a Client Credentials token using that client. The imported OAuth configuration includes repeated audience parameters in the token request body for the tenant workloads registered on that client. Keep these advanced token parameters: the platform, KMS, DID, AS, issuer, verifier and blob APIs validate their own audiences. Tenant REST requests inherit this folder's OAuth configuration. Platform-owned resource sharing uses 04 Platform - shared Azure vault, with platform operator authorization. The tenant accepts the offer using 03 / 08 Enable shared Azure provider. See the Postman setup steps.

For Keycloak, 03 / 09 Keycloak wallet proxy creates a separate hosted wallet AS and federates its user authentication upstream. 03 / 20 Authorization code through Keycloak uses its own wallet OAuth configuration. Administrative client credentials and wallet issuance tokens have different authority. The default tenant AS stays local only.

Postman manages administrative access tokens; no platformAccessToken or tenantAccessToken variable is needed. Public metadata and hosted status-list reads use no authentication. The optional pre-authorized OID4VCI grant uses an explicit token request because Postman has no OAuth helper for that grant. Its token is restricted to that wallet issuance session.