Use the Service Integration Account with No Password Expiration
Oracle Integration provides a service integration account for which the password does not expire. The service integration account consists of a generic application role created with specific predefined rules. You must use this account to install the connectivity agent.
Restrictions
- Supported only for inbound (trigger) connections using the Basic Authentication security policy.
- Oracle recommends using OAuth instead of Basic Authentication.
- Not recommended where user subject propagation is required.
About the Service Integration User Account
- Repeated requests to Oracle Cloud Infrastructure Identity and Access Management for password authentication/assertion for the same basic credentials.
- The Oracle Cloud Infrastructure Identity and Access Management password policy requires accessing the ID store for each request.
To reduce the performance load caused by repeated requests, you can use the service integration account without password expiration.
- The client ID (that ends with
_BASICAUTH) - The associated client secret
This section describes how to create these credentials.
Task 1. Get the Application ID of the Oracle Integration Instance
- Navigate to Oracle Cloud Console.
- Open the Oracle Cloud Console.
- In the navigation pane, click Identity & Security.
- Under Identity, click Domains. In the table, select the name of the domain.
- In the menu bar, select Oracle cloud services.
- Find the Oracle Integration instance in the list.
Instances are identified by their service instance IDs. If you're not sure of the service instance ID:
- Sign in to Oracle Integration.
- Open the About dialog.
- Check the Service instance field.
You can paste some or all of this value into the search box that appears above the table.
- Click the name of the service.
- Next to the Application ID field, click Copy, then paste the value somewhere you can reference later, such as a text file.
Use this value in place of the
${OIC_APP_ID}value in the commands in Task 3. Configure the Service Integration Application.Note:
For ease of use, Oracle recommends adding the parameters described in this section as environment variables on your system. For example:export OIC_APP_ID=parameter_value . . . . . .
Task 2. Create and Activate the Service Administrator Application
- Navigate to the Confidential Application page.
- In the menu bar for your domain, select Integrated applications.
- Click Add application.
- Create and configure a confidential application.
- Select Confidential Application, then click Launch workflow. The Add Confidential Application wizard is displayed.
- Enter a value in the Name field, and click Submit.
- In the menu bar, click OAuth configuration, then click Edit OAuth configuration.
- Complete the following fields, and click Submit:
- Under Client configuration, select Configure this application as a client now.
- Under Authorization, select Client credentials and Refresh token.
- Under Token issuance policy, select Add app roles.
- Under App roles, click Add app roles.
- Select Identity Domain Administrator, and click Add.
- Select the role in the table.
The application is created, and the Details tab for the confidential application appears.
- From the Actions menu in the upper right of the page, click Activate, then Activate application.
If you don't activate the service administrator application, the following error appears when you configure the service integration application.
The OAuth Client app is inactive or the OAuth Client facet is not enabled for app clientId - On the Details tab for the confidential application, copy the Application ID value. Use this value in place of the
${SA_APP_ID}value in the commands in Task 3. Configure the Service Integration Application. - In the menu bar, click OAuth configuration, and copy the following values.
- Scroll to the General Information section, and copy the Client ID value. You use this value in place of the
${SA_CLIENT_ID}value in the commands in Task 3. Configure the Service Integration Application. - In the Client secret section, click Actions,
then select Copy. You use this value in place of the ${SA_CLIENT_SECRET}value in the commands in Task 3. Configure the Service Integration Application.
- Scroll to the General Information section, and copy the Client ID value. You use this value in place of the
Task 3. Configure the Service Integration Application
- Click ← Integrated applications at the top of the page.
- In the menu bar, click Oracle cloud services.
- Select your Oracle Integration instance.
- On the Details tab, copy the Application ID value. You can also copy this value from the end of the browser URL.
- Create the service integration application.
- Get an access token to create an application (for this example, referred to as
${SA_ACCESS_TOKEN}).- Use the following command to get the access token request.
In this command and other commands that contain the
IDCS_HOSTentry, replaceIDCS_HOSTwith the value in the Domain URL field. You find the Domain URL field on the Details tab of your domain.curl -X POST https://${IDCS_HOST}/oauth2/v1/token -u ${SA_CLIENT_ID}:${SA_CLIENT_SECRET} -d 'grant_type=client_credentials&scope=urn%3Aopc%3Aidm%3A__myscopes__'The access token is valid for one hour.
- Copy the access token response:
{ "access_token": "eyJ4NXQjUzI1NiI6IlVFQ1RyX25Ram9XYk9........................XV-2ei4pAUYV9aw66k_qL3b842qHw", "token_type": "Bearer", "expires_in": 3600 }
- Use the following command to get the access token request.
- Create an application with the
_BASICAUTHsuffix using the above access token. For this example,OICTEST_BASICAUTHis used.Note:
Ensure that the entire command appears as a single line without breaks. You can use a tool such as Postman to ensure that the command is on a single line.- Create an application request. Ensure that you replace
IDCS_HOSTwith your Oracle Cloud Infrastructure Identity and Access Management host value.curl -X POST https://${IDCS_HOST}/admin/v1/Apps -H 'Authorization: Bearer ${SA_ACCESS_TOKEN}' -H 'Content-Type: application/json' -d '{ "active": true, "allUrlSchemesAllowed": false, "allowAccessControl": false, "allowedGrants": ["client_credentials", "urn:ietf:params:oauth:grant-type: jwt-bearer"], "attrRenderingMetadata": [{ "name": "aliasApps", "visible": false }], "basedOnTemplate": { "value": "CustomWebAppTemplateId" }, "clientType": "confidential", "displayName": "OICTEST_BASICAUTH", "editableAttributes": [ { "name": "allowedGrants" }, { "name": "protectableSecondaryAudiences" }, { "name": "asOPCService" }, { "name": "accessTokenExpiry" }, { "name": "linkingCallbackUrl" }, { "name": "isOAuthResource" }, { "name": "appIcon" }, { "name": "clientType" }, { "name": "refreshTokenExpiry" }, { "name": "trustScope" }, { "name": "landingPageUrl" }, { "name": "audience" }, { "name": "samlServiceProvider" }, { "name": "isLoginTarget" }, { "name": "redirectUris" }, { "name": "allowedScopes" }, { "name": "tags" }, { "name": "logoutUri" }, { "name": "allowedOperations" }, { "name": "termsOfUse" }, { "name": "serviceParams" }, { "name": "certificates" }, { "name": "aliasApps" }, { "name": "schemas" }, { "name": "isWebTierPolicy" }, { "name": "trustPolicies" }, { "name": "logoutPageUrl" }, { "name": "secondaryAudiences" }, { "name": "displayName" }, { "name": "serviceTypeURN" }, { "name": "icon" }, { "name": "description" }, { "name": "isOAuthClient" }, { "name": "allowedTags" }, { "name": "showInMyApps" }, { "name": "isObligationCapable" }, { "name": "isMobileTarget" }, { "name": "allowOffline" }, { "name": "idpPolicy" }, { "name": "appSignonPolicy" }, { "name": "postLogoutRedirectUris" }, { "name": "isFormFill" }, { "name": "loginMechanism" }, { "name": "serviceTypeVersion" }, { "name": "errorPageUrl" }, { "name": "signonPolicy" }, { "name": "identityProviders" }, { "name": "isSamlServiceProvider" }, { "name": "appThumbnail" }, { "name": "loginPageUrl" }, { "name": "scopes" }, { "name": "allowAccessControl" }, { "name": "isKerberosRealm" }, { "name": "allUrlSchemesAllowed" }, { "name": "urn:ietf:params:scim:schemas: oracle:idcs:extension:samlServiceProvider:App:encryptionAlgorithm" }, { "name": "urn:ietf:params:scim: schemas:oracle:idcs:extension:samlServiceProvider:App:groupAssertionAttributes" }, { "name": "urn:ietf: params:scim:schemas:oracle:idcs:extension:samlServiceProvider:App:includeSigningCertInSignature" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:samlServiceProvider:App:signResponseOrAssertion" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:samlServiceProvider:App: assertionConsumerUrl" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:samlServiceProvider: App:nameIdUserstoreAttribute" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs: extension:samlServiceProvider:App:logoutResponseUrl" }, { "name": "urn:ietf:params:scim:schemas:oracle: idcs:extension:samlServiceProvider:App:succinctId" }, { "name": "urn:ietf:params:scim:schemas:oracle: idcs:extension:samlServiceProvider:App:logoutRequestUrl" }, { "name": "urn:ietf:params:scim:schemas: oracle:idcs:extension:samlServiceProvider:App:partnerProviderId" }, { "name": "urn:ietf:params:scim: schemas:oracle:idcs:extension:samlServiceProvider:App:nameIdFormat" }, { "name": "urn:ietf:params: scim:schemas:oracle:idcs:extension:samlServiceProvider:App:logoutBinding" }, { "name": "urn:ietf:params :scim:schemas:oracle:idcs:extension:samlServiceProvider:App:userAssertionAttributes" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:samlServiceProvider:App:signatureHashAlgorithm" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:samlServiceProvider:App:metadata" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:samlServiceProvider:App:encryptAssertion" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:samlServiceProvider:App:logoutEnabled" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:samlServiceProvider: App:encryptionCertificate" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs: extension:samlServiceProvider:App:signingCertificate" }, { "name": "urn:ietf:params:scim:schemas: oracle:idcs:extension:samlServiceProvider:App:federationProtocol" }, { "name": "urn:ietf:params:scim: schemas:oracle:idcs:extension:webTierPolicy:App:webTierPolicyJson" }, {"name": "urn:ietf:params:scim: schemas:oracle:idcs:extension:managedapp:App:bundleConfigurationProperties" }, {"name": "urn:ietf: params:scim:schemas:oracle:idcs:extension:managedapp:App:isAuthoritative" }, { "name": "urn:ietf: params:scim:schemas:oracle:idcs:extension:managedapp:App:enableSync" }, { "name": "urn:ietf:params: scim:schemas:oracle:idcs:extension:managedapp:App:adminConsentGranted" }, { "name": "urn:ietf:params: scim:schemas:oracle:idcs:extension:managedapp:App:connected" }, { "name": "urn:ietf:params:scim: schemas:oracle:idcs:extension:managedapp:App:flatFileBundleConfigurationProperties" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:managedapp:App:threeLeggedOAuthCredential" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:managedapp:App:bundlePoolConfiguration" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:managedapp:App:flatFileConnectorBundle" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:formFillAppTemplate:AppTemplate:revealPasswordOnForm" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:formFillAppTemplate:AppTemplate:userNameFormTemplate" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:formFillAppTemplate:AppTemplate:userNameFormExpression" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:formFillAppTemplate:AppTemplate:formCredentialSharingGroupID" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:formFillAppTemplate:AppTemplate:formCredMethod" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:formFillAppTemplate:AppTemplate:syncFromTemplate" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:formFillAppTemplate:AppTemplate:configuration" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:formFillAppTemplate:AppTemplate:formFillUrlMatch" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:formFillAppTemplate:AppTemplate:formType" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:kerberosRealm:App:masterKey" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:kerberosRealm:App:maxRenewableAge" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:kerberosRealm:App:maxTicketLife" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:kerberosRealm:App:supportedEncryptionSaltTypes" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:kerberosRealm:App:realmName" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:kerberosRealm:App:ticketFlags" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:kerberosRealm:App:defaultEncryptionSaltType" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:requestable:App:requestable" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:formFillApp:App:revealPasswordOnForm" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:formFillApp:App:userNameFormExpression" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:formFillApp:App:formType" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:formFillApp:App:formCredMethod" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:formFillApp:App:configuration" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:formFillApp:App:formFillUrlMatch" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:formFillApp:App:formCredentialSharingGroupID" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:formFillApp:App:userNameFormTemplate" }, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:dbcs:App:domainApp" }, { "name": "active" }, { "name": "grantedAppRoles" }, { "name": "userRoles" }, { "name": "adminRoles" }, { "name": "clientSecret" } ], "infrastructure": false, "isAliasApp": false, "isManagedApp": false, "isMobileTarget": false, "isOAuthClient": true, "isOAuthResource": false, "isOPCService": false, "isSamlServiceProvider": false, "isUnmanagedApp": false, "isWebTierPolicy": false, "loginMechanism": "OIDC", "migrated": false, "name": "OICTEST_BASICAUTH", "showInMyApps": false, "trustScope": "Explicit", "urn:ietf:params:scim:schemas:oracle:idcs:extension:requestable:App": { "requestable": false }, "schemas": ["urn:ietf:params:scim:schemas:oracle:idcs:App", "urn:ietf:params:scim:schemas: oracle:idcs:extension:requestable:App"] }'You receive an application response:{ "clientType": "confidential", "isAliasApp": false, "meta": { "created": "2019-04-01T07:51:47.025Z", "lastModified": "2019-04-01T07:51:47.025Z", "resourceType": "App", "location": "https://${IDCS_HOST}/admin/v1/Apps/ 0c228094b0f5456289b928f979800308" }, "active": true, "isLoginTarget": true, "idcsCreatedBy": { "display": "OIC_SI_TEST", "type": "App", "value": "5debb165fc6946708e2c1f27264fafb1", "$ref": "https://${IDCS_HOST}/admin/v1/Apps/ 5debb165fc6946708e2c1f27264fafb1" }, "displayName": "OICTEST_BASICAUTH", "showInMyApps": false, "isMobileTarget": false, "allowOffline": false, "isUnmanagedApp": false, "idcsLastModifiedBy": { "display": "OIC_SI_TEST", "type": "App", "value": "5debb165fc6946708e2c1f27264fafb1", "$ref": "https://${IDCS_HOST}/admin/v1/Apps/5debb165fc6946708e2c1f27264fafb1" }, "isOPCService": false, "name": "OICTEST_BASICAUTH", "isOAuthClient": true, "isManagedApp": false, "isSamlServiceProvider": false, "infrastructure": false, "allUrlSchemesAllowed": false, "trustScope": "Explicit", "id": "0c228094b0f5456289b928f979800308", "isWebTierPolicy": false, "loginMechanism": "OIDC", "allowAccessControl": false, "isOAuthResource": false, "migrated": false, "isKerberosRealm": false, "allowedGrants": [ "client_credentials", "urn:ietf:params:oauth:grant-type:jwt-bearer" ], "attrRenderingMetadata": [ { "name": "aliasApps", "visible": false } ], "basedOnTemplate": { "value": "CustomWebAppTemplateId", "lastModified": "2018-05-31T22:35:08Z", "$ref": "https://${IDCS_HOST}/admin/v1/AppTemplates/CustomWebAppTemplateId" }, "schemas": [ "urn:ietf:params:scim:schemas:oracle:idcs:App" ], "clientSecret": "91ac1189-b2ca-4ccb-a049-bbc635927646" }
- Create an application request. Ensure that you replace
- Note the application ID (part of the location parameter above), client ID (the name parameter above), and client secret from the response (for this example, referred to as
${SI_APP_ID},${SI_CLIENT_ID}, and${SI_CLIENT_SECRET}). - Activate the application using the above access token.
- Activate the application request:
curl -X PUT https://${IDCS_HOST}/admin/v1/AppStatusChanger/${SI_APP_ID} -H 'Authorization: Bearer ${SA_ACCESS_TOKEN}' -H 'Content-Type: application/json' -d '{"schemas":["urn:ietf:params:scim:schemas:oracle:idcs:AppStatusChanger"],"id":"${SI_APP_ID}", "active":true}'
- Activate the application request:
- Get an access token to create an application (for this example, referred to as
- Associate the service integration application.
- Identify the
AppRoleIDto be granted for the Oracle Integration application. Therefore, a search is performed for that role (for this example, referred to as${OIC_APP_ROLE_ID}). Application roles are per service instance, such as ServiceAdministrator, ServiceInvoker, and others, and defined in the Oracle Cloud Service Oracle Cloud Infrastructure Identity and Access Management application.AppRoleIDsare the IDs associated with those roles.- Get the application role ID request:
curl -X GET 'https://${IDCS_HOST}/admin/v1/AppRoles?attributes=groups,urn:ietf:params: scim:schemas:oracle:idcs:extension:user:User:appRoles&filter=displayName+co+%22ServiceUser%22+ and+app.value+eq+%22${OIC_APP_ID}%22' -H 'Authorization: Bearer ${SA_ACCESS_TOKEN}'You receive the application role ID response:{ "schemas": [ "urn:ietf:params:scim:api:messages:2.0:ListResponse" ], "totalResults": 1, "Resources": [ { "displayName": "ServiceAdministrator", "id": "20e22fd1eb2e43ac8645e105abcab201", "app": { "value": "e0eea2c9fadb42c09d33035ff41e8f57", "display": "OICSSA_oiccafdev7" } } ], "startIndex": 1, "itemsPerPage": 50 }
- Get the application role ID request:
- Grant the service integration application with the above role. This attaches the application role to the service integration application you created.
- Grant the role request:
curl -X POST https://${IDCS_HOST}/admin/v1/Grants -H 'Authorization: Bearer ${SA_ACCESS_TOKEN}' -H 'Content-Type: application/json' -d '{ "app": { "value": "${OIC_APP_ID}" }, "entitlement": { "attributeName": "appRoles", "attributeValue": "${OIC_APP_ROLE_ID}" }, "grantMechanism": "ADMINISTRATOR_TO_APP", "grantee": { "value": "${SI_APP_ID}", "type": "App" }, "schemas": ["urn:ietf:params:scim:schemas:oracle:idcs:Grant"] }'The role response is granted:{ "app": { "value": "${OIC_APP_ID}", "$ref": "https://${IDCS_HOST}/admin/v1/Apps/${OIC_APP_ID}" }, "entitlement": { "attributeName": "appRoles", "attributeValue": "${OIC_APP_ROLE_ID}" }, "grantMechanism": "ADMINISTRATOR_TO_APP", "grantee": { "value": "${SI_APP_ID}", "type": "App", "$ref": "https://${IDCS_HOST}/admin/v1/Apps/${SI_APP_ID}" }, "schemas": [ "urn:ietf:params:scim:schemas:oracle:idcs:Grant" ], "id": "6832316983c545baa01e9a9488022fa7", "isFulfilled": true, "grantor": { "type": "App", "value": "${SA_APP_ID}", "$ref": "https://${IDCS_HOST}/admin/v1/Apps/${SA_APP_ID}" }, "meta": { "created": "2019-04-01T08:00:33.277Z", "lastModified": "2019-04-01T08:00:33.277Z", "resourceType": "Grant", "location": "https://${IDCS_HOST}/admin/v1/Grants/6832316983c545baa01e9a9488022fa7" }, "idcsCreatedBy": { "value": "${SA_APP_ID}", "type": "App", "display": "OIC_SI_TEST", "$ref": "https://${IDCS_HOST}/admin/v1/Apps/${SA_APP_ID}" }, "idcsLastModifiedBy": { "value": "${SA_APP_ID}", "type": "App", "display": "OIC_SI_TEST", "$ref": "https://${IDCS_HOST}/admin/v1/Apps/${SA_APP_ID}" } }
- Grant the role request:
- Identify the
How to Use the Service Integration Credentials
Once setup is complete, use the credentials ${SI_CLIENT_ID} (for the user name) and ${SI_CLIENT_SECRET} (for the password) to install the connectivity agent or for any other authentications to an Oracle Integration endpoint as shown below.
curl -X POST https://${OIC_HOST}/ic/ws/integration/v1/flows/soap/FLOW/1.0/ -u
${SI_CLIENT_ID}:${SI_CLIENT_SECRET} -H 'Content-Type: text/xml;charset=UTF-8' -H 'SOAPAction:
process' -d '<soapenv:Envelope xmlns:rp="http://xmlns.oracle.com/rp_WS_Basic_Authentication_APP/
rp_WS_Basic_Authentication/rp_Basic_Authentication_WS" xmlns:soapenv="http://schemas.xmlsoap.org/
soap/envelope/">
<soapenv:Header>
<wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/
oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/
oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsu:Timestamp wsu:Id="TS-0BC1DE3F9C8F739DB815541392855881">
<wsu:Created>2019-04-01T00:00:00.000Z</wsu:Created>
<wsu:Expires>2019-04-02T00:00:00.000Z</wsu:Expires>
</wsu:Timestamp>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
<rp:process>
<rp:input>OICTEST</rp:input>
</rp:process>
</soapenv:Body>
</soapenv:Envelope>'