Skip to main content

Visibility Modes

Every status page has a visibility setting that controls who can view it:
ModeAccessAuth MethodPlan
PublicAnyone on the internetNoneAll plans
PrivateUsers with the passwordPasswordPro+
InternalUsers from your identity providerSSO (OIDC)Team+
Configure visibility per status page in Dashboard > Status Pages > [your page] > Visibility. Each status page can have its own visibility setting.

Private Mode (Password)

Private status pages require a password to view. This is useful when you want to share your status page with a limited audience without setting up SSO.
  1. Go to Dashboard > Status Pages > [your page] > Visibility and set visibility to Private.
  2. Enter a password. This is the password your viewers will use to access the page.
  3. Optionally add a password hint that will be shown on the login screen.
  4. Save.
When a user visits the status page, they are prompted to enter the password. Authenticated sessions last 24 hours.
Password-authenticated users always receive Full access. Role-based access controls (Full vs Limited) only apply to SSO-authenticated users.

SSO Authentication

Internal visibility (SSO) requires a Team plan or higher. RBAC features require Enterprise. View pricing.
Internal status pages require users to sign in through an OIDC-compatible identity provider before viewing the page. The authentication flow uses PKCE for security, validates JWT signatures via JWKS, and creates time-limited sessions.

Supported Providers

  • Google — Google Workspace / Cloud Identity
  • Microsoft — Azure AD / Entra ID
  • Okta — Okta Workforce Identity
  • Custom OIDC — Any provider with a .well-known/openid-configuration endpoint

Setting Up SSO

  1. Go to Dashboard > Settings > Access Control and click Add Provider.
  2. Select your identity provider type.
  3. Enter your Client ID and Client Secret from your IdP.
  4. For Okta or Custom OIDC, enter the Issuer URL (e.g. https://your-domain.okta.com).
  5. If your IdP uses a non-standard JWT claim name for groups, enter it in the Group Claim Name field (see Custom Group Claim Names below).
  6. Copy the Callback URL shown in the dialog and register it with your IdP as an authorized redirect URI.
  7. Click Test Connection to verify OIDC discovery works.
  8. Save the provider.
Then set any status page to Internal visibility in its Visibility tab.
For Okta, ensure your application’s scopes include groups so that group claims appear in the ID token. This is required for role-based access controls.

Allowed Email Domains

Restrict SSO access to specific email domains. Only users whose email address matches an allowed domain can authenticate.
  • Navigate to Dashboard > Settings > Access Control > Allowed Email Domains
  • Add domains like company.com or partner.org
  • Leave the list empty to allow any authenticated user from your IdP
Domain matching gates whether a viewer can sign in at all. To control what they see once signed in, use Audiences.

Status-page access is binary

Once a viewer is authenticated and their email domain is allowed, they’re authorized to view the page. There is no per-row “full” vs “limited” role on status pages — that distinction was retired in favor of Audiences, which give you finer control by routing viewers to scoped views of services and incidents. If you previously used the page-scoped or org-scoped group mapping table, those mappings have been migrated; new role assignment for status-page viewers should be done through Audiences. Audiences let you publish different curated views of the same status page to different viewer groups. A viewer is matched to an audience by either their IdP group claims or their email domain. They see only the services and incidents that the matched audience is configured to expose. This replaces the older two-role model with something more flexible: instead of “everything vs nothing”, you define exactly what each segment sees.

Group-claim-driven matching

Audiences are matched against the same IdP group claim used for dashboard SSO. Configure the claim name on the SSO provider — by default Kodo reads groups (Okta), roles (Azure AD), and cognito:groups (AWS Cognito), and you can override per-provider.

Custom Group Claim Names

Enterprise identity providers often use non-standard JWT claim names for group membership. You can configure this per SSO provider. In the SSO provider dialog, enter your custom claim name in the Group Claim Name field. This supports:
  • Simple claim names — e.g. custom_groups, team_roles
  • Dotted paths — e.g. custom.groups or attributes.roles for nested claims
When a custom claim name is configured, Kodo checks it first, then falls back to the standard claim names (groups, roles, cognito:groups).
Finding your claim name: Log into your IdP admin console, inspect the ID token payload for a test user, and look for the claim containing group membership arrays. Common examples:
  • Okta custom authorization server: custom:groups
  • Azure AD app roles: roles
  • Auth0: https://your-app/roles

Authorization Resolution

When a user authenticates:
  1. Domain allowlist — if any allowed domains are configured for the page (or org-wide), the viewer’s email domain must be on the list. Otherwise sign-in is denied.
  2. Audience match — the viewer’s IdP groups and email domain are matched to a configured Audience. Their view of services and incidents is scoped to that audience.
  3. Fallback — if no audience matches, the viewer sees the page’s default view.

Access Tokens

Access tokens provide programmatic or automated access to non-public status pages. Use them for CI/CD pipelines, monitoring dashboards, internal tools, or any system that needs to read your status page without interactive login.

Creating a Token

  1. Navigate to Dashboard > Status Pages > [your page] > Visibility.
  2. In the Access Tokens section, click Create Token.
  3. Enter a descriptive name (e.g. “CI/CD Pipeline”, “Grafana Dashboard”).
  4. Choose an access role: Full or Limited.
  5. Optionally set an expiry date. Tokens without an expiry remain valid until revoked.
  6. Click Create Token.
The full token value is shown only once after creation. Copy it immediately and store it securely. You will not be able to view it again.

Using a Token

Append the token as a query parameter to your status page URL:
https://kodostatus.com/status/your-slug?token=YOUR_TOKEN
The verify_status_page_access check will validate the token, update its last_used_at timestamp, and grant the configured access role.

Managing Tokens

The Access Tokens table in the Visibility tab shows all tokens for the page:
ColumnDescription
NameThe label you gave the token
TokenMasked value showing only the last 8 characters
RoleFull or Limited access
ExpiresExpiry date, or “Never” for non-expiring tokens
Last UsedWhen the token was last used to access the page
Click the trash icon to revoke a token. Revoked tokens are immediately invalid.

Token Best Practices

  • One token per integration — create separate tokens for each system so you can revoke independently
  • Use expiry dates for temporary access (e.g. a contractor’s dashboard view)
  • Use Limited role for external consumers who should only see overall status
  • Rotate tokens periodically for long-lived integrations

Session Management

The Active Sessions section in the Visibility tab shows all currently authenticated sessions on your status page. This includes sessions from SSO logins, password authentications, and any other auth method.

Viewing Sessions

Each session row shows:
ColumnDescription
EmailThe authenticated user’s email (SSO sessions)
MethodHow the user authenticated: SSO, Password, or Token
RoleThe access role assigned to this session
IPThe IP address the session was created from
LoginWhen the session was created
ExpiresWhen the session will automatically expire (24 hours after login)

Revoking Sessions

  • Revoke a single session — click the trash icon on any session row. The user will be prompted to re-authenticate on their next visit.
  • Revoke all sessions — click the Revoke All button at the top of the section. This immediately invalidates all active sessions for this status page.
Use session revocation when you suspect compromised credentials, when an employee leaves the organization, or when you change the status page visibility from internal back to public.

Audit Trail

All authentication events are logged to the Audit Log for compliance and security review:
EventWhen it’s logged
sso.login_successA user successfully authenticates via SSO
sso.login_failedAn SSO attempt fails (bad token, wrong domain, JWKS failure)
status_page.password_auth_successA user enters the correct password
status_page.password_auth_failedA user enters the wrong password
access_token.createdAn admin creates a new access token
access_token.revokedAn admin revokes an access token
Each entry includes the actor (email or IP), the status page, and relevant metadata such as the SSO provider type, resolved role, or failure reason. View these in Settings > Audit Log and filter by resource type Status Pages or Access Tokens.