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
Each domain can be assigned an access role (see below).

Role-Based Access Control (RBAC)

RBAC lets you control how much of the status page each viewer can see. There are two roles:
RoleWhat the viewer sees
FullEverything — overall status, service breakdown, SLA targets, uptime graphs, active incident details, past incidents, subscribe form
LimitedOverall status banner, active incident count (no details), and subscribe form only
Limited viewers do not see the service-by-service breakdown, uptime percentages, SLA targets, incident timelines, or past incident history.

Assigning Roles via Domains

Each allowed email domain has a role selector. When a user authenticates via SSO and their email matches a domain, they receive that domain’s role. For example:
  • company.comFull — employees see everything
  • partner.comLimited — partners see overall status only

Assigning Roles via IdP Group Mappings

For any SSO provider, you can map IdP group or role claims to access roles. This gives you finer-grained control than domain-level assignment.
  1. In the SSO provider card, expand the Group Mappings section.
  2. Enter the exact IdP group name (e.g. Engineering, StatusPageViewers).
  3. Choose Full or Limited for that group.
  4. Save. Users whose ID token contains a matching group claim will receive the mapped role.
By default, group claims are read from standard claim names: groups (Okta), roles (Azure AD), and cognito:groups (AWS Cognito). If your IdP uses a different claim, see Custom Group Claim Names.

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

Role Resolution Priority

When a user authenticates, their role is resolved in this order:
  1. IdP group mappings — if any of the user’s groups match a configured mapping, the highest-privilege match wins (full > limited). Page-specific mappings are checked before organization-wide mappings.
  2. Domain mapping — if no group mapping matched, use the role assigned to the user’s email domain.
  3. Default — if neither matched, the user receives Full access.

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.