Skip to content
You are viewing the latest documentation for Solo Enterprise for kgateway. To access the documentation for older versions, use the version switcher.

About Portal

Page as Markdown

Learn more about common challenges with API portals and how Solo Enterprise for kgateway’s portal fills the gaps.

Portal is a developer portal for Solo Enterprise for kgateway that lets API consumers discover, browse, and interact with APIs. The portal renders an API catalog from OpenAPI specifications and provides self-service features, including team management, app registration, and API key provisioning.

Challenges of API management

Managing APIs across a modern platform introduces challenges that go beyond simple routing and security. Review the most common pain points that organizations face.

  • Managing APIs at scale: As the number of microservices grows, manually registering, organizing, and documenting APIs becomes unmanageable. You need a way to onboard APIs without disrupting existing deployment workflows, bundle them into meaningful products for different consumers, and keep documentation automatically in sync without requiring portal admins to intervene for every change.
  • Controlling access for the right audiences: Not all APIs should be accessible to everyone. You might need separate portals for internal teams, external partners, or end users, each with different visibility and access rules. Managing who can access which APIs and ensuring they authenticate correctly can quickly become complex when you have multiple audiences and deployment environments.
  • Delivering a great developer experience: API consumers need a self-service experience to be productive. Without a branded, easy-to-navigate web UI, interactive documentation, and the ability to generate their own credentials without opening support tickets, adoption of your APIs suffers and your portal admins become a bottleneck.

Developer portal as the solution

A developer portal brings together the tools that API producers and consumers need in one place. Rather than managing API documentation, access control, and credentials across separate systems, a developer portal creates a single, structured layer between your backend services and the teams that consume them.

For API developers, a portal provides a consistent way to register APIs, define products across multiple services, and publish documentation that stays in sync with the underlying services without changing how applications are deployed.

For API consumers, a portal provides a self-service experience to discover APIs, review interactive documentation, request access, and manage credentials. A developer portal can significantly reduce the dependency on admin support and accelerate onboarding.

For platform and security teams, a portal provides centralized access control through subscription workflows, authentication policies, and rate limiting, making it easier to enforce governance across many teams and environments.

Solo Enterprise for kgateway Portal is built on these principles, extending the routing and security capabilities of kgateway with a full developer portal experience.

Key features

Review the following key features to see how Portal addresses common API management challenges.

FeatureDescription
API registrationRegister your APIs in Portal by creating ApiDoc resources that pair an OpenAPI schema with a backend service. You can inline the schema directly, fetch it from an external URL, or pull it from an endpoint exposed by an in-cluster service. Once created, the portal controller automatically renders the documentation in the portal frontend. For more information, see Create ApiDocs.
Flexible API productsBundle multiple APIs into versioned ApiProducts with custom metadata such as titles, descriptions, terms of service, and lifecycle status. Product owners decide which APIs to group together and how to expose them, independent of how developers deploy their services. For more information, see Create ApiProducts.
Automated API documentationPortal automatically stitches together OpenAPI schemas from your services and renders them in the portal frontend. Documentation stays in sync with your APIs without manual updates. For more information, see Create ApiDocs.
Subscription-based access controlPortal users request subscriptions to API products through the portal frontend. Admins approve or reject subscriptions, giving you controlled, auditable access management for different teams and audiences. For more information, see Manage subscriptions.
Self-service credentialsPortal users can generate their own API keys or register OAuth clients directly from the portal frontend — no admin intervention required. Credentials are automatically scoped to the API products the user is subscribed to. For more information, see Set up credential management.
Rate limiting per subscriptionApply rate limits to API products to control consumption and enforce usage tiers per API key or OAuth client. For more information, see Set up rate limiting.
Customizable portal frontendDeploy a portal frontend app that you can brand and customize for your organization. Portal users can browse the API catalog, view interactive documentation, and manage their own credentials and subscriptions. For more information, see Build the portal app.

Key concepts

Review the following key concepts to understand the resources that are used in Portal.

  • Portal: A developer portal instance. Creating a Portal CR instructs the controller to deploy a backend web server that serves the API catalog via a REST API.
  • ApiProduct: A logical API product with one or more versions. Each version references HTTPRoutes, and the controller automatically discovers and stitches together the OpenAPI schemas for the backends behind those routes.
  • ApiDoc: An OpenAPI schema document paired with the backend service it describes. ApiDocs can be authored manually, fetched from a URL, or discovered from an in-cluster service.
  • PortalParameters: Operational configuration for a Portal instance, including the data store, web server resources, and identity provider.

Architecture

Review the portal architecture and how the portal resources are connected.

    %%{init: {"theme": "base", "themeVariables": {"primaryColor": "#cce5ff", "primaryBorderColor": "#3399ff", "primaryTextColor": "#003366", "lineColor": "#3399ff", "edgeLabelBackground": "#e8f4ff", "clusterBkg": "#fafafa", "clusterBorder": "#e0e0e0", "secondaryColor": "#e8f4ff", "tertiaryColor": "#ffffff"}}}%%
flowchart LR
    subgraph "User-Created Resources"
        Portal[Portal CR]
        PP[PortalParameters]
        AP[ApiProduct]
        AD[ApiDoc]
        HR[HTTPRoute]
        Svc[Service / Backend]
    end

    subgraph "Controller-Managed"
        PC[PortalConfig]
        SAD[Stitched ApiDoc]
        WS[Portal Web Server]
    end

    FE[Frontend UI]

    Portal -->|parametersRef| PP
    Portal -->|apiProductRefs| AP
    AP -->|versions.targetRefs| HR
    HR -->|backendRefs| Svc
    AD -->|servedBy| Svc

    AP -.->|controller generates| SAD
    Portal -.->|controller generates| PC
    Portal -.->|controller deploys| WS

    FE -->|REST API| WS
    WS -->|reads| PC
    WS -->|reads| SAD
  

Access control model

Portal uses a four-layer model to control who can access the portal, who can see the API catalog, and who can call the APIs.

Layer 1: API visibility in the catalog

Use the visibility field in the Portal custom resource to configure the visibility of APIs in the developer portal. Choose from the following settings:

SettingDescription
visibility.public: trueIf a Portal’s visibility is set to public, a portal user can browse the API endpoints and documentation for all API products that were added to the portal without logging into the portal. However, access to an API is not granted until a valid API subscription is created and approved by a portal admin.
visibility.public: falseAPIs are hidden in the API catalog by default. Portal users must log in to the portal by using an OIDC authentication flow that the portal admin sets up. After logging in, portal users can browser APIs and view their documentation. However, access to the API is not granted until a valid API subscription is created and approved by a portal admin.

Example Portal custom resource with public APIs:

kubectl apply -f- <<EOF
apiVersion: portal.solo.io/v1alpha1
kind: Portal
metadata:
  name: my-portal
  namespace: default
spec:
  parametersRef:
    name: portal-params
  visibility:
    public: true
  apiProductRefs:
  - name: httpbin-api
EOF

Layer 2: Portal frontend authentication

Portal frontend authentication is optional for browsing the API catalog and viewing API documentation. However, authentication is required for subscription management and self-service API credentials.

When authentication is enabled and a portal user logs in to the portal frontend by using the Login button, the frontend redirects unauthenticated users to an identity provider via an OIDC authentication flow. On successful login, the portal receives an ID token and uses its group claims to determine the user’s role, such as whether they have admin privileges.

To enable portal frontend authentication, configure an OIDC identity provider in the PortalParameters resource. For more information, see Secure login.

    %%{init: {"theme": "base", "themeVariables": {"primaryColor": "#cce5ff", "primaryBorderColor": "#3399ff", "primaryTextColor": "#003366", "lineColor": "#3399ff", "edgeLabelBackground": "#e8f4ff", "clusterBkg": "#fafafa", "clusterBorder": "#e0e0e0", "secondaryColor": "#e8f4ff", "tertiaryColor": "#ffffff"}}}%%
sequenceDiagram
    actor User
    participant Frontend as Portal Frontend
    participant IdP as OIDC Provider
    participant Backend as Portal Backend

    User->>Frontend: Visit portal
    Frontend->>User: Redirect to OIDC login
    User->>IdP: Authenticate
    IdP->>Frontend: Return ID token with group claims
    Frontend->>Backend: Requests include ID token
    Backend->>Frontend: Serve catalog and user data based on group claims
  

Layer 3: Subscriptions

When portal users have access to the portal frontend, they can start browsing APIs and review their API documentation. However to access an API, the portal user must belong to a team that owns an app that has an approved API subscription. Subscriptions are requested per app and approved by a portal admin.

Review the following diagram to understand how to set up a team, apps, and API subscriptions. For more information, see Create teams, apps, and subscriptions.

    %%{init: {"theme": "base", "themeVariables": {"primaryColor": "#cce5ff", "primaryBorderColor": "#3399ff", "primaryTextColor": "#003366", "lineColor": "#3399ff", "edgeLabelBackground": "#e8f4ff", "clusterBkg": "#fafafa", "clusterBorder": "#e0e0e0", "secondaryColor": "#e8f4ff", "tertiaryColor": "#ffffff"}}}%%
sequenceDiagram
    actor User
    participant Frontend as Portal Frontend
    participant Backend as Portal Backend
    participant API as API Service
    actor Admin

    Note over User,Backend: Create teams and apps
    User->>Frontend: Create team
    Frontend->>Backend: POST /v1/teams
    User->>Frontend: Register app that consumes <br/> the API
    Frontend->>Backend: POST /v1/apps
    Note over User,Admin: Create and approve subscriptions
    User->>Frontend: Request subscription to ApiProduct <br/> on behalf of an app
    Frontend->>Backend: POST /v1/subscriptions
    Backend->>Admin: Subscription pending approval
    Admin->>Backend: Approve or reject subscription <br/>(requires groups: admin claim in ID token)
    Backend-->>Frontend: Subscription status updated
    User->>API: Interact with API (with valid credential)
  

Layer 4: API authentication

After a subscription is approved, requests to the API can be protected so that only credentialed requests are allowed through.

To obtain credentials to access an API, portal admins must first set up credential enforcement for the API. You can choose between API keys and OAuth clients to protect APIs. Then, portal users can self-service credentials via the portal frontend. Credentials are scoped to the ApiProduct the user subscribed to.

Review the following diagram to understand how portal users obtain API credentials and authenticate to access an API. For more information, see Set up API credential management and Create API credentials.

    %%{init: {"theme": "base", "themeVariables": {"primaryColor": "#cce5ff", "primaryBorderColor": "#3399ff", "primaryTextColor": "#003366", "lineColor": "#3399ff", "edgeLabelBackground": "#e8f4ff", "clusterBkg": "#fafafa", "clusterBorder": "#e0e0e0", "secondaryColor": "#e8f4ff", "tertiaryColor": "#ffffff"}}}%%
sequenceDiagram
    actor User
    participant Frontend as Portal Frontend
    participant IdP as OIDC Provider
    participant Backend as Portal Backend
    participant Gateway as Gateway
    participant API as API Service

    Note over User,IdP: Login
    User->>Frontend: Log in to the portal
    Frontend->>IdP: Redirect to OIDC login
    User->>IdP: Authenticate
    IdP->>Frontend: Return ID token with group claims
    Note over User,Backend: Credential generation
    alt API key
        User->>Frontend: Generate API key for app
        Frontend->>Backend: POST /v1/apps/{id}/api-keys
        Backend->>Frontend: Return API key (shown once)
    else OAuth client
        User->>Frontend: Register OAuth client for app
        Frontend->>Backend: POST /v1/apps/{appID}/oauth-credentials
        Backend->>Frontend: Return client ID and secret
    end
    Note over User,API: API access
    User->>Gateway: Call API with credential
    Gateway->>Backend: Validate credential and <br/>subscription (portalAuth)
    Backend->>Gateway: Approved
    Gateway->>API: Forward request
    API-->>Gateway: Response
    Gateway-->>User: Return response
  

Next

Was this page helpful?