REST API scope troubleshooting
Summarize
Summarized using AI
This content was generated using new OpenAI-powered functionality. Results are provided on an as is basis and are not guaranteed to be accurate or complete.
Summary of REST API scope troubleshooting
This guide addresses common troubleshooting steps and frequently asked questions related to REST API scopes in ServiceNow, specifically for the Yokohama release. It helps customers resolve issues when configuring or running REST API scopes, ensuring proper authorization checks and access control for REST APIs using OAuth tokens.
Show less
Troubleshooting actions
- Missing auth scope check at runtime despite linking: Ensure
sysapiaccesspolicyrecords are active, the propertycom.glide.rest.api.auth.scope.check.enableis not set to false, and OAuth tokens have the appropriate useraccount auth scope. - Access token with different auth scope accessing API: Verify that the relevant auth scope record is active and check for other conflicting records with the same API but different apply methods, versions, or resources.
- No auth scope check for BasicAuth or mutualAuth: This behavior is expected as auth scope checks only apply to OAuth and OIDC tokens, not BasicAuth, Session Cookie, or Certificate-based authentication.
- REST API call returns HTTP 403 with OAuth token: Look for the error message "Missing required api access scope" indicating a failed auth scope check.
- Deleted pre-defined useraccount record: Restore by exporting from another instance or create a new useraccount and update the system property
glide.oauth.token.scope.useraccountwith the new record’s sysid.
Frequently asked questions
- One OAuth token can be linked with multiple auth scopes via the same OAuth entity, giving the token all those scopes.
- Different OAuth tokens with different auth scopes can access the same REST API if any auth scope matches the API’s required scope.
- OAuth tokens with useraccount auth scope have full access to all auth scopes.
- Auth scopes linked to OAuth tokens are dynamically retrieved at runtime from the associated OAuth entity and are not hard-coded.
- Auth scopes remain consistent after token refresh unless changed by an admin on the OAuth entity.
- Recreating a deleted useraccount auth scope by name does not work; the system relies on sysid, so update the system property with the new sysid.
- Modifying the auth scopes linked to an OAuth entity affects all existing tokens issued by that entity.
- All OAuth tokens from the same OAuth entity have identical auth scopes; per-token variation is not supported.
- Defining different auth scopes for the same REST API endpoint is not allowed due to unique constraints, but multiple matching auth scopes can apply for the same endpoint.
- Auth scope checks are not applied to BasicAuth or mutualAuth methods, only to OAuth and OIDC tokens.
Troubleshooting actions can help resolve common issues when setting up or running the REST API scope.
| Issue | Action |
|---|---|
| REST API is linked with auth scope, however in runtime there is no auth scope check even using Bearer token authentication. |
|
| REST API is linked with auth_scope1, however the access token which has auth_scope2 is also able to access it. |
|
| REST API is linked with auth scope, however in runtime there is no auth scope check for basicAuth and mutualAuth. | It is expected since the REST API auth scope only applies to the OAuth access token or OIDC token. It doesn’t apply BasicAuth, Session Cookie and Certificate based authentication. |
| REST API call return 403 when using the OAuth access token. | Check for the error message "Missing required api access scope". If found then the auth scope check fails for this REST API |
Pre-defined useraccount is deleted and not sure to
restore. |
Export useraccount as xml from the other
instance and import it or create an useraccount and modify system
property glide.oauth.token.scope.useraccount to the newly created
sys_id record. |
Frequently asked questions
Following are some of the frequently asked question when using the REST API Auth scope:
- Can one OAuth token be linked with several auth scopes?
- Yes, one
oauth_entitycan be linked with multiple auth scopes, every OAuth token issued by thisoauth_entityhas the same auth scopes. - Can different OAuth tokens with different auth scopes access the same REST API?
- Yes, for the same REST API, it may be accessed by different auth scopes. As long as one auth scope is matched, the auth scope returns the results.
- Can OAuth access token with
useraccountauth scope access any REST APIs? - Yes, the
useraccounthas full access to auth scope. - Can OAuth access token OAuth scope be changed dynamically?
- Yes, the auth scoped is not hard-coded with the access token in the
oauth_credentialtable. Instead auth scope is getting from linkedoauth_entityduring runtime. - Can OAuth token keep same auth scopes after refresh?
- Yes, auth scope will not change after token refresh, unless
oauth_adminmodify auth scope linked withoauth_entity. - Pre-defined
useraccountauth scope record is deleted, can a new auth scope with nameuseraccountbe created? - Creating a new auth scope with the same
useraccountdoesn't work. In the runtime, it uses thesys_idinstead of name to do the auth scope check, modify the system property glide.oauth.token.scope.useraccount to the newly createdsys_idrecord. - If admin modify auth scoped linked with
oauth_entity, are all the existing OAuth access token issued by this OAuth entity changed also? - Yes, the auth scope is not directly linked with the OAuth access token, it is getting from
oauth_entityduring runtime. - Can different OAuth access tokens issued by the same
oauth_entityhave different auth scopes? - No, all access to the token is issued by the same
oauth_entityand always have the same auth scopes. - Can a user define different auth scopes for a particular endpoint?
- No, there is a unique constrain check for a particular REST API endpoint. However for the same REST API endpoint, it may have more than one matched auth scopes.
- Is the auth scope check used for BasicAuth also?
- No, auth scope check is only OAuth access token and OIDC token, it is not applied for basicAuth and mutualAuth