Skip to main content
Version: 3.10.x

Configure the Developer Portal

After deploying the Developer Portal, use the Provider Portal to control public access and portal tokens. Authentication behavior is configured in the Developer Portal application.

Portal Settings​

Portal settings are managed in the Provider Portal under each portal's Settings page. The settings are organized into the following sections.

Public Access​

The Public Access toggle controls whether the Developer Portal is accessible to unauthenticated users:

  • Enabled: Unauthenticated visitors can browse the API Hub and view public API products.
  • Disabled: All visitors must authenticate before accessing any portal content.

Portal Tokens​

Portal tokens authenticate the Developer Portal application with the Portal API. Each token has the prefix a7prt and can be configured with an expiration date.

OperationDescription
GenerateCreate a new token with a name and optional expiration date. The token value is shown only at creation time.
RenameUpdate the display name of a token.
RegenerateGenerate a new token value, invalidating the previous one. Update the Developer Portal config.yaml with the new token and restart the application.
DeleteRemove a token. If the Developer Portal is using this token, it will lose connectivity to the Portal API.
caution

After regenerating or deleting a token, update the config.yaml on the Developer Portal host and restart the application. The portal will not function correctly without a valid token.

Built-in Authentication Status​

The Provider Portal Settings page includes Public Access and portal tokens. It does not include controls for self-registration, registration approval, email login, or built-in authentication.

Configure email-and-password behavior in auth.emailAndPassword in the Developer Portal config.yaml. Email and password are enabled by default. See Customize the Developer Portal.

SSO (External Login Options)​

Configure supported OAuth providers in the Developer Portal's config.yaml, not through the unavailable Provider Portal login-options workflow. See Customize the Developer Portal for the released frontend configuration and Developer Portal SSO Status for the Provider Portal limitation.

SCIM Provisioning​

SCIM (System for Cross-domain Identity Management) can synchronize identities from an external identity provider into a custom Developer Portal. The released frontend does not register a SCIM plugin, so the endpoint is not enabled by changing a Provider Portal setting.

For a custom implementation based on the public Boilerplate, follow Configure SCIM Provisioning for a Custom Developer Portal with Okta. That workflow adds the server plugin, declares a provisioning credential, and updates the database schema. Organization membership and application access require separate integration with the portal's authorization model.

Application Configuration​

The following settings are configured in the Developer Portal's config.yaml file and require a restart to take effect.

Portal API Connection​

config.yaml
portal:
url: https://<CONTROL_PLANE_HOST>:4321 # Portal API endpoint
token: a7prt-xxxxxxxxxxxx # Portal token from Provider Portal

Database​

config.yaml
db:
url: "postgres://user:password@host:5432/dbname"

The Developer Portal uses a PostgreSQL-compatible database for storing user sessions, authentication data, and organization information.

Authentication Secret​

config.yaml
auth:
secret: "<base64-encoded-secret>"

This secret is used to sign authentication sessions. Generate it with:

openssl rand -base64 32

Application URLs​

config.yaml
app:
name: "My Developer Portal" # Displayed in browser title and header
desc: "API documentation portal" # Used for SEO meta description
baseURL: "https://portal.example.com"
trustedOrigins:
- "https://portal.example.com"

Environment Variable Substitution​

Configuration values support environment variable substitution:

SyntaxBehavior
${VAR}Required. Fails if the variable is not set.
${VAR:default}Optional. Uses the default value if the variable is not set.

Example:

config.yaml
portal:
url: ${PORTAL_API_URL}
token: ${PORTAL_TOKEN}
auth:
secret: ${AUTH_SECRET}

Additional Resources​