Configure Domino Rest API IdP
About this task
Domino REST API implements an OAuth2 provider. The following is a guide for setting up and configuring Domino REST API's OAuth2 provider.
Before you begin
The oauth.nsf database exists in your Domino data directory. The Domino IdP uses the oauth.nsf to store content and refresh information.
Note
- If you are using Domino+Domino REST API docker image, the
oauth.nsfshould already be in the image but may not be fully configured. - If for some reason you need to create the
oauth.nsf, see Set up oauth.nsf, and save it in your Domino data directory.
Client Ids
When configuring an external IdP using OIDC or OIDC-idpcat, you need to provide a clientId. It's recommended to use Domino, but the admins of your IdP might have other ideas. In any case, that's the clientId for the REST server. It's NOT the one for the Admin UI or the Office Forms Based Authentication (OFBA) for attachment editing. To be fully operational, you need to configure at least three clients on your IdP:
Dominofor the server (client secret might be handeled byidpcat.nsf)keepadminuifor the Domino REST API admin clientkeepofbafor the Office document round trip experience- One each for your custom client applications (with clientSecret for servers or PKCE for clients)
Use the internal IdP as learning resource
The application configuration provided by the internal IdP makes it easy to configure and retrieve client-specific JWT that have all the required fields. Test your application with that and use the defined proprties, scopes foremost, to requests the external IdP client configurations.
Procedure
-
Configure Domino REST API to access the
oauth.nsf.- Create an
oauth.jsonfile using a text editor. -
Copy the following JSON object to the JSON file.
{ "oauth": { "active": true, "database": "oauth.nsf", "url": "https://sample.keep.io:8880", "authCodeExpiresIn": 120, "accessTokenExpiresIn": 3600, "refreshTokenExpiresIn": 525600 } }For more information, see the following table:
Property Description activeRequired
It has a boolean value indicating if the provided token is now active. If the token is issued by this authorization server, it isn't revoked by the user, and it's not yet expired, the value should betrue.databaseThe nsffile where the authorization details are stored.urlServer URL authCodeExpiresInThe code expiration time in seconds. accessTokenExpiresInThe access token expiration time in seconds. refreshTokenExpiresInThe refresh token expiration time in seconds. -
Change the value of the
urlparameter to match your Domino REST API host.The indicated
urlvalue in the JSON object above is just an example value. -
(Optional) Adjust the expiration time values as needed.
-
Save the JSON file in the
keepconfig.ddirectory located in your Domino data directory.You need to create the
keepconfig.ddirectory if not yet existing. -
Restart Domino REST API.
- Create an
-
Add the
OAuthAdminrole for the ACL entry.Be sure to thoroughly examine the ACL.
- By default, the configured access level is
Authorwith the capability to create information but unable to remove it. - All servers involved must have at least an
Editoraccess level and theOAuthAdminrole assigned. If you DON'T have this role, you'll only see your documents or records. -
Administrators requiring troubleshooting capabilities should have
Editoraccess level and theOAuthAdminrole assigned. - Ensure the database is copied to all servers involved.
- By default, the configured access level is