- Basic identity: Know who is viewing your app (username only)
- Enhanced identity: Verify user identity with tokens (username, email, user ID)
- Extended identity: Act on behalf of users with their full permission (access data, submit jobs, manage projects)
Access controls and permissions
Control who can view and edit your Apps to protect sensitive data and manage collaboration. Edit permissions are inherited from the project level because apps are part of projects. When you add someone as a project collaborator, they can automatically edit any apps in that project. To add editors, add them as collaborators to the project where the app resides. View permissions are set at the app level and can follow one of two modes:- Restricted: Only users you explicitly list and project collaborators can view (or edit). Use Restricted mode when your app handles sensitive data or is intended for specific team members only.
- Anyone in Domino: Anyone with a Domino account can view (or edit). Use Anyone in Domino for internal tools, dashboards, or resources that all employees should access.
Discovery vs. viewing
Domino distinguishes between:- Discovering an App: Seeing it listed in App views
- Viewing an App: Opening and using it
Restricted mode options
When an app’s view permissions are set to Restricted, additional options appear:- Globally discoverable: All Domino users can find the app and request access to view it
- Viewers: App owners can manage the list of users who can view the app, and accept or deny requests for access
Where to set permissions
You can set these permissions when publishing an App in the Access and sharing tab, or at any time after publication by selecting Share from the App list view. After you set permissions, users with view access can open and interact with your app. Users without access see the app listed (if globally discoverable) with a Request access button.Request and grant access
Access requests create a self-service model for app discovery. Users can find and request access to apps they need without contacting IT or app owners directly, while owners maintain full control over who can view their apps.Request access to an app
If you see Request access next to an app in the Domino apps list view, the app is globally discoverable but you don’t have view permissions yet. To request access:- Find the app in the Domino Apps list view.
- Click Request access.
Grant access to your app
When someone requests access to your app, you’ll receive a notification in Domino and an email. To grant or deny access:- Click the notification link or go to your app and click Share.
- Review open requests.
- Click Accept or Deny for each request.
App identity and authentication
Domino apps can identify and authenticate viewers at three different levels. Each level provides different information and capabilities to help you build personalized, secure applications.- Basic identity tells you who is viewing your app by passing the username in an HTTP header. Use this for loading user-specific defaults, preferences, or displaying personalized content.
- Enhanced identity verifies user identity with signed tokens that include username, email, and user ID. Use this when you need cryptographic proof of identity or additional user attributes beyond the username.
- Extended identity lets your app act on behalf of users with their full permissions. Your app can access user data, submit jobs, manage projects, and perform other authorized actions in Domino. Users must explicitly grant consent before the app receives these permissions.
Basic identity propagation
Use basic identity when you need to know who is viewing your app. This is useful for loading user-specific defaults, preferences, or displaying personalized content. Domino passes the username in an HTTP header calleddomino-username.
If users who aren’t logged in to Domino view your apps, the domino-username header value is Anonymous.
Identity headers are only available in frameworks that support proxied HTTP headers. Flask and Dash support them by default. Shiny requires that you use Server Pro.
This Flask example shows how to get the Domino username of an app viewer:
app.py file that renders a template named index.html. This app imports request from flask, which gives you access to the headers of the active HTTP request. Note that port selection is flexible and port 8888 is no longer required.
templates/index.html:
Enhanced identity propagation
Use enhanced identity when you need verified user information beyond just the username. This approach validates the token to make sure that identity information is authentic and hasn’t been tampered with. When theSecureIdentityPropagationToAppsEnabled feature flag is enabled, Domino hosts apps at a different URL structure (https://<domino-domain>/apps/<app-id>/) and passes a JWT authorization token in the Authorization HTTP Header.
You can verify the token’s integrity and decode it to get the user’s username, email, and Domino userID. The token audience is scoped to a limited set of Domino endpoints, restricting what operations the app can perform.
Identity headers are only available in frameworks that support proxied HTTP headers. Flask and Dash support them by default. Shiny requires that you use Server Pro.
Some application servers need to know their base path to correctly handle routing, generate URLs, and serve static assets. Without proper base path configuration, your app may fail to load resources or generate broken links. If your application server requires a base path configuration, read it from the
DOMINO_RUN_HOST_PATH environment variable.
Example: Verify and decode JWT tokenExtract the token from the
Authorization header:
Extended identity propagation
Use extended identity when your app needs to perform actions on behalf of users. Your app can access user data, submit jobs, manage projects, and perform other actions the user is authorized to do in Domino. When thecom.cerebro.domino.apps.extendedIdentityPropagationToAppsEnabled configuration control is enabled, apps can request permission to act on behalf of users. Users must explicitly grant consent before the app receives these permissions.
How it works
- Users see a consent prompt when they open an app that requests extended permissions.
- If users grant consent, the app can retrieve a token with full user scope.
- The app implements code to retrieve the user’s token from the Authorization header.
- The app calls Domino APIs as the user using this token.
- Users can choose to remember their consent for an extended period.
com.cerebro.domino.apps.extendedIdentityPropagationToAppsEnabled setting, the SecureIdentityPropagationToAppsEnabled feature flag must also be set to true. The app has access to the user’s full credentials only if the publisher enables extended propagation in the app and the user grants consent.
To enable extended identity propagation
- The configuration record must be enabled.
- The app must have extended app propagation enabled.
- The app’s code must actually use the viewer’s token.
- The viewer must consent.
The application base path can be read from the
DOMINO_RUN_HOST_PATH environment variable and used to set the base path in your server configuration:
Next steps
- Publish and share an app: Learn how to publish apps and manage permissions.
- Allow external resources in Apps: Apps may be blocked from loading content unless those URLs are explicitly allowlisted.