From f6079a86318c655315f1408fcc7765ab7988605d Mon Sep 17 00:00:00 2001 From: Van Ngo Date: Wed, 29 Jan 2025 19:28:12 -0500 Subject: [PATCH 01/28] Add new slack selector topic for Update an integration --- .../@okta/vuepress-site/docs/guides/index.md | 1 + .../docs/guides/update-oin-app/index.md | 9 + .../docs/guides/update-oin-app/main/index.md | 159 ++++++++++++++++++ .../openidconnect/backward-compatible-eg.md | 9 + .../main/openidconnect/protocol-fullname.md | 1 + .../main/openidconnect/protocol-name.md | 1 + .../main/openidconnect/protocol-test-flow.md | 13 ++ .../main/openidconnect/test-instance.md | 14 ++ .../main/openidconnect/variable-desc.md | 13 ++ .../main/saml2/backward-compatible-eg.md | 9 + .../main/saml2/protocol-fullname.md | 1 + .../main/saml2/protocol-name.md | 1 + .../main/saml2/protocol-test-flow.md | 14 ++ .../main/saml2/test-instance.md | 16 ++ .../main/saml2/variable-desc.md | 31 ++++ .../main/scim/backward-compatible-eg.md | 9 + .../main/scim/protocol-fullname.md | 1 + .../update-oin-app/main/scim/protocol-name.md | 1 + .../main/scim/protocol-properties.md | 10 ++ .../main/scim/protocol-test-flow.md | 3 + .../update-oin-app/main/scim/test-instance.md | 75 +++++++++ .../update-oin-app/main/scim/variable-desc.md | 27 +++ .../const/navbar.const.js | 4 + 23 files changed, 422 insertions(+) create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/index.md create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/backward-compatible-eg.md create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/protocol-fullname.md create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/protocol-name.md create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/protocol-test-flow.md create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/test-instance.md create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/variable-desc.md create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/backward-compatible-eg.md create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/protocol-fullname.md create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/protocol-name.md create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/protocol-test-flow.md create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/test-instance.md create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/variable-desc.md create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/backward-compatible-eg.md create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/protocol-fullname.md create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/protocol-name.md create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/protocol-properties.md create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/protocol-test-flow.md create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/test-instance.md create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/variable-desc.md diff --git a/packages/@okta/vuepress-site/docs/guides/index.md b/packages/@okta/vuepress-site/docs/guides/index.md index cc0d089974b..f8aced909e5 100644 --- a/packages/@okta/vuepress-site/docs/guides/index.md +++ b/packages/@okta/vuepress-site/docs/guides/index.md @@ -72,6 +72,7 @@ guides: - submit-app - submit-app-prereq - submit-oin-app + - update-oin-app - add-private-app - deployment-checklist - deploy-your-app diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/index.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/index.md new file mode 100644 index 00000000000..4efa88cbfbe --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/index.md @@ -0,0 +1,9 @@ +--- +title: Update a published integration with the OIN Wizard +meta: + - name: description + content: Learn how to update your published integration in the Okta Integration Network (OIN). The update and submit tasks are performed in the Okta Admin Console through the OIN Wizard. +layout: Guides +sections: + - main +--- diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md new file mode 100644 index 00000000000..89f15f040fd --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md @@ -0,0 +1,159 @@ +--- +title: Update a published integration with the OIN Wizard +meta: + - name: description + content: Learn how to update your published integration in the Okta Integration Network (OIN). You can make updates and resubmit your integration in the OIN Wizard. The OIN team reviews your submission and updates the OIN catalog after your integration has been verified. +layout: Guides +--- + +Learn how to update an OIDC, SAML 2.0, or SCIM 2.0 published integration in the Okta Integration Network (OIN) using the OIN Wizard. + +--- + +#### What you need + +* A published OIDC, SAML 2.0, or SCIM integration in the OIN that was [submitted using the OIN Wizard](/docs/guides/submit-oin-app/). +* The [Okta Developer Edition org](https://developer.okta.com/signup/) from where you originally submitted your published integration. The OIN Wizard is only available in Okta Developer Edition orgs. +* An admin user in the Okta Developer Edition org with either the super admin or the app and org admin roles + +--- + +## Overview + +If you have a published Single Sign-On (SSO) or lifecycle management integration in the OIN catalog, you can update and resubmit it with the OIN Wizard. + +The OIN Wizard currently supports updates for integrations that use the following protocols: + +* OIDC +* SAML 2.0 +* SCIM 2.0 + +When you edit a published OIN integration, test the flows for the updated version and the published version for backwards compatibility. Testing the published version for backwards compatibility ensures that your integration still works for users who have already installed it. See [Update integration considerations](#update-integration-considerations) before you edit your published integration. After you successfully test the updated and published versions of your integration, resubmit it to the OIN team. + +> **Note:** When you edit your published OIN integration, your previous PUBLISHED status and date are overwritten with the DRAFT status and current date. + +To update a previously published OIN integration: + +1. Sign in to your Okta Developer Edition org as a user with either app admin or super admin roles. + > **Note:** Edit your integration from an Okta account that has your company domain in the email address. You can't use an account with a personal email address. The OIN team doesn't review submission edits from a personal email account. +1. In the Admin Console, go to **Applications** > **Your OIN Integrations**. + + > **Note:** If you don't need to edit your submission and want to jump to testing, see [Navigate directly to test your integration](#navigate-directly-to-test-your-integration). + +1. Click your published integration to update from the dashboard. Your published OIN submission appears in read-only mode. +1. From the **This integration is read-only** information box, click **Edit integration**. + > **Note:** If you open a submission in **DRAFT** status, it's not in read-only mode and the **Edit integration** option isn't available. + + Continue to edit your draft submission as a new submission. See [Start a submission](#start-a-submission). +1. If the OIN Wizard doesn't detect an instance to test your published integration in the org, then an **Application instance not detected** dialog appears. Click **Generate instance** to create an app instance based on your published OIN integration. See [Add existing app integrations](https://help.okta.com/okta_help.htm?type=oie&id=csh-apps-add-app) to create an instance for backwards-compatibility testing. + > **Note:** The **Generate instance** option is disabled if you have five active instances in your org. [Deactivate instances](#deactivate-an-app-instance-in-your-org) that you're not using. + + If the OIN Wizard detects an instance based on your published integration, the dialog doesn't appear. This is usually the case if you tested and submitted your published integration from the same org. + +1. Continue to update your integration in the **Select protocol**, **Configure your integration**, and **Test integration** pages. See [Update integration considerations](#update-integration-considerations) for backwards compatibility with integration variables. + + The **Required app instances** box contains the following items: + * The instances that you need to test the **PUBLISHED VERSION** of your OIN integration. + * The instances that you need to test the **CURRENT VERSION** of your integration submission. + + See [Required app instances](#required-app-instances). + > **Note:** If the OIN Submission Tester session expired, click **Refresh tester session** for a new test session. + + Backwards-compatible test instances that were generated from your published integration appear in the **Application instances for testing** list. + +1. Click **Generate Instance** to create an instance required for the **CURRENT VERSION** from the **Required app instances** status box. + + See [Generate an instance for testing](#generate-an-instance-for) to create instances for your current submission. + > **Note:** There's a maximum of five active app instances allowed in a Developer Edition org. Deactivate any instances that you don't need for testing. + +1. Test your integration protocol: + + * For SSO testing, click **Add to Tester** for each required test instance. See [Add to Tester](#add-to-tester).
The required tests appear for each test instance. Run your tests from the OIN Submission Tester. See [OIN Submission Tester](#oin-submission-tester). If you encounter errors, see [Failed tests](#failed-tests) for help with resolving the issues. + + * For SCIM testing, see [Test your SCIM integration](#test-your-scim-integration) for all the test requirements. + +1. [Submit your updates](#submit-your-updates) if all your tests passed. + +## Update integration considerations + +* For published integrations that were migrated from the OIN Manager, if you need to update configured properties that aren't available the OIN Wizard, contact . + +* You can't update a published SCIM integration with Basic authentication. This breaks the integration for existing customers. For any updates, you must submit a new SCIM integration that implements header authentication or OAuth 2.0 authentication. You can use either token or bearer token format for header authentication. + +* If you edit a published SCIM integration that was migrated from the OIN Manager, the **Import users** (and **Import groups** if groups are managed) capability is automatically enabled in the OIN Wizard. You must support and test this capability if your previous SCIM integration didn't support it. If you need help with implementing this feature, contact . + +* When you update an integration that's already published, be mindful to preserve backwards compatibility for your integration. Older instances of your integration could be in use by Okta customers. + + * If you modify the **Name** (`name`) property of your [integration variables](#integration-variables), Okta removes the original variable and creates a variable with your updated name. This action negatively impacts your existing customers if you use the original variable in your integration dynamic properties. + + * Migrated published integrations from the OIN Manager don't have some OIN Wizard restrictions. For instance: + + * Published integrations can have more than three integration variables + * Published integrations can have variable names with uppercase letters + * Published integrations can use `http` (instead of enforced `https`) in URLs and Expression Language-supported properties + + * If your update introduces new variables and you're using dynamic URLs, ensure that your tests cover various scenarios with different possible values for those variables. See [Dynamic properties with Okta Expression Language](#dynamic-properties-with-okta-expression-language). The newly introduced variables aren't populated for older instances of your integration. + + For example: + + + +## Submit your updates + +After you successfully test your updated integration, you're ready to submit. + +The OIN Wizard checks the following for SSO submissions: + +* All required instances are detected. +* All required instances are active. +* All required tests passed within the last 48 hours. + +The OIN Wizard checks the following for SCIM submissions: + +* All required instances are detected. +* All required instances are active. +* The **Link to Runscope spec test results** field is specified. +* The **Link to Runscope CRUD test results** field is specified. + +> **Note:** See [Test your SCIM integration](#test-your-scim-integration) for SCIM submission requirements. + +**Submit integration** is enabled after all these requirements are met. + +1. Select **I certify that I have successfully completed required tests**. +1. Click **Submit integration** to submit your integration. +1. Click **Close wizard**. + The **Your OIN Integration** dashboard appears. + +After you submit your integration, your integration is queued for OIN initial review. Okta sends you an email with the expected initial review completion date. + +The OIN review process consists of two phases: + +1. The initial review phase +1. The QA testing phase + +Okta sends you an email at each phase of the process to inform you of the status, the expected phase completion date, and any issues for you to fix. If there are issues with your integration, make the necessary corrections and resubmit in the OIN Wizard. + +> **Note:** Sometimes, your fix doesn't include OIN Wizard edits to your integration submission. In this case, inform the OIN team of your fix so that they can continue QA testing. + +Check the status of your submission on the **Your OIN Integrations** dashboard. + +See [Understand the submission review process](/docs/guides/submit-app-overview/#understand-the-submission-review-process). + +## Submission support + +If you need help during your submission, Okta provides the following support stream for the various phases of your OIN submission: + +1. Building an integration phase + + * When you're constructing your SSO app integration, you can post a question on the [Okta Developer Forum](https://devforum.okta.com/) or submit your question to . + +1. Using the OIN Wizard to submit an integration phase + + * If you need help with the OIN Wizard, review this document or see [Publish an OIN integration](/docs/guides/submit-app-overview/). + * Submit your OIN Wizard question to if you can't find an answer in the documentation. + * If you have an integration status issue, contact . + +1. Testing an integration phase + + * If you have issues during your integration testing phase, you can post a question on the [Okta Developer Forum](https://devforum.okta.com/) or submit your question to . + diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/backward-compatible-eg.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/backward-compatible-eg.md new file mode 100644 index 00000000000..969092af031 --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/backward-compatible-eg.md @@ -0,0 +1,9 @@ + Your integration update introduced a new variable (`companyId`), and you use it in your updated redirect URL. The redirect URL changed from `https://login.myapp.io` to `https://login.myapp.io?connection={app.companyId}`. In this case, ensure that the dynamic redirect URL is also valid for existing instances where the `companyId` value isn't set. + + To handle empty `companyId` values, you can define the redirect URL as: + + ```bash + https://{String.len(app.companyId) == 0 ? 'login.myapp.io' : 'login.myapp.io?connection=' + app.companyId} + ``` + + This expression handles both scenarios where `companyId` is populated or empty. \ No newline at end of file diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/protocol-fullname.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/protocol-fullname.md new file mode 100644 index 00000000000..2f8bbd40ed5 --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/protocol-fullname.md @@ -0,0 +1 @@ +OpenID Connect (OIDC) \ No newline at end of file diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/protocol-name.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/protocol-name.md new file mode 100644 index 00000000000..1b007617e10 --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/protocol-name.md @@ -0,0 +1 @@ +OIDC \ No newline at end of file diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/protocol-test-flow.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/protocol-test-flow.md new file mode 100644 index 00000000000..4784eb9d3fc --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/protocol-test-flow.md @@ -0,0 +1,13 @@ +In the **OIDC tests** section, specify the following sign-in flow details: + +|
Property
|   | Description | +| ----------------- | --: | ------------ | +| **Supported sign-in flows** | | Indicates which sign-in flow your integration supports | +| | **IdP** | Sign-in flow is initiated from the Okta End-User Dashboard. If you specified **Initiate login URI** previously from the [OIDC properties](#properties) section, then this flow is selected. | +| | **SP** | Sign-in flow is initiated from your app sign-in page. This flow is selected and read-only because all OIDC SSO integrations must support the SP-initiated flow. | +| **Supports Just-In-Time provisioning?** `*` | | Indicate if your integration supports Just-In-Time (JIT) provisioning. With JIT provisioning, user profiles are created when they sign in for the first time. This eliminates the need to create user accounts in advance. | +| | **Yes** | Your integration supports JIT. | +| | **No** | Your integration doesn't support JIT. | +| **SP Initiate URL** | | Specify the URL for SP-initiated sign-in flows. This URL is required for the SP-initiated flow.
The maximum URL length is 512 characters. | + +`*` Required properties diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/test-instance.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/test-instance.md new file mode 100644 index 00000000000..a4548233886 --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/test-instance.md @@ -0,0 +1,14 @@ +2. Specify the **Application label** and any app properties required in the **General settings** tab. +3. Click **Done**. The **Assignments** tab appears. + You can assign users to your integration later, see the next [Assign test users to your integration](#assign-test-users-to-your-integration-instance) task. +4. Click the **Sign On** tab to view and copy the OIDC client ID and secret. +5. Click **View Setup Instructions** to open a new tab to your integration setup instructions. This is the customer configuration guide that you previously specified in the OIN Wizard. +6. Follow the instructions in your guide to set up the SSO integration on your app with the OIDC client ID and secret provided. +7. Follow these steps if you have an Identity Engine Developer Edition org: + 1. Click the **Sign On** tab, scroll to the **User authentication** section, and click **Edit**. + 1. Select **Password only** from the **Authentication policy** dropdown menu. + [[style="list-style-type:lower-alpha"]] + 1. Click **Save**. + > **Note:** Most recent Okta Developer Edition orgs are Identity Engine orgs. See [OIN Wizard authentication policy for testing](/docs/guides/submit-app-prereq/main/#oin-wizard-authentication-policy-for-testing). + +8. [Assign test users to your instance](#assign-test-users-to-your-integration-instance) before you start testing your SSO flows. \ No newline at end of file diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/variable-desc.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/variable-desc.md new file mode 100644 index 00000000000..a938af561e5 --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/variable-desc.md @@ -0,0 +1,13 @@ +For example, if you have an OIDC configuration variable called `subdomain`, then you can set your **Redirect URI** string to `https://{app.subdomain}.example.org/strawberry/login`. When your customer sets their `subdomain` variable value to `berryfarm`, then `https://berryfarm.example.org/strawberry/login` is their redirect URL. + +> **Note**: A variable can include a complete URL (for example, `https://example.com`). This enables you to use global variables, such as `app.baseURL`. + +The following are Expression Language specifics for OIDC properties: + +* OIDC [integration variables](#integration-variables) you define in the OIN Wizard are considered [Application properties](/docs/reference/okta-expression-language/#application-properties) and have the `app.` prefix when you reference them in Expression Language. For example, if your integration variable name is `subdomain`, then you can reference that variable with `app.subdomain`. + +* OIDC properties support [Expression Language conditional expressions](/docs/reference/okta-expression-language/#conditional-expressions) and evaluates everything between curly brackets. For example, the following is an expression for the **Redirect URI** property: + + ```js + {String.stringContains(app.environment, 'PROD') ? 'https://app.data.one/' : 'https://app-sandbox.data.one/'} + ``` \ No newline at end of file diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/backward-compatible-eg.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/backward-compatible-eg.md new file mode 100644 index 00000000000..5c246d9d52a --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/backward-compatible-eg.md @@ -0,0 +1,9 @@ + Your integration update introduced a new variable (`companyId`), and you use it in your updated ACS URL. The ACS URL changed from `https://login.myapp.io` to `https://login.myapp.io?connection={org.companyId}`. In this case, ensure that the dynamic ACS URL is also valid for existing instances where the `companyId` value isn't set. + + To handle empty `companyId` values, you can define the ACS URL as: + + ```bash + https://${empty org.companyId ? 'login.myapp.io' : 'login.myapp.io?connection=' += org.companyId} + ``` + + This expression handles both scenarios where `companyId` is populated or empty. \ No newline at end of file diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/protocol-fullname.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/protocol-fullname.md new file mode 100644 index 00000000000..43347ef91d7 --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/protocol-fullname.md @@ -0,0 +1 @@ +Security Assertion Markup Language (SAML) \ No newline at end of file diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/protocol-name.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/protocol-name.md new file mode 100644 index 00000000000..f1ee2b8e0e3 --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/protocol-name.md @@ -0,0 +1 @@ +SAML \ No newline at end of file diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/protocol-test-flow.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/protocol-test-flow.md new file mode 100644 index 00000000000..f01784fa403 --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/protocol-test-flow.md @@ -0,0 +1,14 @@ +In the **SAML tests** section, specify the following sign-in flow details: + +|
Property
|   | Description | +| ----------------- | --: | ------------ | +| **Supported sign-in flows** | | Indicate which sign-in flow your integration supports. You must select at least one of the following flows. | +| | **IdP** | Sign-in flow is initiated from the Okta End-User Dashboard. | +| | **SP** | Sign-in flow is initiated from your app sign-in page. | +| **Supports Just-In-Time provisioning?** `*` | | Indicate if your integration supports Just-In-Time (JIT) provisioning. With JIT provisioning, you can use a SAML assertion to create users the first time they try to sign in. This eliminates the need to create user accounts in advance. | +| | **Yes** | Your integration supports JIT. | +| | **No** | Your integration doesn't support JIT. | +| **SP Initiate URL** | | Specify the URL for SP-initiated sign-in flows. This URL is required for the SP flow.
The maximum URL length is 512 characters. | +| **SP Initiate flow description** | | Provide instructions on how to sign in to your app using the SP-initiated flow.
The maximum description length is 2048 characters. This field is required for the SP flow.| + +`*` Required properties diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/test-instance.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/test-instance.md new file mode 100644 index 00000000000..57e756ed537 --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/test-instance.md @@ -0,0 +1,16 @@ +2. Specify the **Application label** and any integration properties required in the **General settings** tab. +3. Click **Done**. The **Assignments** tab appears. + You can assign users to your integration later, see [Assign test users to your integration](#assign-test-users-to-your-integration-instance). +4. Click the **Sign On** tab. +5. Click **View SAML setup instructions** to open a new tab to your integration setup instructions. This is the customer configuration guide that you previously specified in the OIN Wizard. +6. Follow the instructions in your guide to set up the SAML SSO integration on your app. + * Click **Copy** next to **Metadata URL** to copy the full SAML metadata URL required for the integration. + * To view specific SAML metadata details, click the **More details** arrow. +7. Follow these steps if you have an Identity Engine Developer Edition org: + 1. Click the **Sign On** tab, scroll to the **User authentication** section, and click **Edit**. + 1. Select **Password only** from the **Authentication policy** dropdown menu. + [[style="list-style-type:lower-alpha"]] + 1. Click **Save**. + > **Note:** Most recent Okta Developer Edition orgs are Identity Engine orgs. See [OIN Wizard authentication policy for testing](/docs/guides/submit-app-prereq/main/#oin-wizard-authentication-policy-for-testing). + +8. [Assign test users to your instance](#assign-test-users-to-your-integration-instance) before you start testing your SSO flows. \ No newline at end of file diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/variable-desc.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/variable-desc.md new file mode 100644 index 00000000000..5c77bf74ad0 --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/variable-desc.md @@ -0,0 +1,31 @@ +For example, if you have a SAML configuration variable called `subdomain`, then you can set your **ACS URL** string to `https://${org.subdomain}.example.org/strawberry/login`. When your customer sets their `subdomain` variable value to `berryfarm`, then `https://berryfarm.example.org/strawberry/login` is their ACS URL. + +> **Note**: A variable can include a complete URL (for example, `https://example.com`). This enables you to use global variables, such as `org.baseURL`. + +The following are Expression Language specifics for SAML properties: + +* SAML [integration variables](#integration-variables) you define in the OIN Wizard are considered [Organization properties](/docs/reference/okta-expression-language/#organization-properties) and have the `org.` prefix when you reference them in Expression Language. For example, if your integration variable name is `subdomain`, then you can reference that variable with `org.subdomain`. + +* SAML properties support [Expression Language conditional expressions](/docs/reference/okta-expression-language/#conditional-expressions) and evaluates everything between `${` and `}`. For example, the following is an expression for the **ACS URL** property: + + ```js + ${empty org.baseUrl ? 'https://app.mydomain.com' : org.baseUrl} + ``` + +* SAML properties don't support Expression Language [String functions](https://developer.okta.com/docs/reference/okta-expression-language/#string-functions). Use [JSTL functions](https://docs.oracle.com/javaee/5/jstl/1.1/docs/tlddocs/fn/tld-summary.html) instead. For example: + + ```js + ${fn:substringAfter(org.base_url, '//')} + ``` + + ```js + ${fn:substringBefore(user.userName, '@')}@example.com + ``` + + ```js + https://${fn:endsWith(org.site_url, 'host1.com') ? 'host1.com' : fn:endsWith(org.site_url, 'host2.com') ? 'host2.com' : '.host.com'}/sso/saml + ``` + + ```js + https://${fn:contains(org.environment, 'production') ? 'productiondomain.com' : 'previewdomain.com'}/sso/saml + ``` diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/backward-compatible-eg.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/backward-compatible-eg.md new file mode 100644 index 00000000000..2f18e423586 --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/backward-compatible-eg.md @@ -0,0 +1,9 @@ + Your integration update introduced a new variable (`companyId`), and you use it in your updated SCIM server base URL. The base URL changed from `https://fruits.example.com/scim2/myapp/` to `https://fruits.example.com/scim2/myapp?connection={app.companyId}`. In this case, ensure that the dynamic base URL is also valid for existing instances where the `companyId` value isn't set. + + To handle empty `companyId` values, you can define the base URL as: + + ```js + 'https://fruits.example.com/scim2/myapp' + (String.len(app.companyId) == 0 ? '/' : '?connection=' + app.companyId) + ``` + + This expression handles scenarios where `companyId` is populated or empty. diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/protocol-fullname.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/protocol-fullname.md new file mode 100644 index 00000000000..822178edab0 --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/protocol-fullname.md @@ -0,0 +1 @@ +SCIM 2.0 \ No newline at end of file diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/protocol-name.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/protocol-name.md new file mode 100644 index 00000000000..31ab7a9f854 --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/protocol-name.md @@ -0,0 +1 @@ +SCIM \ No newline at end of file diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/protocol-properties.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/protocol-properties.md new file mode 100644 index 00000000000..45dfff58fcc --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/protocol-properties.md @@ -0,0 +1,10 @@ +|
Property
| Description | +| ----------------- | ------------ | +| **Base URL** `*` | Specify the base URL for your SCIM server.
If you're using a per tenant design, include the variable names that you created in your URL. For example:` 'https://' + app.subdomain + '.example.com/scim2/' `. See [Dynamic properties with Okta Expression Language](#dynamic-properties-with-okta-expression-language).
The maximum field length is 1024 characters. | +| **What objects do you want Okta to manage in your integration?** `*` | Select the objects that you want Okta to manage with your SCIM integration.
  • **Users**: Okta manages users in your app by default.
  • **Groups**: Select this option if you also want Okta to manage groups in your app.
| +| **Authentication mode** `*` | Select the authentication mode to make outbound calls to your SCIM server.
  • **Header**: Uses authorization header with a customer-provided token in the following format: `Authorization: {API token}`
  • **Bearer**: Uses authorization header with a customer-provided bearer token in the following format: `Authorization: Bearer {API token}`
  • **OAuth 2**: Uses OAuth 2.0 authorization code grant flow with the following:
    • **Authorize endpoint**: Specify the authorize endpoint. For example: `https://myexample.com/oauth2/auth`
      You can specify a dynamic endpoint URL. See [Dynamic properties with Okta Expression Language](#dynamic-properties-with-okta-expression-language).
    • **Token endpoint**: Specify the token endpoint. For example: `https://myexample.com/oauth2/token`
      You can specify a dynamic endpoint URL. See [Dynamic properties with Okta Expression Language](#dynamic-properties-with-okta-expression-language).
    • **Client ID**: Specify the client ID.
    • **Client secret**: Specify the client secret.
**Note**: Basic authentication isn't supported. See [SCIM integration limitations](/docs/guides/submit-app-prereq/main/#scim-integration-limitations). | +| **User operations** `*` | Select user operations for your SCIM integration.
  • **Create**: Okta can create users in your app.
  • **Read** `*`: Okta can read users from your app.
  • **Update**: Okta can update users in your app.
  • **Change password**: Okta can update user passwords in your app.
  • **Deactivate**: Okta can deactivate users in your app.
  • **Support PATCH for User**: Okta can update users with the PATCH method in your app.
**Note**: **Import users** capability is enabled by default. **Profile sourcing** isn't supported, contact the [OIN team](mailto:oin@okta.com) if your integration must support this capability.| +| **Group operations** | Group operations for your SCIM integration. These are all selected by default if your integration manages the **Groups** object.
  • **Create**: Okta can create groups in your app.
  • **Read** `*`: Okta can read groups from your app.
  • **Update (Uses PATCH)**: Okta can update groups in your app with the PATCH method.
  • **Delete**: Okta can delete groups in your app.
**Note**: **Import groups** capability is enabled by default.| +| **Link to configuration guide** `*` | Specify the URL link to your customer-facing instructions on how to configure SCIM provisioning between Okta and your app. See [Customer configuration document guidelines](/docs/guides/submit-app-prereq/main/#customer-configuration-document-guidelines).| + +`*` Required properties diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/protocol-test-flow.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/protocol-test-flow.md new file mode 100644 index 00000000000..997c48dab48 --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/protocol-test-flow.md @@ -0,0 +1,3 @@ +Before you test your Okta SCIM integration, confirm that your SCIM API service is operational. Okta provides a SCIM API specification test suite in Runscope. See [Test your SCIM API](/docs/guides/scim-provisioning-integration-prepare/main/#test-your-scim-api). + +After you've successfully run the Okta SCIM API specification test suite in Runscope, save the URL of the test results. This Runscope test results URL is one of the requirements to submit your integration. diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/test-instance.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/test-instance.md new file mode 100644 index 00000000000..1c7ea8a49e7 --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/test-instance.md @@ -0,0 +1,75 @@ +2. In the **General settings** tab, enter an **Application label** and any other required integration properties. +3. Click **Done**. Your generated test instance appears with more tabs for configuration. +4. Click **Provisioning** > **Configure API Integration**. +5. Select **Enable API integration**. + * For custom or bearer authentication, specify the **API token** for your instance. + * For OAuth 2.0 authentication, click **Authenticate with {yourApp}** and provide credentials for your test instance. +1. Click **Test API Credentials** to test authentication to your SCIM service. If there's an error, verify that the credentials are correct. +1. Click **Save**. +1. Select **Settings** > **To Okta** from the updated **Provisioning** tab. +1. In the **General** section, click **Edit** to schedule imports and configure the username format for imported users. + + You can also define a percentage of acceptable assignments before the [import safeguards](https://help.okta.com/okta_help.htm?id=csh-eu-import-safeguard) feature is automatically triggered. + +1. Click **Save**. Next, [configure attribute mappings](#configure-attribute-mappings). + +> **Note:** Your SCIM app must support redirect URIs that include the app name (`{appName}`) that's generated after you create your app instance. See SCIM service [authentication](/docs/guides/scim-provisioning-integration-prepare/main/#authentication) for a list of redirect URIs required. Your app name appears in the **General settings** tab or in the Admin Console URL when you're viewing the instance page. + +#### Configure attribute mappings + +> **Note:** Configure attribute-mapping instructions are only for SCIM integrations. + +SCIM integrations that are submitted through the OIN Wizard have a default set of user attribute mappings. The user schema in your SCIM app might not support all of these attributes. Ensure the integration that you're submitting to Okta reflects the attributes that are supported by your app. The OIN team uses the attribute mappings in your test instance for your integration provisioning settings in the OIN catalog. + +After you've enabled the provisioning API connection in your test instance, configure user attribute mappings to and from Okta in the **Provisioning** tab of your instance: + +* **To App**: User attribute mappings from Okta to your app +* **To Okta**: User attribute mappings from your app to Okta + +1. Select **To App** on the left **Settings** panel of the **Provisioning** tab. + The **Provisioning to App** settings appear. The provisioning operations are already set by default from the [SCIM properties](#properties) section when you configured your integration. + +1. Scroll to the **{yourApp} Attribute Mappings** section. + + * Delete attributes: + 1. Click **X** next to the attribute that you want to delete, and then click **OK** to confirm. + + Repeat this step until you remove all the mappings for the attributes that you want to delete. + + 1. After removing all the mappings for the attributes that you want to delete, click **Go to Profile Editor**. + + 1. In the Profile Editor, delete all the corresponding attributes from the mapping by clicking **X** next to the attribute and then **Delete Attribute** to confirm. + + Repeat this step for all the attributes that you want to delete. + + * Add attributes: + + 1. In the Profile Editor, click **Add Attribute**. + + 1. Enter the information for the new attribute that you’re adding and then click **Save**. + + > **Note:** The **Scope** property determines whether the attribute that you're adding can be assigned at a group level or per user. If you want your admins to assign a value for this attribute at a group level, don't select the **User personal** checkbox. + + 1. After adding attributes, go back to the **{yourApp} Attribute Mappings** section and click **Edit** to map your new attributes. A dialog appears with two dropdown fields. + + 1. Select **Map from Okta Profile** in the first dropdown list. + 1. In the second dropdown list, select the Okta profile attribute that you want to map over to the SCIM attribute. + 1. Click **Save**. + + Repeat these steps for all SCIM attributes that you want to map (from Okta to your app). + +
+ + ![Displays the map attribute dialog.](/img/oin/scim_check-attributes-14.png) + +
+ + 5. After you update the mappings from Okta to your app, click **To Okta** in the **Settings** section. + 6. Scroll to the **{yourApp} Attribute Mappings** section. Find the attribute that you want to update and click **Edit**. A dialog appears with two dropdown fields next to **Attribute value**. + 7. Select **Map from {yourApp} App Profile** from the first dropdown list. + 8. In the second dropdown list, select the SCIM attribute that you want to map to the Okta attribute. + 9. Click **Save**. + + Repeat these steps for all SCIM attributes that you want to map from your app to Okta. + +After you complete your attribute mappings, you're ready to [test your SCIM integration](#test-your-scim-integration). diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/variable-desc.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/variable-desc.md new file mode 100644 index 00000000000..52049aedf51 --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/variable-desc.md @@ -0,0 +1,27 @@ +For example, if you have a SCIM configuration variable called `subdomain`, then you can set your **Base URL** string to ` 'https://' + app.subdomain + '.example.org/strawberry/scim2/'`. When your customer sets their `subdomain` variable value to `berryfarm`, then `https://berryfarm.example.org/strawberry/scim2/` is their base URL. + +> **Note**: A variable can include a complete URL (for example, `https://example.com/scim2/`). This enables you to use global variables, such as `app.baseURL`. + +The following are Expression Language specifics for SCIM properties: + +* Any SCIM [integration variables](#integration-variables) that you define in the OIN Wizard are considered [application properties](/docs/reference/okta-expression-language/#application-properties). They have an `app.` prefix when you reference them in Expression Language. For example, if your integration variable name is `subdomain`, then you can reference that variable using `app.subdomain`. + +* SCIM properties support [Expression Language conditional expressions](/docs/reference/okta-expression-language/#conditional-expressions). For example: + + ```js + 'https://' + app.subdomain + '.example.org/strawberry/scim2/'` + ``` + + ```js + 'https://' + (app.region == 'us' ? 'myfruit' : 'myveggie') + '.example.com/strawberry/oauth/token' + ``` + +* SCIM properties support Expression Language [String functions](https://developer.okta.com/docs/reference/okta-expression-language/#string-functions). For example: + + ```js + (String.len(app.baseUrl) == 0 ? 'https://fruit.example.com/scim2/' : app.baseUrl) + 'v1/oauth_token' + ``` + + ```js + (String.stringContains(app.environment,"PROD") ? 'https://fruit.example.com' : 'https://fruit-sandbox.example.com') + '/v1/oauth2/token' + ``` diff --git a/packages/@okta/vuepress-theme-prose/const/navbar.const.js b/packages/@okta/vuepress-theme-prose/const/navbar.const.js index 0de35483547..6c3358bc8d6 100644 --- a/packages/@okta/vuepress-theme-prose/const/navbar.const.js +++ b/packages/@okta/vuepress-theme-prose/const/navbar.const.js @@ -689,6 +689,10 @@ export const guides = [ title: "OIN Wizard: Submit an integration", guideName: "submit-oin-app", }, + { + title: "OIN Wizard: Update an integration", + guideName: "update-oin-app", + }, { title: "OIN Manager: Submit an integration", guideName: "submit-app", From 9aafcece21695c8250d646b2517e60a9348848c4 Mon Sep 17 00:00:00 2001 From: Van Ngo Date: Thu, 30 Jan 2025 14:28:43 -0500 Subject: [PATCH 02/28] Move update considerations and update steps over --- .../docs/guides/update-oin-app/main/index.md | 69 +++++++++++-------- .../main/openidconnect/considerations.md | 0 .../main/openidconnect/protocol-name.md | 2 +- .../main/saml2/considerations.md | 0 .../main/saml2/protocol-name.md | 2 +- .../main/scim/considerations.md | 3 + .../main/scim/protocol-fullname.md | 2 +- 7 files changed, 46 insertions(+), 32 deletions(-) create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/considerations.md create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/considerations.md create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/considerations.md diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md index 89f15f040fd..04f9aaaa40d 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md @@ -12,7 +12,7 @@ Learn how to update an OIDC, SAML 2.0, or SCIM 2.0 published integration in the #### What you need -* A published OIDC, SAML 2.0, or SCIM integration in the OIN that was [submitted using the OIN Wizard](/docs/guides/submit-oin-app/). +* A published OIDC, SAML 2.0, or SCIM integration in the OIN * The [Okta Developer Edition org](https://developer.okta.com/signup/) from where you originally submitted your published integration. The OIN Wizard is only available in Okta Developer Edition orgs. * An admin user in the Okta Developer Edition org with either the super admin or the app and org admin roles @@ -20,15 +20,48 @@ Learn how to update an OIDC, SAML 2.0, or SCIM 2.0 published integration in the ## Overview -If you have a published Single Sign-On (SSO) or lifecycle management integration in the OIN catalog, you can update and resubmit it with the OIN Wizard. +If you have a published Single Sign-On (SSO) or lifecycle management integration in the [OIN catalog](https://www.okta.com/integrations/), you can update and resubmit it with the OIN Wizard. The OIN Wizard currently supports updates for integrations that use the following protocols: -* OIDC -* SAML 2.0 -* SCIM 2.0 +* [OpenID Connect (OIDC)](https://openid.net/connect/) -When you edit a published OIN integration, test the flows for the updated version and the published version for backwards compatibility. Testing the published version for backwards compatibility ensures that your integration still works for users who have already installed it. See [Update integration considerations](#update-integration-considerations) before you edit your published integration. After you successfully test the updated and published versions of your integration, resubmit it to the OIN team. +* [Security Assertion Markup Language (SAML) 2.0](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html) + +* [System for Cross-domain Identity Management (SCIM) 2.0](https://scim.cloud) + +> **Note:** You can update OIDC, SAML 2.0, and SCIM 2.0 integrations with the [OIN Wizard](/docs/guides/update-oin-app/) that were originally submitted through the [OIN Manager](/docs/guides/submit-app/). + +When you edit a published OIN integration, you need to test the flows for the updated version and the published version for backwards compatibility. The integration version that was previously installed in your customer's org isn't modified with the updated version in the OIN catalog. Testing the published version for backwards compatibility ensures that your integration still works for customers who have already installed it. See [Update integration considerations](#update-integration-considerations) before you edit your published integration. + +After you successfully test the updated and published versions of your integration, resubmit it to the OIN team. Your integration goes through a [submission review process](/docs/guides/submit-app-overview/#understand-the-submission-review-process) before the updated version is published in the OIN catalog. + +## Update integration considerations + +For published integrations that were migrated from the OIN Manager, if you need to update configured properties that aren't available the OIN Wizard, contact . + +> **Note:** Some considerations on this page are specifically for the **** protocol.
+> If you want to change the protocol details on this page, select the protocol from the **Instructions for** dropdown list on the right. + + + +* When you update an integration that's already published, be mindful to preserve backwards compatibility for your integration. Older instances of your integration could be in use by Okta customers. + + * If you modify the **Name** (`name`) property of your [integration variables](/docs/guides/submit-oin-app/-/main/#integration-variables), Okta removes the original variable and creates a variable with your updated name. This action negatively impacts your existing customers if you use the original variable in your integration dynamic properties. + + * Migrated published integrations from the OIN Manager don't have some OIN Wizard restrictions. For instance: + + * Published integrations can have more than three integration variables + * Published integrations can have variable names with uppercase letters + * Published integrations can use `http` (instead of enforced `https`) in URLs and Expression Language-supported properties + + * If your update introduces new variables and you're using dynamic URLs, ensure that your tests cover various scenarios with different possible values for those variables. See [Dynamic properties with Okta Expression Language](/docs/guides/submit-oin-app/-/main/#dynamic-properties-with-okta-expression-language). The newly introduced variables aren't populated for older instances of your integration. + + For example: + + + +## Update your integration > **Note:** When you edit your published OIN integration, your previous PUBLISHED status and date are overwritten with the DRAFT status and current date. @@ -38,7 +71,7 @@ To update a previously published OIN integration: > **Note:** Edit your integration from an Okta account that has your company domain in the email address. You can't use an account with a personal email address. The OIN team doesn't review submission edits from a personal email account. 1. In the Admin Console, go to **Applications** > **Your OIN Integrations**. - > **Note:** If you don't need to edit your submission and want to jump to testing, see [Navigate directly to test your integration](#navigate-directly-to-test-your-integration). + > **Note:** If you don't need to edit your submission and want to jump to testing, see [Navigate directly to test your integration](/docs/guides/submit-oin-app/-/main/#navigate-directly-to-test-your-integration). 1. Click your published integration to update from the dashboard. Your published OIN submission appears in read-only mode. 1. From the **This integration is read-only** information box, click **Edit integration**. @@ -74,29 +107,7 @@ To update a previously published OIN integration: 1. [Submit your updates](#submit-your-updates) if all your tests passed. -## Update integration considerations - -* For published integrations that were migrated from the OIN Manager, if you need to update configured properties that aren't available the OIN Wizard, contact . - -* You can't update a published SCIM integration with Basic authentication. This breaks the integration for existing customers. For any updates, you must submit a new SCIM integration that implements header authentication or OAuth 2.0 authentication. You can use either token or bearer token format for header authentication. - -* If you edit a published SCIM integration that was migrated from the OIN Manager, the **Import users** (and **Import groups** if groups are managed) capability is automatically enabled in the OIN Wizard. You must support and test this capability if your previous SCIM integration didn't support it. If you need help with implementing this feature, contact . - -* When you update an integration that's already published, be mindful to preserve backwards compatibility for your integration. Older instances of your integration could be in use by Okta customers. - - * If you modify the **Name** (`name`) property of your [integration variables](#integration-variables), Okta removes the original variable and creates a variable with your updated name. This action negatively impacts your existing customers if you use the original variable in your integration dynamic properties. - * Migrated published integrations from the OIN Manager don't have some OIN Wizard restrictions. For instance: - - * Published integrations can have more than three integration variables - * Published integrations can have variable names with uppercase letters - * Published integrations can use `http` (instead of enforced `https`) in URLs and Expression Language-supported properties - - * If your update introduces new variables and you're using dynamic URLs, ensure that your tests cover various scenarios with different possible values for those variables. See [Dynamic properties with Okta Expression Language](#dynamic-properties-with-okta-expression-language). The newly introduced variables aren't populated for older instances of your integration. - - For example: - - ## Submit your updates diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/considerations.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/considerations.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/protocol-name.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/protocol-name.md index 1b007617e10..182eb94aac2 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/protocol-name.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/protocol-name.md @@ -1 +1 @@ -OIDC \ No newline at end of file +OpenID Connect \ No newline at end of file diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/considerations.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/considerations.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/protocol-name.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/protocol-name.md index f1ee2b8e0e3..7945954acb0 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/protocol-name.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/protocol-name.md @@ -1 +1 @@ -SAML \ No newline at end of file +SAML 2.0 \ No newline at end of file diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/considerations.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/considerations.md new file mode 100644 index 00000000000..01c7cf2dbca --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/considerations.md @@ -0,0 +1,3 @@ +* You can't update a published SCIM integration with Basic authentication. This breaks the integration for existing customers. For any updates, you must submit a new SCIM integration that implements header authentication or OAuth 2.0 authentication. You can use either token or bearer token format for header authentication. + +* If you edit a published SCIM integration that was migrated from the OIN Manager, the **Import users** (and **Import groups** if groups are managed) capability is automatically enabled in the OIN Wizard. You must support and test this capability if your previous SCIM integration didn't support it. If you need help with implementing this feature, contact . diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/protocol-fullname.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/protocol-fullname.md index 822178edab0..12602c44d53 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/protocol-fullname.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/protocol-fullname.md @@ -1 +1 @@ -SCIM 2.0 \ No newline at end of file +System for Cross-domain Identity Management (SCIM) 2.0 \ No newline at end of file From 196dd1180e38064f5eddcedd19505c316902513c Mon Sep 17 00:00:00 2001 From: Van Ngo Date: Thu, 30 Jan 2025 17:02:35 -0500 Subject: [PATCH 03/28] More edits with update an integration --- .../docs/guides/update-oin-app/main/index.md | 12 ++++++------ .../main/openidconnect/backward-compatible-eg.md | 2 +- .../main/saml2/backward-compatible-eg.md | 2 +- .../main/scim/backward-compatible-eg.md | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md index 04f9aaaa40d..600ba32f386 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md @@ -47,7 +47,7 @@ For published integrations that were migrated from the OIN Manager, if you need * When you update an integration that's already published, be mindful to preserve backwards compatibility for your integration. Older instances of your integration could be in use by Okta customers. - * If you modify the **Name** (`name`) property of your [integration variables](/docs/guides/submit-oin-app/-/main/#integration-variables), Okta removes the original variable and creates a variable with your updated name. This action negatively impacts your existing customers if you use the original variable in your integration dynamic properties. + * If you modify the **Name** (`name`) property of your [integration variables](/docs/guides/submit-oin-app/openidconnect/main/#integration-variables), Okta removes the original variable and creates a variable with your updated name. This action negatively impacts your existing customers if you use the original variable in your integration dynamic properties. * Migrated published integrations from the OIN Manager don't have some OIN Wizard restrictions. For instance: @@ -55,7 +55,7 @@ For published integrations that were migrated from the OIN Manager, if you need * Published integrations can have variable names with uppercase letters * Published integrations can use `http` (instead of enforced `https`) in URLs and Expression Language-supported properties - * If your update introduces new variables and you're using dynamic URLs, ensure that your tests cover various scenarios with different possible values for those variables. See [Dynamic properties with Okta Expression Language](/docs/guides/submit-oin-app/-/main/#dynamic-properties-with-okta-expression-language). The newly introduced variables aren't populated for older instances of your integration. + * If your update introduces new variables and you're using dynamic URLs, ensure that your tests cover various scenarios with different possible values for those variables. The newly introduced variables aren't populated for older instances of your integration. For example: @@ -71,19 +71,19 @@ To update a previously published OIN integration: > **Note:** Edit your integration from an Okta account that has your company domain in the email address. You can't use an account with a personal email address. The OIN team doesn't review submission edits from a personal email account. 1. In the Admin Console, go to **Applications** > **Your OIN Integrations**. - > **Note:** If you don't need to edit your submission and want to jump to testing, see [Navigate directly to test your integration](/docs/guides/submit-oin-app/-/main/#navigate-directly-to-test-your-integration). + > **Note:** If you don't need to edit your submission and want to jump to testing, see [Navigate directly to test your integration](/docs/guides/submit-oin-app/openidconnect/main/#navigate-directly-to-test-your-integration). 1. Click your published integration to update from the dashboard. Your published OIN submission appears in read-only mode. 1. From the **This integration is read-only** information box, click **Edit integration**. > **Note:** If you open a submission in **DRAFT** status, it's not in read-only mode and the **Edit integration** option isn't available. - Continue to edit your draft submission as a new submission. See [Start a submission](#start-a-submission). + 1. If the OIN Wizard doesn't detect an instance to test your published integration in the org, then an **Application instance not detected** dialog appears. Click **Generate instance** to create an app instance based on your published OIN integration. See [Add existing app integrations](https://help.okta.com/okta_help.htm?type=oie&id=csh-apps-add-app) to create an instance for backwards-compatibility testing. - > **Note:** The **Generate instance** option is disabled if you have five active instances in your org. [Deactivate instances](#deactivate-an-app-instance-in-your-org) that you're not using. + > **Note:** The **Generate instance** option is disabled if you have five active instances in your org. [Deactivate instances](/docs/guides/submit-oin-app/openidconnect/main/#deactivate-an-app-instance-in-your-org) that you're not using. If the OIN Wizard detects an instance based on your published integration, the dialog doesn't appear. This is usually the case if you tested and submitted your published integration from the same org. -1. Continue to update your integration in the **Select protocol**, **Configure your integration**, and **Test integration** pages. See [Update integration considerations](#update-integration-considerations) for backwards compatibility with integration variables. +1. Continue to update your integration in the **Select protocol**, **Configure your integration**, and **Test integration** pages. See [Configure your integration](/docs/guides/submit-oin-app/openidconnect/main/#configure-your-integration). Also see [Update integration considerations](#update-integration-considerations) for backwards compatibility with integration variables. The **Required app instances** box contains the following items: * The instances that you need to test the **PUBLISHED VERSION** of your OIN integration. diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/backward-compatible-eg.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/backward-compatible-eg.md index 969092af031..63af52382e2 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/backward-compatible-eg.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/backward-compatible-eg.md @@ -6,4 +6,4 @@ https://{String.len(app.companyId) == 0 ? 'login.myapp.io' : 'login.myapp.io?connection=' + app.companyId} ``` - This expression handles both scenarios where `companyId` is populated or empty. \ No newline at end of file + This expression handles both scenarios where `companyId` is populated or empty. See [Dynamic properties with Okta Expression Language](/docs/guides/submit-oin-app/openidconnect/main/#dynamic-properties-with-okta-expression-language). diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/backward-compatible-eg.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/backward-compatible-eg.md index 5c246d9d52a..12b8f7da326 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/backward-compatible-eg.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/backward-compatible-eg.md @@ -6,4 +6,4 @@ https://${empty org.companyId ? 'login.myapp.io' : 'login.myapp.io?connection=' += org.companyId} ``` - This expression handles both scenarios where `companyId` is populated or empty. \ No newline at end of file + This expression handles both scenarios where `companyId` is populated or empty. See [Dynamic properties with Okta Expression Language](/docs/guides/submit-oin-app/saml2/main/#dynamic-properties-with-okta-expression-language). diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/backward-compatible-eg.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/backward-compatible-eg.md index 2f18e423586..732d3f9f2aa 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/backward-compatible-eg.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/backward-compatible-eg.md @@ -6,4 +6,4 @@ 'https://fruits.example.com/scim2/myapp' + (String.len(app.companyId) == 0 ? '/' : '?connection=' + app.companyId) ``` - This expression handles scenarios where `companyId` is populated or empty. + This expression handles scenarios where `companyId` is populated or empty. See [Dynamic properties with Okta Expression Language](/docs/guides/submit-oin-app/scim/main/#dynamic-properties-with-okta-expression-language). From 4577c9b778ffdd207128402934d353e188d62d90 Mon Sep 17 00:00:00 2001 From: Van Ngo Date: Mon, 3 Feb 2025 15:54:41 -0500 Subject: [PATCH 04/28] Edit submit update section --- .../docs/guides/update-oin-app/main/index.md | 53 ++++--------------- .../main/openidconnect/submit-checks.md | 5 ++ .../main/saml2/submit-checks.md | 5 ++ .../update-oin-app/main/scim/submit-checks.md | 8 +++ 4 files changed, 29 insertions(+), 42 deletions(-) create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/submit-checks.md create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/submit-checks.md create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/submit-checks.md diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md index 600ba32f386..24c5a37cc7a 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md @@ -30,11 +30,11 @@ The OIN Wizard currently supports updates for integrations that use the followin * [System for Cross-domain Identity Management (SCIM) 2.0](https://scim.cloud) -> **Note:** You can update OIDC, SAML 2.0, and SCIM 2.0 integrations with the [OIN Wizard](/docs/guides/update-oin-app/) that were originally submitted through the [OIN Manager](/docs/guides/submit-app/). +> **Note:** You can also update OIDC, SAML 2.0, and SCIM 2.0 integrations with the [OIN Wizard](/docs/guides/update-oin-app/) that were originally submitted through the [OIN Manager](/docs/guides/submit-app/). -When you edit a published OIN integration, you need to test the flows for the updated version and the published version for backwards compatibility. The integration version that was previously installed in your customer's org isn't modified with the updated version in the OIN catalog. Testing the published version for backwards compatibility ensures that your integration still works for customers who have already installed it. See [Update integration considerations](#update-integration-considerations) before you edit your published integration. +When you edit a published OIN integration, you need to test the flows for the updated version and the published version for backwards compatibility. The integration version that was previously installed in your customer's org isn't modified with the updated version from the OIN catalog. Testing the published version for backwards compatibility ensures that your integration still works for customers who have already installed it. See [Update integration considerations](#update-integration-considerations) before you edit your published integration. -After you successfully test the updated and published versions of your integration, resubmit it to the OIN team. Your integration goes through a [submission review process](/docs/guides/submit-app-overview/#understand-the-submission-review-process) before the updated version is published in the OIN catalog. +After you successfully test the updated and published versions of your integration, resubmit your integration to the OIN team. Your integration goes through a [submission review process](/docs/guides/submit-app-overview/#understand-the-submission-review-process) before the updated version is published in the OIN catalog. ## Update integration considerations @@ -108,25 +108,12 @@ To update a previously published OIN integration: 1. [Submit your updates](#submit-your-updates) if all your tests passed. - ## Submit your updates After you successfully test your updated integration, you're ready to submit. -The OIN Wizard checks the following for SSO submissions: - -* All required instances are detected. -* All required instances are active. -* All required tests passed within the last 48 hours. - -The OIN Wizard checks the following for SCIM submissions: - -* All required instances are detected. -* All required instances are active. -* The **Link to Runscope spec test results** field is specified. -* The **Link to Runscope CRUD test results** field is specified. - -> **Note:** See [Test your SCIM integration](#test-your-scim-integration) for SCIM submission requirements. + +
**Submit integration** is enabled after all these requirements are met. @@ -137,34 +124,16 @@ The OIN Wizard checks the following for SCIM submissions: After you submit your integration, your integration is queued for OIN initial review. Okta sends you an email with the expected initial review completion date. -The OIN review process consists of two phases: - -1. The initial review phase -1. The QA testing phase - -Okta sends you an email at each phase of the process to inform you of the status, the expected phase completion date, and any issues for you to fix. If there are issues with your integration, make the necessary corrections and resubmit in the OIN Wizard. - -> **Note:** Sometimes, your fix doesn't include OIN Wizard edits to your integration submission. In this case, inform the OIN team of your fix so that they can continue QA testing. - -Check the status of your submission on the **Your OIN Integrations** dashboard. - -See [Understand the submission review process](/docs/guides/submit-app-overview/#understand-the-submission-review-process). +Check the status of your submission on the **Your OIN Integrations** dashboard. See [Understand the submission review process](/docs/guides/submit-app-overview/#understand-the-submission-review-process). ## Submission support -If you need help during your submission, Okta provides the following support stream for the various phases of your OIN submission: - -1. Building an integration phase - - * When you're constructing your SSO app integration, you can post a question on the [Okta Developer Forum](https://devforum.okta.com/) or submit your question to . - -1. Using the OIN Wizard to submit an integration phase +If you need help during your submission, Okta provides the following support: - * If you need help with the OIN Wizard, review this document or see [Publish an OIN integration](/docs/guides/submit-app-overview/). - * Submit your OIN Wizard question to if you can't find an answer in the documentation. - * If you have an integration status issue, contact . +* If you need help with the OIN Wizard, review this document or see [Publish an OIN integration](/docs/guides/submit-app-overview/). -1. Testing an integration phase +* Submit your OIN Wizard question to if you can't find an answer in the documentation. - * If you have issues during your integration testing phase, you can post a question on the [Okta Developer Forum](https://devforum.okta.com/) or submit your question to . +* If you have issues during your integration testing phase, you can post a question on the [Okta Developer Forum](https://devforum.okta.com/) or submit your question to . +* If you have an integration status issue, contact . diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/submit-checks.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/submit-checks.md new file mode 100644 index 00000000000..caa747ab8f9 --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/submit-checks.md @@ -0,0 +1,5 @@ +The OIN Wizard checks the following for SSO submissions: + +* All required instances are detected. +* All required instances are active. +* All required tests for the updated and backward-compatible instances passed within the last 48 hours. diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/submit-checks.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/submit-checks.md new file mode 100644 index 00000000000..caa747ab8f9 --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/submit-checks.md @@ -0,0 +1,5 @@ +The OIN Wizard checks the following for SSO submissions: + +* All required instances are detected. +* All required instances are active. +* All required tests for the updated and backward-compatible instances passed within the last 48 hours. diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/submit-checks.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/submit-checks.md new file mode 100644 index 00000000000..486d0eb2686 --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/submit-checks.md @@ -0,0 +1,8 @@ +The OIN Wizard checks the following for SCIM submissions: + +* All required instances are detected. +* All required instances are active. +* The **Link to Runscope spec test results** field is specified. +* The **Link to Runscope CRUD test results** field is specified. + +> **Note:** See [Test your SCIM integration](#test-your-scim-integration) for SCIM submission requirements. From fd29537019dade97e87c1b1cd14f04d473af3457 Mon Sep 17 00:00:00 2001 From: Van Ngo Date: Mon, 3 Feb 2025 19:28:54 -0500 Subject: [PATCH 05/28] Add new snippet for detecting old instances --- .../docs/guides/update-oin-app/main/index.md | 37 ++++++++++++++----- .../main/openidconnect/detect-old-instance.md | 5 +++ .../main/saml2/detect-old-instance.md | 5 +++ .../main/scim/detect-old-instance.md | 11 ++++++ 4 files changed, 49 insertions(+), 9 deletions(-) create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/detect-old-instance.md create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/detect-old-instance.md create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/detect-old-instance.md diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md index 24c5a37cc7a..13b9bbf8b0c 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md @@ -69,21 +69,19 @@ To update a previously published OIN integration: 1. Sign in to your Okta Developer Edition org as a user with either app admin or super admin roles. > **Note:** Edit your integration from an Okta account that has your company domain in the email address. You can't use an account with a personal email address. The OIN team doesn't review submission edits from a personal email account. -1. In the Admin Console, go to **Applications** > **Your OIN Integrations**. - > **Note:** If you don't need to edit your submission and want to jump to testing, see [Navigate directly to test your integration](/docs/guides/submit-oin-app/openidconnect/main/#navigate-directly-to-test-your-integration). +2. In the Admin Console, go to **Applications** > **Your OIN Integrations**. -1. Click your published integration to update from the dashboard. Your published OIN submission appears in read-only mode. -1. From the **This integration is read-only** information box, click **Edit integration**. - > **Note:** If you open a submission in **DRAFT** status, it's not in read-only mode and the **Edit integration** option isn't available. + > **Note:** If you have a draft submission and want to go straight to testing, see [Navigate directly to test your integration](/docs/guides/submit-oin-app/openidconnect/main/#navigate-directly-to-test-your-integration). +3. Click your published integration to update from the dashboard. Your published OIN submission appears in read-only mode. -1. If the OIN Wizard doesn't detect an instance to test your published integration in the org, then an **Application instance not detected** dialog appears. Click **Generate instance** to create an app instance based on your published OIN integration. See [Add existing app integrations](https://help.okta.com/okta_help.htm?type=oie&id=csh-apps-add-app) to create an instance for backwards-compatibility testing. - > **Note:** The **Generate instance** option is disabled if you have five active instances in your org. [Deactivate instances](/docs/guides/submit-oin-app/openidconnect/main/#deactivate-an-app-instance-in-your-org) that you're not using. +4. From the **This integration is read-only** information box, click **Edit integration**. + > **Note:** You can skip this step if your submission is in draft status. The **Edit integration** option isn't available for submissions in draft status because it's not in read-only mode. - If the OIN Wizard detects an instance based on your published integration, the dialog doesn't appear. This is usually the case if you tested and submitted your published integration from the same org. + -1. Continue to update your integration in the **Select protocol**, **Configure your integration**, and **Test integration** pages. See [Configure your integration](/docs/guides/submit-oin-app/openidconnect/main/#configure-your-integration). Also see [Update integration considerations](#update-integration-considerations) for backwards compatibility with integration variables. +6. Continue to update your integration in the **Select protocol**, **Configure your integration**, and **Test integration** pages. See [Configure your integration](/docs/guides/submit-oin-app/openidconnect/main/#configure-your-integration). Also see [Update integration considerations](#update-integration-considerations) for backwards compatibility with integration variables. The **Required app instances** box contains the following items: * The instances that you need to test the **PUBLISHED VERSION** of your OIN integration. @@ -107,6 +105,27 @@ To update a previously published OIN integration: 1. [Submit your updates](#submit-your-updates) if all your tests passed. +## Test your integration + +### Generate instances for testing + +. Click **Generate Instance** to create an instance required for the **CURRENT VERSION** from the **Required app instances** status box. + + See [Generate an instance for testing](#generate-an-instance-for) to create instances for your current submission. + > **Note:** There's a maximum of five active app instances allowed in a Developer Edition org. Deactivate any instances that you don't need for testing. + + +### Test your SSO integration + +1. Test your integration protocol: + + * For SSO testing, click **Add to Tester** for each required test instance. See [Add to Tester](#add-to-tester).
The required tests appear for each test instance. Run your tests from the OIN Submission Tester. See [OIN Submission Tester](#oin-submission-tester). If you encounter errors, see [Failed tests](#failed-tests) for help with resolving the issues. + +### Test your SCIM integration + +Test your integration protocol: + + * For SCIM testing, see [Test your SCIM integration](#test-your-scim-integration) for all the test requirements. ## Submit your updates diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/detect-old-instance.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/detect-old-instance.md new file mode 100644 index 00000000000..ccdb5cd6514 --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/detect-old-instance.md @@ -0,0 +1,5 @@ +5. If the OIN Wizard doesn't detect an instance to test your published integration in the org, then an **Application instance not detected** dialog appears. Click **Generate instance** to create an app instance based on your published OIN integration. See [Add existing app integrations](https://help.okta.com/okta_help.htm?type=oie&id=csh-apps-add-app) to create an instance for backwards-compatibility testing. + + > **Note:** The **Generate instance** option is disabled if you have five active instances in your org. [Deactivate instances](/docs/guides/submit-oin-app/openidconnect/main/#deactivate-an-app-instance-in-your-org) that you're not using. + + If the OIN Wizard detects an instance based on your published integration, the **Application instance not detected** dialog doesn't appear. This is usually the case if you tested and submitted your published integration from the same org. diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/detect-old-instance.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/detect-old-instance.md new file mode 100644 index 00000000000..ccdb5cd6514 --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/detect-old-instance.md @@ -0,0 +1,5 @@ +5. If the OIN Wizard doesn't detect an instance to test your published integration in the org, then an **Application instance not detected** dialog appears. Click **Generate instance** to create an app instance based on your published OIN integration. See [Add existing app integrations](https://help.okta.com/okta_help.htm?type=oie&id=csh-apps-add-app) to create an instance for backwards-compatibility testing. + + > **Note:** The **Generate instance** option is disabled if you have five active instances in your org. [Deactivate instances](/docs/guides/submit-oin-app/openidconnect/main/#deactivate-an-app-instance-in-your-org) that you're not using. + + If the OIN Wizard detects an instance based on your published integration, the **Application instance not detected** dialog doesn't appear. This is usually the case if you tested and submitted your published integration from the same org. diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/detect-old-instance.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/detect-old-instance.md new file mode 100644 index 00000000000..9908ecedfd8 --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/detect-old-instance.md @@ -0,0 +1,11 @@ +5. Depending on the nature of your updates, you may need to generate instances for testing: + + * If you're only updating app profiles, then you don't need to create an app instance for backward-compatibility testing. You can test the app profile updates in the updated instance version of your submission. See [Generate instance for testing](#generate-instances-for-testing) and [Configure attribute mappings](map-profile-attributes). + + * If you're updating all other properties from the **Configure your integration**, and **Test integration** pages, then you need a backward-compatible instance for testing: + * If you tested and submitted your published integration from the same Okta Developer Edition org, you might have an existing backward-comptible instance already. Use this older app instance version to test backward compatibility. See [Testing backward-compatibiity]. + * If you don't have an instance based on the published integration, create an instance of the published integration. See [Generate a published OIN catalog instance](generate-a-published-oin-catalog-instance) OR See [Add existing app integrations](https://help.okta.com/okta_help.htm?type=oie&id=csh-apps-add-app) to create an instance for backwards-compatibility testing. + + > **Note:** The **Generate instance** option is disabled if you have five active instances in your org. [Deactivate instances](/docs/guides/submit-oin-app/openidconnect/main/#deactivate-an-app-instance-in-your-org) that you're not using. + + \ No newline at end of file From e26c8192f75493a0738be6a7dac8bdc0f61ed009 Mon Sep 17 00:00:00 2001 From: Van Ngo Date: Wed, 5 Feb 2025 19:27:51 -0500 Subject: [PATCH 06/28] More snippets and edits to support updating integration. --- .../docs/guides/update-oin-app/main/index.md | 62 +++++++++++-------- .../main/openidconnect/detect-old-instance.md | 8 ++- .../main/openidconnect/generate-instances.md | 0 .../main/openidconnect/protocol-test-flow.md | 13 ---- .../main/openidconnect/submit-checks.md | 2 +- .../main/openidconnect/test-steps.md | 20 ++++++ .../main/saml2/detect-old-instance.md | 8 ++- .../main/saml2/protocol-test-flow.md | 14 ----- .../main/saml2/submit-checks.md | 2 +- .../update-oin-app/main/saml2/test-steps.md | 20 ++++++ .../main/scim/detect-old-instance.md | 12 +--- .../main/scim/generate-instances.md | 9 +++ .../main/scim/protocol-properties.md | 10 --- .../main/scim/protocol-test-flow.md | 3 - .../update-oin-app/main/scim/test-steps.md | 11 ++++ 15 files changed, 110 insertions(+), 84 deletions(-) create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/generate-instances.md delete mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/protocol-test-flow.md create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/test-steps.md delete mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/protocol-test-flow.md create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/test-steps.md create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/generate-instances.md delete mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/protocol-properties.md delete mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/protocol-test-flow.md create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/test-steps.md diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md index 13b9bbf8b0c..c7ac28876f2 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md @@ -70,63 +70,75 @@ To update a previously published OIN integration: 1. Sign in to your Okta Developer Edition org as a user with either app admin or super admin roles. > **Note:** Edit your integration from an Okta account that has your company domain in the email address. You can't use an account with a personal email address. The OIN team doesn't review submission edits from a personal email account. -2. In the Admin Console, go to **Applications** > **Your OIN Integrations**. +1. In the Admin Console, go to **Applications** > **Your OIN Integrations**. > **Note:** If you have a draft submission and want to go straight to testing, see [Navigate directly to test your integration](/docs/guides/submit-oin-app/openidconnect/main/#navigate-directly-to-test-your-integration). -3. Click your published integration to update from the dashboard. Your published OIN submission appears in read-only mode. +1. Click your published integration to update from the dashboard. Your published OIN submission appears in read-only mode. -4. From the **This integration is read-only** information box, click **Edit integration**. +1. From the **This integration is read-only** information box, click **Edit integration**. > **Note:** You can skip this step if your submission is in draft status. The **Edit integration** option isn't available for submissions in draft status because it's not in read-only mode. - + -6. Continue to update your integration in the **Select protocol**, **Configure your integration**, and **Test integration** pages. See [Configure your integration](/docs/guides/submit-oin-app/openidconnect/main/#configure-your-integration). Also see [Update integration considerations](#update-integration-considerations) for backwards compatibility with integration variables. +1. Update your integration as required in the following sections of the OIN Wizard flow: + * **Select your protocol** + * [OIN catalog properties](/docs/guides/submit-oin-app/-/main/#oin-catalog-properties) + * [Integration variables](/docs/guides/submit-oin-app/-/main/#integration-variables) + > **Note:** See [Update integration considerations](#update-integration-considerations) for backwards compatibility with integration variables. + * [ properties](/docs/guides/submit-oin-app/-/main/#properties) + * [Enter test information](/docs/guides/submit-oin-app/-/main/#enter-test-information) - The **Required app instances** box contains the following items: - * The instances that you need to test the **PUBLISHED VERSION** of your OIN integration. - * The instances that you need to test the **CURRENT VERSION** of your integration submission. +1. Click **Test your integration** to move to the testing section of the OIN Wizard. - See [Required app instances](#required-app-instances). - > **Note:** If the OIN Submission Tester session expired, click **Refresh tester session** for a new test session. +## Test your integration updates - Backwards-compatible test instances that were generated from your published integration appear in the **Application instances for testing** list. +The OIN Wizard journey includes the **Test integration** experience page to help you configure and test your updated integration within the same org before submission. These are the tasks that you need to complete: -1. Click **Generate Instance** to create an instance required for the **CURRENT VERSION** from the **Required app instances** status box. + - See [Generate an instance for testing](#generate-an-instance-for) to create instances for your current submission. - > **Note:** There's a maximum of five active app instances allowed in a Developer Edition org. Deactivate any instances that you don't need for testing. +### Generate instances for testing + +Click **Generate Instance** to create an instance required for the **CURRENT VERSION** from the **Required app instances** status box. + +See [Generate an instance for testing](#generate-an-instance-for) to create instances for your current submission. + +> **Note:** There's a maximum of five active app instances allowed in a Developer Edition org. Deactivate any instances that you don't need for testing. + +### Test your SSO integration 1. Test your integration protocol: * For SSO testing, click **Add to Tester** for each required test instance. See [Add to Tester](#add-to-tester).
The required tests appear for each test instance. Run your tests from the OIN Submission Tester. See [OIN Submission Tester](#oin-submission-tester). If you encounter errors, see [Failed tests](#failed-tests) for help with resolving the issues. +### Test your SCIM integration + +Test your integration protocol: + * For SCIM testing, see [Test your SCIM integration](#test-your-scim-integration) for all the test requirements. -1. [Submit your updates](#submit-your-updates) if all your tests passed. + The **Required app instances** box contains the following items: + * The instances that you need to test the **PUBLISHED VERSION** of your OIN integration. + * The instances that you need to test the **CURRENT VERSION** of your integration submission. -## Test your integration + See [Required app instances](#required-app-instances). + > **Note:** If the OIN Submission Tester session expired, click **Refresh tester session** for a new test session. -### Generate instances for testing + Backwards-compatible test instances that were generated from your published integration appear in the **Application instances for testing** list. -. Click **Generate Instance** to create an instance required for the **CURRENT VERSION** from the **Required app instances** status box. +1. Click **Generate Instance** to create an instance required for the **CURRENT VERSION** from the **Required app instances** status box. See [Generate an instance for testing](#generate-an-instance-for) to create instances for your current submission. > **Note:** There's a maximum of five active app instances allowed in a Developer Edition org. Deactivate any instances that you don't need for testing. - -### Test your SSO integration - 1. Test your integration protocol: * For SSO testing, click **Add to Tester** for each required test instance. See [Add to Tester](#add-to-tester).
The required tests appear for each test instance. Run your tests from the OIN Submission Tester. See [OIN Submission Tester](#oin-submission-tester). If you encounter errors, see [Failed tests](#failed-tests) for help with resolving the issues. -### Test your SCIM integration - -Test your integration protocol: - * For SCIM testing, see [Test your SCIM integration](#test-your-scim-integration) for all the test requirements. +1. [Submit your updates](#submit-your-updates) if all your tests passed. + ## Submit your updates After you successfully test your updated integration, you're ready to submit. diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/detect-old-instance.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/detect-old-instance.md index ccdb5cd6514..ade684c3d83 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/detect-old-instance.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/detect-old-instance.md @@ -1,5 +1,7 @@ -5. If the OIN Wizard doesn't detect an instance to test your published integration in the org, then an **Application instance not detected** dialog appears. Click **Generate instance** to create an app instance based on your published OIN integration. See [Add existing app integrations](https://help.okta.com/okta_help.htm?type=oie&id=csh-apps-add-app) to create an instance for backwards-compatibility testing. +* For SSO integrations, if the OIN Wizard doesn't detect an instance to test your published integration, an **Application instance not detected** dialog appears. - > **Note:** The **Generate instance** option is disabled if you have five active instances in your org. [Deactivate instances](/docs/guides/submit-oin-app/openidconnect/main/#deactivate-an-app-instance-in-your-org) that you're not using. + 1. Click **Generate instance** to create an app instance based on your published OIN integration. See [Add existing app integrations](https://help.okta.com/okta_help.htm?type=oie&id=csh-apps-add-app) to create an OIN-published instance for backwards-compatibility testing. - If the OIN Wizard detects an instance based on your published integration, the **Application instance not detected** dialog doesn't appear. This is usually the case if you tested and submitted your published integration from the same org. + 1. If the **Application instance not detected** dialog appears and the **Generate instance** option is disabled, then you exceeded the maximum active instances in your org. [Deactivate instances](/docs/guides/submit-oin-app/openidconnect/main/#deactivate-an-app-instance-in-your-org) that you're not using before you generate new instances. + +* If the OIN Wizard detects an instance based on your published integration, the **Application instance not detected** dialog doesn't appear. This is usually the case if you tested and submitted your published integration from the same org. You can use that existing published-version instance for backwards-compatiblity testing. diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/generate-instances.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/generate-instances.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/protocol-test-flow.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/protocol-test-flow.md deleted file mode 100644 index 4784eb9d3fc..00000000000 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/protocol-test-flow.md +++ /dev/null @@ -1,13 +0,0 @@ -In the **OIDC tests** section, specify the following sign-in flow details: - -|
Property
|   | Description | -| ----------------- | --: | ------------ | -| **Supported sign-in flows** | | Indicates which sign-in flow your integration supports | -| | **IdP** | Sign-in flow is initiated from the Okta End-User Dashboard. If you specified **Initiate login URI** previously from the [OIDC properties](#properties) section, then this flow is selected. | -| | **SP** | Sign-in flow is initiated from your app sign-in page. This flow is selected and read-only because all OIDC SSO integrations must support the SP-initiated flow. | -| **Supports Just-In-Time provisioning?** `*` | | Indicate if your integration supports Just-In-Time (JIT) provisioning. With JIT provisioning, user profiles are created when they sign in for the first time. This eliminates the need to create user accounts in advance. | -| | **Yes** | Your integration supports JIT. | -| | **No** | Your integration doesn't support JIT. | -| **SP Initiate URL** | | Specify the URL for SP-initiated sign-in flows. This URL is required for the SP-initiated flow.
The maximum URL length is 512 characters. | - -`*` Required properties diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/submit-checks.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/submit-checks.md index caa747ab8f9..caf7f9b4bc2 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/submit-checks.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/submit-checks.md @@ -2,4 +2,4 @@ The OIN Wizard checks the following for SSO submissions: * All required instances are detected. * All required instances are active. -* All required tests for the updated and backward-compatible instances passed within the last 48 hours. +* All required tests for the updated and backwards-compatible instances passed within the last 48 hours. diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/test-steps.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/test-steps.md new file mode 100644 index 00000000000..6611a5fb80c --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/test-steps.md @@ -0,0 +1,20 @@ +1. Generate an app instance from your updated integration configuration. See [Generate an instance for OIDC](/docs/guides/submit-oin-app/openidconnect/main/#generate-an-instance-for). + + > **Notes:** + > * You must generate separate instances for testing if you support two SSO protocols (one for OIDC and one for SAML). The OIN Submission Tester can only test one protocol per instance. + > * You should already have an instance of your published integration for backwards-compatibility testing. See [Required app instances](#required-app-instances). + +1. Assign test users to your instances. See [Assign test users to your app instance](/docs/guides/submit-oin-app/openidconnect/main/#assign-test-users-to-your-integration-instance). + +1. Test the required flows for each of your SSO instances with the [OIN Submission Tester](/docs/guides/submit-oin-app/openidconnect/main/#oin-submission-tester). Fix any test failures from the OIN Submission Tester, then regenerate the test instance (if necessary) and retest. + + > **Note:** You must have the Okta Browser Plugin installed with **Allow in Incognito** enabled before you use the **OIN Submission Tester**. See [OIN Wizard requirements](/docs/guides/submit-app-prereq/main/#oin-wizard-requirements). + +1. [Submit your updated integration](#submit-your-updates) after all required tests are successful. + +### Required app instances + +The **Required app instances** box shows you the instances detected in your org that are available to test your integration. It also shows you the test instances required for the OIN Submission Tester based on your selected protocols: + +* The **CURRENT VERSION** status indicates the instances that you need to test your current integration submission. +* The **PUBLISHED VERSION** status indicates the instances that you need to test backwards compatibility. diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/detect-old-instance.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/detect-old-instance.md index ccdb5cd6514..ade684c3d83 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/detect-old-instance.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/detect-old-instance.md @@ -1,5 +1,7 @@ -5. If the OIN Wizard doesn't detect an instance to test your published integration in the org, then an **Application instance not detected** dialog appears. Click **Generate instance** to create an app instance based on your published OIN integration. See [Add existing app integrations](https://help.okta.com/okta_help.htm?type=oie&id=csh-apps-add-app) to create an instance for backwards-compatibility testing. +* For SSO integrations, if the OIN Wizard doesn't detect an instance to test your published integration, an **Application instance not detected** dialog appears. - > **Note:** The **Generate instance** option is disabled if you have five active instances in your org. [Deactivate instances](/docs/guides/submit-oin-app/openidconnect/main/#deactivate-an-app-instance-in-your-org) that you're not using. + 1. Click **Generate instance** to create an app instance based on your published OIN integration. See [Add existing app integrations](https://help.okta.com/okta_help.htm?type=oie&id=csh-apps-add-app) to create an OIN-published instance for backwards-compatibility testing. - If the OIN Wizard detects an instance based on your published integration, the **Application instance not detected** dialog doesn't appear. This is usually the case if you tested and submitted your published integration from the same org. + 1. If the **Application instance not detected** dialog appears and the **Generate instance** option is disabled, then you exceeded the maximum active instances in your org. [Deactivate instances](/docs/guides/submit-oin-app/openidconnect/main/#deactivate-an-app-instance-in-your-org) that you're not using before you generate new instances. + +* If the OIN Wizard detects an instance based on your published integration, the **Application instance not detected** dialog doesn't appear. This is usually the case if you tested and submitted your published integration from the same org. You can use that existing published-version instance for backwards-compatiblity testing. diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/protocol-test-flow.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/protocol-test-flow.md deleted file mode 100644 index f01784fa403..00000000000 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/protocol-test-flow.md +++ /dev/null @@ -1,14 +0,0 @@ -In the **SAML tests** section, specify the following sign-in flow details: - -|
Property
|   | Description | -| ----------------- | --: | ------------ | -| **Supported sign-in flows** | | Indicate which sign-in flow your integration supports. You must select at least one of the following flows. | -| | **IdP** | Sign-in flow is initiated from the Okta End-User Dashboard. | -| | **SP** | Sign-in flow is initiated from your app sign-in page. | -| **Supports Just-In-Time provisioning?** `*` | | Indicate if your integration supports Just-In-Time (JIT) provisioning. With JIT provisioning, you can use a SAML assertion to create users the first time they try to sign in. This eliminates the need to create user accounts in advance. | -| | **Yes** | Your integration supports JIT. | -| | **No** | Your integration doesn't support JIT. | -| **SP Initiate URL** | | Specify the URL for SP-initiated sign-in flows. This URL is required for the SP flow.
The maximum URL length is 512 characters. | -| **SP Initiate flow description** | | Provide instructions on how to sign in to your app using the SP-initiated flow.
The maximum description length is 2048 characters. This field is required for the SP flow.| - -`*` Required properties diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/submit-checks.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/submit-checks.md index caa747ab8f9..caf7f9b4bc2 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/submit-checks.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/submit-checks.md @@ -2,4 +2,4 @@ The OIN Wizard checks the following for SSO submissions: * All required instances are detected. * All required instances are active. -* All required tests for the updated and backward-compatible instances passed within the last 48 hours. +* All required tests for the updated and backwards-compatible instances passed within the last 48 hours. diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/test-steps.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/test-steps.md new file mode 100644 index 00000000000..f7cc3450d74 --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/test-steps.md @@ -0,0 +1,20 @@ +1. Generate an app instance from your updated integration configuration. See [Generate an instance for SAML](/docs/guides/submit-oin-app/saml2/main/#generate-an-instance-for). + + > **Notes:** + > * You must generate separate instances for testing if you support two SSO protocols (one for OIDC and one for SAML). The OIN Submission Tester can only test one protocol per instance. + > * You should already have an instance of your published integration for backwards-compatibility testing. See [Required app instances](#required-app-instances). + +1. Assign test users to your instances. See [Assign test users to your app instance](/docs/guides/submit-oin-app/saml2/main/#assign-test-users-to-your-integration-instance). + +1. Test the required flows for each of your SSO instances with the [OIN Submission Tester](/docs/guides/submit-oin-app/saml2/main/#oin-submission-tester). Fix any test failures from the OIN Submission Tester, then regenerate the test instance (if necessary) and retest. + + > **Note:** You must have the Okta Browser Plugin installed with **Allow in Incognito** enabled before you use the **OIN Submission Tester**. See [OIN Wizard requirements](/docs/guides/submit-app-prereq/main/#oin-wizard-requirements). + +1. [Submit your updated integration](#submit-your-updates) after all required tests are successful. + +### Required app instances + +The **Required app instances** box shows you the instances detected in your org that are available to test your integration. It also shows you the test instances required for the OIN Submission Tester based on your selected protocols: + +* The **CURRENT VERSION** status indicates the instances that you need to test your current integration submission. +* The **PUBLISHED VERSION** status indicates the instances that you need to test backwards compatibility. diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/detect-old-instance.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/detect-old-instance.md index 9908ecedfd8..c09e48d8188 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/detect-old-instance.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/detect-old-instance.md @@ -1,11 +1 @@ -5. Depending on the nature of your updates, you may need to generate instances for testing: - - * If you're only updating app profiles, then you don't need to create an app instance for backward-compatibility testing. You can test the app profile updates in the updated instance version of your submission. See [Generate instance for testing](#generate-instances-for-testing) and [Configure attribute mappings](map-profile-attributes). - - * If you're updating all other properties from the **Configure your integration**, and **Test integration** pages, then you need a backward-compatible instance for testing: - * If you tested and submitted your published integration from the same Okta Developer Edition org, you might have an existing backward-comptible instance already. Use this older app instance version to test backward compatibility. See [Testing backward-compatibiity]. - * If you don't have an instance based on the published integration, create an instance of the published integration. See [Generate a published OIN catalog instance](generate-a-published-oin-catalog-instance) OR See [Add existing app integrations](https://help.okta.com/okta_help.htm?type=oie&id=csh-apps-add-app) to create an instance for backwards-compatibility testing. - - > **Note:** The **Generate instance** option is disabled if you have five active instances in your org. [Deactivate instances](/docs/guides/submit-oin-app/openidconnect/main/#deactivate-an-app-instance-in-your-org) that you're not using. - - \ No newline at end of file + \ No newline at end of file diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/generate-instances.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/generate-instances.md new file mode 100644 index 00000000000..ebc4111dd8b --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/generate-instances.md @@ -0,0 +1,9 @@ +Depending on the nature of your updates, you may need to generate instances for testing: + + * If you're only updating app profiles, then you don't need to create an app instance for backward-compatibility testing. You can test the app profile updates in the updated instance version of your submission. See [Generate instance for testing](#generate-instances-for-testing) and [Configure attribute mappings](map-profile-attributes). + + * If you're updating all other properties from the **Configure your integration**, and **Test integration** pages, then you need a backward-compatible instance for testing: + * If you tested and submitted your published integration from the same Okta Developer Edition org, you might have an existing backward-comptible instance already. Use this older app instance version to test backward compatibility. See [Testing backward-compatibiity]. + * If you don't have an instance based on the published integration, create an instance of the published integration. See [Generate a published OIN catalog instance](generate-a-published-oin-catalog-instance) OR See [Add existing app integrations](https://help.okta.com/okta_help.htm?type=oie&id=csh-apps-add-app) to create an instance for backwards-compatibility testing. + + > **Note:** The **Generate instance** option is disabled if you have five active instances in your org. [Deactivate instances](/docs/guides/submit-oin-app/openidconnect/main/#deactivate-an-app-instance-in-your-org) that you're not using. diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/protocol-properties.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/protocol-properties.md deleted file mode 100644 index 45dfff58fcc..00000000000 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/protocol-properties.md +++ /dev/null @@ -1,10 +0,0 @@ -|
Property
| Description | -| ----------------- | ------------ | -| **Base URL** `*` | Specify the base URL for your SCIM server.
If you're using a per tenant design, include the variable names that you created in your URL. For example:` 'https://' + app.subdomain + '.example.com/scim2/' `. See [Dynamic properties with Okta Expression Language](#dynamic-properties-with-okta-expression-language).
The maximum field length is 1024 characters. | -| **What objects do you want Okta to manage in your integration?** `*` | Select the objects that you want Okta to manage with your SCIM integration.
  • **Users**: Okta manages users in your app by default.
  • **Groups**: Select this option if you also want Okta to manage groups in your app.
| -| **Authentication mode** `*` | Select the authentication mode to make outbound calls to your SCIM server.
  • **Header**: Uses authorization header with a customer-provided token in the following format: `Authorization: {API token}`
  • **Bearer**: Uses authorization header with a customer-provided bearer token in the following format: `Authorization: Bearer {API token}`
  • **OAuth 2**: Uses OAuth 2.0 authorization code grant flow with the following:
    • **Authorize endpoint**: Specify the authorize endpoint. For example: `https://myexample.com/oauth2/auth`
      You can specify a dynamic endpoint URL. See [Dynamic properties with Okta Expression Language](#dynamic-properties-with-okta-expression-language).
    • **Token endpoint**: Specify the token endpoint. For example: `https://myexample.com/oauth2/token`
      You can specify a dynamic endpoint URL. See [Dynamic properties with Okta Expression Language](#dynamic-properties-with-okta-expression-language).
    • **Client ID**: Specify the client ID.
    • **Client secret**: Specify the client secret.
**Note**: Basic authentication isn't supported. See [SCIM integration limitations](/docs/guides/submit-app-prereq/main/#scim-integration-limitations). | -| **User operations** `*` | Select user operations for your SCIM integration.
  • **Create**: Okta can create users in your app.
  • **Read** `*`: Okta can read users from your app.
  • **Update**: Okta can update users in your app.
  • **Change password**: Okta can update user passwords in your app.
  • **Deactivate**: Okta can deactivate users in your app.
  • **Support PATCH for User**: Okta can update users with the PATCH method in your app.
**Note**: **Import users** capability is enabled by default. **Profile sourcing** isn't supported, contact the [OIN team](mailto:oin@okta.com) if your integration must support this capability.| -| **Group operations** | Group operations for your SCIM integration. These are all selected by default if your integration manages the **Groups** object.
  • **Create**: Okta can create groups in your app.
  • **Read** `*`: Okta can read groups from your app.
  • **Update (Uses PATCH)**: Okta can update groups in your app with the PATCH method.
  • **Delete**: Okta can delete groups in your app.
**Note**: **Import groups** capability is enabled by default.| -| **Link to configuration guide** `*` | Specify the URL link to your customer-facing instructions on how to configure SCIM provisioning between Okta and your app. See [Customer configuration document guidelines](/docs/guides/submit-app-prereq/main/#customer-configuration-document-guidelines).| - -`*` Required properties diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/protocol-test-flow.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/protocol-test-flow.md deleted file mode 100644 index 997c48dab48..00000000000 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/protocol-test-flow.md +++ /dev/null @@ -1,3 +0,0 @@ -Before you test your Okta SCIM integration, confirm that your SCIM API service is operational. Okta provides a SCIM API specification test suite in Runscope. See [Test your SCIM API](/docs/guides/scim-provisioning-integration-prepare/main/#test-your-scim-api). - -After you've successfully run the Okta SCIM API specification test suite in Runscope, save the URL of the test results. This Runscope test results URL is one of the requirements to submit your integration. diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/test-steps.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/test-steps.md new file mode 100644 index 00000000000..813c8b806e5 --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/test-steps.md @@ -0,0 +1,11 @@ +1. Generate an app instance from your updated integration configuration. See [Generate an instance for SCIM](/docs/guides/submit-oin-app/scim/main/#generate-an-instance-for). + + > **Notes:** + > * one + > * two + +1. Assign test users to your instances. See [Assign test users to your app instance](/docs/guides/submit-oin-app/openidconnect/main/#assign-test-users-to-your-integration-instance). + +1. Execute the [Runscope CRUD tests](#runscope-crud-tests) and the [Okta manual integration tests](#manual-okta-scim-integration-tests) with your generated test instance. + +1. [Submit your updated integration](#submit-your-updates) after all required tests are successful. From e2ae51983db8275343d87f2420fefe8e19807d05 Mon Sep 17 00:00:00 2001 From: Van Ngo Date: Thu, 6 Feb 2025 18:14:07 -0500 Subject: [PATCH 07/28] More edits to test integration snippets --- .../docs/guides/update-oin-app/main/index.md | 14 ++++++++------ .../main/openidconnect/required-app-instances.md | 6 ++++++ .../main/openidconnect/test-instance.md | 9 ++++++++- .../main/openidconnect/test-steps.md | 11 +---------- .../main/saml2/required-app-instances.md | 6 ++++++ .../update-oin-app/main/saml2/test-steps.md | 9 +-------- .../main/scim/required-app-instances.md | 6 ++++++ .../guides/update-oin-app/main/scim/test-steps.md | 15 ++++++++------- 8 files changed, 44 insertions(+), 32 deletions(-) create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/required-app-instances.md create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/required-app-instances.md create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/required-app-instances.md diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md index c7ac28876f2..883bdf569ef 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md @@ -89,9 +89,9 @@ To update a previously published OIN integration: * [ properties](/docs/guides/submit-oin-app/-/main/#properties) * [Enter test information](/docs/guides/submit-oin-app/-/main/#enter-test-information) -1. Click **Test your integration** to move to the testing section of the OIN Wizard. +1. Click **Test your integration** to save your updates and move to the testing section of the OIN Wizard. -## Test your integration updates +## Test integration updates The OIN Wizard journey includes the **Test integration** experience page to help you configure and test your updated integration within the same org before submission. These are the tasks that you need to complete: @@ -99,13 +99,15 @@ The OIN Wizard journey includes the **Test integration** experience page to help ### Generate instances for testing -Click **Generate Instance** to create an instance required for the **CURRENT VERSION** from the **Required app instances** status box. +Generate instances for testing your updates directly from the OIN Wizard. See [Required app instances](#required-app-instances) in the OIN Wizard for the instances that you need to generate. -See [Generate an instance for testing](#generate-an-instance-for) to create instances for your current submission. +#### Required app instances -> **Note:** There's a maximum of five active app instances allowed in a Developer Edition org. Deactivate any instances that you don't need for testing. + -### Test your SSO integration + + +### Test your integration 1. Test your integration protocol: diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/required-app-instances.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/required-app-instances.md new file mode 100644 index 00000000000..91a57edf769 --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/required-app-instances.md @@ -0,0 +1,6 @@ +The **Required app instances** box shows you the instances detected in your org that are available to test your integration. It also shows you the test instances required for the OIN Submission Tester based on your selected protocols: + +* The **CURRENT VERSION** status indicates the instances that you need to test your current integration submission. +* The **PUBLISHED VERSION** status indicates the instances that you need to test backwards compatibility. + +You need to [generate an instance](#generate-instance) to test the specific protocol if **No instance detected** appears next to the protocol. \ No newline at end of file diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/test-instance.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/test-instance.md index a4548233886..69b16f99ca1 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/test-instance.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/test-instance.md @@ -1,3 +1,7 @@ +#### Generate instance + +Create an instance for your updated OIDC integration. See [] +1. 2. Specify the **Application label** and any app properties required in the **General settings** tab. 3. Click **Done**. The **Assignments** tab appears. You can assign users to your integration later, see the next [Assign test users to your integration](#assign-test-users-to-your-integration-instance) task. @@ -11,4 +15,7 @@ 1. Click **Save**. > **Note:** Most recent Okta Developer Edition orgs are Identity Engine orgs. See [OIN Wizard authentication policy for testing](/docs/guides/submit-app-prereq/main/#oin-wizard-authentication-policy-for-testing). -8. [Assign test users to your instance](#assign-test-users-to-your-integration-instance) before you start testing your SSO flows. \ No newline at end of file +8. [Assign test users to your instance](#assign-test-users-to-your-integration-instance) before you start testing your SSO flows. + + +Assign test users to your instances. See [Assign test users to your app instance](/docs/guides/submit-oin-app/openidconnect/main/#assign-test-users-to-your-integration-instance). diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/test-steps.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/test-steps.md index 6611a5fb80c..059431315e0 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/test-steps.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/test-steps.md @@ -1,20 +1,11 @@ -1. Generate an app instance from your updated integration configuration. See [Generate an instance for OIDC](/docs/guides/submit-oin-app/openidconnect/main/#generate-an-instance-for). +1. Generate app instances from your updated integration configuration and assign test users. See [Generate instances for testing](#generate-instances-for-testing). > **Notes:** > * You must generate separate instances for testing if you support two SSO protocols (one for OIDC and one for SAML). The OIN Submission Tester can only test one protocol per instance. > * You should already have an instance of your published integration for backwards-compatibility testing. See [Required app instances](#required-app-instances). -1. Assign test users to your instances. See [Assign test users to your app instance](/docs/guides/submit-oin-app/openidconnect/main/#assign-test-users-to-your-integration-instance). - 1. Test the required flows for each of your SSO instances with the [OIN Submission Tester](/docs/guides/submit-oin-app/openidconnect/main/#oin-submission-tester). Fix any test failures from the OIN Submission Tester, then regenerate the test instance (if necessary) and retest. > **Note:** You must have the Okta Browser Plugin installed with **Allow in Incognito** enabled before you use the **OIN Submission Tester**. See [OIN Wizard requirements](/docs/guides/submit-app-prereq/main/#oin-wizard-requirements). 1. [Submit your updated integration](#submit-your-updates) after all required tests are successful. - -### Required app instances - -The **Required app instances** box shows you the instances detected in your org that are available to test your integration. It also shows you the test instances required for the OIN Submission Tester based on your selected protocols: - -* The **CURRENT VERSION** status indicates the instances that you need to test your current integration submission. -* The **PUBLISHED VERSION** status indicates the instances that you need to test backwards compatibility. diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/required-app-instances.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/required-app-instances.md new file mode 100644 index 00000000000..b1daf683749 --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/required-app-instances.md @@ -0,0 +1,6 @@ +The **Required app instances** box shows you the instances detected in your org that are available to test your integration. It also shows you the test instances required for the OIN Submission Tester based on your selected protocols: + +* The **CURRENT VERSION** status indicates the instances that you need to test your current integration submission. +* The **PUBLISHED VERSION** status indicates the instances that you need to test backwards compatibility. + +You need to [generate an instance](#generate-instance) to test the specific protocol if **No instance detected** appears next to the protocol. diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/test-steps.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/test-steps.md index f7cc3450d74..002d71aa1dd 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/test-steps.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/test-steps.md @@ -1,4 +1,4 @@ -1. Generate an app instance from your updated integration configuration. See [Generate an instance for SAML](/docs/guides/submit-oin-app/saml2/main/#generate-an-instance-for). +1. Generate app instances from your updated integration configuration. See [Generate instances for testing](#generate-instances-for-testing). > **Notes:** > * You must generate separate instances for testing if you support two SSO protocols (one for OIDC and one for SAML). The OIN Submission Tester can only test one protocol per instance. @@ -11,10 +11,3 @@ > **Note:** You must have the Okta Browser Plugin installed with **Allow in Incognito** enabled before you use the **OIN Submission Tester**. See [OIN Wizard requirements](/docs/guides/submit-app-prereq/main/#oin-wizard-requirements). 1. [Submit your updated integration](#submit-your-updates) after all required tests are successful. - -### Required app instances - -The **Required app instances** box shows you the instances detected in your org that are available to test your integration. It also shows you the test instances required for the OIN Submission Tester based on your selected protocols: - -* The **CURRENT VERSION** status indicates the instances that you need to test your current integration submission. -* The **PUBLISHED VERSION** status indicates the instances that you need to test backwards compatibility. diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/required-app-instances.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/required-app-instances.md new file mode 100644 index 00000000000..ea41c65d017 --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/required-app-instances.md @@ -0,0 +1,6 @@ +The **Required app instances** box shows you the instances detected in your org that are available to test your integration. It also shows you the test instances required for the OIN Submission Tester if your integration also supports SSO: + +* The **CURRENT VERSION** status indicates the instances that you need to test your current integration submission. +* The **PUBLISHED VERSION** status indicates the instances that you need to test backwards compatibility for SSO. + +You need to [generate an instance](#generate-instance) to test the specific protocol if **No instance detected** appears next to the protocol. diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/test-steps.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/test-steps.md index 813c8b806e5..d916be9a499 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/test-steps.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/test-steps.md @@ -1,10 +1,11 @@ -1. Generate an app instance from your updated integration configuration. See [Generate an instance for SCIM](/docs/guides/submit-oin-app/scim/main/#generate-an-instance-for). - - > **Notes:** - > * one - > * two - -1. Assign test users to your instances. See [Assign test users to your app instance](/docs/guides/submit-oin-app/openidconnect/main/#assign-test-users-to-your-integration-instance). +1. Generate an app instance from your updated integration configuration. See [Generate instances for testing](#generate-instances-for-testing). + + > **Note:** If your integration also supports SSO: + > * You can avoid creating another app instance for SSO testing if these conditions apply: + > * Your integration supports SCIM and one SSO protocol. + > * Your integration doesn't support SSO JIT. + > * The **Create User** SCIM operation is enabled. + > * You should already have an instance of your published integration for SSO backwards-compatibility testing. See [Required app instances](#required-app-instances). 1. Execute the [Runscope CRUD tests](#runscope-crud-tests) and the [Okta manual integration tests](#manual-okta-scim-integration-tests) with your generated test instance. From a1808ae066d19c18bdc01b95860e49c57e135e40 Mon Sep 17 00:00:00 2001 From: Van Ngo Date: Fri, 7 Feb 2025 15:47:03 -0500 Subject: [PATCH 08/28] Edits to test step and required app instance snippets --- .../docs/guides/update-oin-app/main/index.md | 5 +++++ .../main/openidconnect/required-app-instances.md | 8 ++++++-- .../update-oin-app/main/openidconnect/test-steps.md | 10 ++-------- .../main/saml2/required-app-instances.md | 8 ++++++-- .../guides/update-oin-app/main/saml2/test-steps.md | 9 +-------- .../main/scim/required-app-instances.md | 11 +++++++++-- .../guides/update-oin-app/main/scim/test-steps.md | 12 +++--------- 7 files changed, 32 insertions(+), 31 deletions(-) diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md index 883bdf569ef..49dcb410c0d 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md @@ -97,6 +97,11 @@ The OIN Wizard journey includes the **Test integration** experience page to help +See [Submit your updated integration](#submit-your-updates) after all required tests are successful. + +> **Note:** Test steps on this page are specifically for the **** protocol.
+> If you want to change the protocol details on this page, select the protocol from the **Instructions for** dropdown list on the right. + ### Generate instances for testing Generate instances for testing your updates directly from the OIN Wizard. See [Required app instances](#required-app-instances) in the OIN Wizard for the instances that you need to generate. diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/required-app-instances.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/required-app-instances.md index 91a57edf769..9d02e81ce38 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/required-app-instances.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/required-app-instances.md @@ -1,6 +1,10 @@ -The **Required app instances** box shows you the instances detected in your org that are available to test your integration. It also shows you the test instances required for the OIN Submission Tester based on your selected protocols: +The **Required app instances** section shows you the instances detected in your org that are available to test your integration. It also shows you the test instances required for the OIN Submission Tester based on your selected protocols: * The **CURRENT VERSION** status indicates the instances that you need to test your current integration submission. * The **PUBLISHED VERSION** status indicates the instances that you need to test backwards compatibility. -You need to [generate an instance](#generate-instance) to test the specific protocol if **No instance detected** appears next to the protocol. \ No newline at end of file +[Generate an instance](#generate-instance) to test the specific protocol if **No instance detected** appears next to the protocol. + +> **Notes:** +> * Generate separate instances for testing if you support two SSO protocols (one for OIDC and one for SAML). The OIN Submission Tester can only test one protocol per instance. +> * You should already have an instance of your published integration for backwards-compatibility testing. If you don't have a published-version instance, exit the OIN Wizard and create the OIN-published instance. See [Add existing app integrations](https://help.okta.com/okta_help.htm?type=oie&id=csh-apps-add-app) to create an OIN-published instance for backwards-compatibility testing. diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/test-steps.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/test-steps.md index 059431315e0..0083b53c00a 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/test-steps.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/test-steps.md @@ -1,11 +1,5 @@ -1. Generate app instances from your updated integration configuration and assign test users. See [Generate instances for testing](#generate-instances-for-testing). - - > **Notes:** - > * You must generate separate instances for testing if you support two SSO protocols (one for OIDC and one for SAML). The OIN Submission Tester can only test one protocol per instance. - > * You should already have an instance of your published integration for backwards-compatibility testing. See [Required app instances](#required-app-instances). +1. Generate app instances from your updated integration and assign test users. See [Generate instances for testing](#generate-instances-for-testing). 1. Test the required flows for each of your SSO instances with the [OIN Submission Tester](/docs/guides/submit-oin-app/openidconnect/main/#oin-submission-tester). Fix any test failures from the OIN Submission Tester, then regenerate the test instance (if necessary) and retest. - > **Note:** You must have the Okta Browser Plugin installed with **Allow in Incognito** enabled before you use the **OIN Submission Tester**. See [OIN Wizard requirements](/docs/guides/submit-app-prereq/main/#oin-wizard-requirements). - -1. [Submit your updated integration](#submit-your-updates) after all required tests are successful. + > **Note:** You must have the Okta Browser Plugin installed with **Allow in Incognito** enabled before you use the **OIN Submission Tester**. See [OIN Wizard requirements](/docs/guides/submit-app-prereq/main/#oin-wizard-requirements). diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/required-app-instances.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/required-app-instances.md index b1daf683749..5e3c891a184 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/required-app-instances.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/required-app-instances.md @@ -1,6 +1,10 @@ -The **Required app instances** box shows you the instances detected in your org that are available to test your integration. It also shows you the test instances required for the OIN Submission Tester based on your selected protocols: +The **Required app instances** section shows you the instances detected in your org that are available to test your integration. It also shows you the test instances required for the OIN Submission Tester based on your selected protocols: * The **CURRENT VERSION** status indicates the instances that you need to test your current integration submission. * The **PUBLISHED VERSION** status indicates the instances that you need to test backwards compatibility. -You need to [generate an instance](#generate-instance) to test the specific protocol if **No instance detected** appears next to the protocol. +[Generate an instance](#generate-instance) to test the specific protocol if **No instance detected** appears next to the protocol. + +> **Notes:** +> * Generate separate instances for testing if you support two SSO protocols (one for OIDC and one for SAML). The OIN Submission Tester can only test one protocol per instance. +> * You should already have an instance of your published integration for backwards-compatibility testing. If you don't have a published-version instance, exit the OIN Wizard and create the OIN-published instance. See [Add existing app integrations](https://help.okta.com/okta_help.htm?type=oie&id=csh-apps-add-app) to create an OIN-published instance for backwards-compatibility testing. \ No newline at end of file diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/test-steps.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/test-steps.md index 002d71aa1dd..571edfd810d 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/test-steps.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/test-steps.md @@ -1,13 +1,6 @@ -1. Generate app instances from your updated integration configuration. See [Generate instances for testing](#generate-instances-for-testing). - - > **Notes:** - > * You must generate separate instances for testing if you support two SSO protocols (one for OIDC and one for SAML). The OIN Submission Tester can only test one protocol per instance. - > * You should already have an instance of your published integration for backwards-compatibility testing. See [Required app instances](#required-app-instances). - -1. Assign test users to your instances. See [Assign test users to your app instance](/docs/guides/submit-oin-app/saml2/main/#assign-test-users-to-your-integration-instance). +1. Generate app instances from your updated integration and assign test users. See [Generate instances for testing](#generate-instances-for-testing). 1. Test the required flows for each of your SSO instances with the [OIN Submission Tester](/docs/guides/submit-oin-app/saml2/main/#oin-submission-tester). Fix any test failures from the OIN Submission Tester, then regenerate the test instance (if necessary) and retest. > **Note:** You must have the Okta Browser Plugin installed with **Allow in Incognito** enabled before you use the **OIN Submission Tester**. See [OIN Wizard requirements](/docs/guides/submit-app-prereq/main/#oin-wizard-requirements). -1. [Submit your updated integration](#submit-your-updates) after all required tests are successful. diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/required-app-instances.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/required-app-instances.md index ea41c65d017..72e221af94d 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/required-app-instances.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/required-app-instances.md @@ -1,6 +1,13 @@ -The **Required app instances** box shows you the instances detected in your org that are available to test your integration. It also shows you the test instances required for the OIN Submission Tester if your integration also supports SSO: +The **Required app instances** section shows you the instances detected in your org that are available to test your integration. It shows you the test instances required for the OIN Submission Tester if your integration also supports SSO: * The **CURRENT VERSION** status indicates the instances that you need to test your current integration submission. -* The **PUBLISHED VERSION** status indicates the instances that you need to test backwards compatibility for SSO. +* The **PUBLISHED VERSION** status indicates the instances that you need to test backwards compatibility for SSO. If your integration only supports the SCIM protocol, then no published version instance is required. You need to [generate an instance](#generate-instance) to test the specific protocol if **No instance detected** appears next to the protocol. + +> **Note:** If your integration also supports SSO: +> * You can avoid creating another app instance for SSO testing if these conditions apply: +> * Your integration supports SCIM and one SSO protocol. +> * Your integration doesn't support SSO JIT. +> * The **Create User** SCIM operation is enabled. +> * You should already have an instance of your published integration for SSO backwards-compatibility testing. The OIN Wizard ensures that an SSO published instance is available in your org before you update your integration. diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/test-steps.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/test-steps.md index d916be9a499..a6723f96bb6 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/test-steps.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/test-steps.md @@ -1,12 +1,6 @@ -1. Generate an app instance from your updated integration configuration. See [Generate instances for testing](#generate-instances-for-testing). - - > **Note:** If your integration also supports SSO: - > * You can avoid creating another app instance for SSO testing if these conditions apply: - > * Your integration supports SCIM and one SSO protocol. - > * Your integration doesn't support SSO JIT. - > * The **Create User** SCIM operation is enabled. - > * You should already have an instance of your published integration for SSO backwards-compatibility testing. See [Required app instances](#required-app-instances). +1. Generate an app instance from your updated integration. See [Generate instances for testing](#generate-instances-for-testing). 1. Execute the [Runscope CRUD tests](#runscope-crud-tests) and the [Okta manual integration tests](#manual-okta-scim-integration-tests) with your generated test instance. -1. [Submit your updated integration](#submit-your-updates) after all required tests are successful. +1. Execute the Runscope tests on the backwards compatible instance. + From 415f63ef04b762bfc63561da8d85de86094096f3 Mon Sep 17 00:00:00 2001 From: Van Ngo Date: Fri, 7 Feb 2025 18:11:42 -0500 Subject: [PATCH 09/28] Add SCIM test step and generate instance snippets --- .../docs/guides/update-oin-app/main/index.md | 37 ++------ .../main/openidconnect/generate-instances.md | 5 ++ .../main/openidconnect/test-instance.md | 24 +---- .../main/openidconnect/test-steps.md | 4 +- .../main/saml2/generate-instances.md | 5 ++ .../main/saml2/test-instance.md | 19 +--- .../update-oin-app/main/saml2/test-steps.md | 5 +- .../main/scim/generate-instances.md | 87 +++++++++++++++++++ .../update-oin-app/main/scim/test-instance.md | 2 + .../update-oin-app/main/scim/test-steps.md | 5 +- 10 files changed, 115 insertions(+), 78 deletions(-) create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/generate-instances.md diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md index 49dcb410c0d..9d210e9d50e 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md @@ -96,6 +96,7 @@ To update a previously published OIN integration: The OIN Wizard journey includes the **Test integration** experience page to help you configure and test your updated integration within the same org before submission. These are the tasks that you need to complete: +
See [Submit your updated integration](#submit-your-updates) after all required tests are successful. @@ -110,41 +111,13 @@ Generate instances for testing your updates directly from the OIN Wizard. See [R - - -### Test your integration - -1. Test your integration protocol: - - * For SSO testing, click **Add to Tester** for each required test instance. See [Add to Tester](#add-to-tester).
The required tests appear for each test instance. Run your tests from the OIN Submission Tester. See [OIN Submission Tester](#oin-submission-tester). If you encounter errors, see [Failed tests](#failed-tests) for help with resolving the issues. - -### Test your SCIM integration - -Test your integration protocol: - - * For SCIM testing, see [Test your SCIM integration](#test-your-scim-integration) for all the test requirements. +#### Generate an instance - The **Required app instances** box contains the following items: - * The instances that you need to test the **PUBLISHED VERSION** of your OIN integration. - * The instances that you need to test the **CURRENT VERSION** of your integration submission. + - See [Required app instances](#required-app-instances). - > **Note:** If the OIN Submission Tester session expired, click **Refresh tester session** for a new test session. - - Backwards-compatible test instances that were generated from your published integration appear in the **Application instances for testing** list. - -1. Click **Generate Instance** to create an instance required for the **CURRENT VERSION** from the **Required app instances** status box. - - See [Generate an instance for testing](#generate-an-instance-for) to create instances for your current submission. - > **Note:** There's a maximum of five active app instances allowed in a Developer Edition org. Deactivate any instances that you don't need for testing. - -1. Test your integration protocol: - - * For SSO testing, click **Add to Tester** for each required test instance. See [Add to Tester](#add-to-tester).
The required tests appear for each test instance. Run your tests from the OIN Submission Tester. See [OIN Submission Tester](#oin-submission-tester). If you encounter errors, see [Failed tests](#failed-tests) for help with resolving the issues. - - * For SCIM testing, see [Test your SCIM integration](#test-your-scim-integration) for all the test requirements. +### Test your integration -1. [Submit your updates](#submit-your-updates) if all your tests passed. + ## Submit your updates diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/generate-instances.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/generate-instances.md index e69de29bb2d..c466c1403c0 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/generate-instances.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/generate-instances.md @@ -0,0 +1,5 @@ +1. Create an instance for your updated OIDC integration. See [Generate an instance for OIDC](/docs/guides/submit-oin-app/openidconnect/main/#generate-instances-for-testing). + +1. Assign test users for your generated instance. See [Assign test users to your integration instance](/docs/guides/submit-oin-app/openidconnect/main/#assign-test-users-to-your-integration-instance). + +Next, go to [Test your integration](#test-your-integration). diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/test-instance.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/test-instance.md index 69b16f99ca1..454d4f53b01 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/test-instance.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/test-instance.md @@ -1,21 +1,5 @@ -#### Generate instance +For an SSO integration, use the OIN Submission Tester to test the required flows on your generated test instance. -Create an instance for your updated OIDC integration. See [] -1. -2. Specify the **Application label** and any app properties required in the **General settings** tab. -3. Click **Done**. The **Assignments** tab appears. - You can assign users to your integration later, see the next [Assign test users to your integration](#assign-test-users-to-your-integration-instance) task. -4. Click the **Sign On** tab to view and copy the OIDC client ID and secret. -5. Click **View Setup Instructions** to open a new tab to your integration setup instructions. This is the customer configuration guide that you previously specified in the OIN Wizard. -6. Follow the instructions in your guide to set up the SSO integration on your app with the OIDC client ID and secret provided. -7. Follow these steps if you have an Identity Engine Developer Edition org: - 1. Click the **Sign On** tab, scroll to the **User authentication** section, and click **Edit**. - 1. Select **Password only** from the **Authentication policy** dropdown menu. - [[style="list-style-type:lower-alpha"]] - 1. Click **Save**. - > **Note:** Most recent Okta Developer Edition orgs are Identity Engine orgs. See [OIN Wizard authentication policy for testing](/docs/guides/submit-app-prereq/main/#oin-wizard-authentication-policy-for-testing). - -8. [Assign test users to your instance](#assign-test-users-to-your-integration-instance) before you start testing your SSO flows. - - -Assign test users to your instances. See [Assign test users to your app instance](/docs/guides/submit-oin-app/openidconnect/main/#assign-test-users-to-your-integration-instance). +1. Go to the [Application instance for testing](/docs/guides/submit-oin-app/openidconnect/main/#application-instances-for-testing) section on the **Test integration** page. +1. Add your test instance to the OIN Submission Tester. See [Add to Tester](/docs/guides/submit-oin-app/openidconnect/main/#add-to-tester). +1. Run the required tests in the OIN Submission Tester. See [OIN Submission Tester](/docs/guides/submit-oin-app/openidconnect/main/#oin-submission-tester). diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/test-steps.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/test-steps.md index 0083b53c00a..0169531a581 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/test-steps.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/test-steps.md @@ -1,5 +1,3 @@ 1. Generate app instances from your updated integration and assign test users. See [Generate instances for testing](#generate-instances-for-testing). -1. Test the required flows for each of your SSO instances with the [OIN Submission Tester](/docs/guides/submit-oin-app/openidconnect/main/#oin-submission-tester). Fix any test failures from the OIN Submission Tester, then regenerate the test instance (if necessary) and retest. - - > **Note:** You must have the Okta Browser Plugin installed with **Allow in Incognito** enabled before you use the **OIN Submission Tester**. See [OIN Wizard requirements](/docs/guides/submit-app-prereq/main/#oin-wizard-requirements). +1. Test the required flows for each of your SSO instances. See [Test your integration](#test-your-integration). diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/generate-instances.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/generate-instances.md new file mode 100644 index 00000000000..10f1b2bb918 --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/generate-instances.md @@ -0,0 +1,5 @@ +1. Create an instance for your updated SAML integration. See [Generate an instance for SAML](/docs/guides/submit-oin-app/saml2/main/#generate-instances-for-testing). + +1. Assign test users for your generated instance. See [Assign test users to your integration instance](/docs/guides/submit-oin-app/saml2/main/#assign-test-users-to-your-integration-instance). + +Next, go to [Test your integration](#test-your-integration). diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/test-instance.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/test-instance.md index 57e756ed537..7f86a5e3c27 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/test-instance.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/test-instance.md @@ -1,16 +1,5 @@ -2. Specify the **Application label** and any integration properties required in the **General settings** tab. -3. Click **Done**. The **Assignments** tab appears. - You can assign users to your integration later, see [Assign test users to your integration](#assign-test-users-to-your-integration-instance). -4. Click the **Sign On** tab. -5. Click **View SAML setup instructions** to open a new tab to your integration setup instructions. This is the customer configuration guide that you previously specified in the OIN Wizard. -6. Follow the instructions in your guide to set up the SAML SSO integration on your app. - * Click **Copy** next to **Metadata URL** to copy the full SAML metadata URL required for the integration. - * To view specific SAML metadata details, click the **More details** arrow. -7. Follow these steps if you have an Identity Engine Developer Edition org: - 1. Click the **Sign On** tab, scroll to the **User authentication** section, and click **Edit**. - 1. Select **Password only** from the **Authentication policy** dropdown menu. - [[style="list-style-type:lower-alpha"]] - 1. Click **Save**. - > **Note:** Most recent Okta Developer Edition orgs are Identity Engine orgs. See [OIN Wizard authentication policy for testing](/docs/guides/submit-app-prereq/main/#oin-wizard-authentication-policy-for-testing). +For an SSO integration, use the OIN Submission Tester to test the required flows on your generated test instance. -8. [Assign test users to your instance](#assign-test-users-to-your-integration-instance) before you start testing your SSO flows. \ No newline at end of file +1. Go to the [Application instance for testing](/docs/guides/submit-oin-app/saml2/main/#application-instances-for-testing) section on the **Test integration** page. +1. Add your test instance to the OIN Submission Tester. See [Add to Tester](/docs/guides/submit-oin-app/saml2/main/#add-to-tester). +1. Run the required tests in the OIN Submission Tester. Fix any test failures, then regenerate the test instance (if necessary) and retest. See [OIN Submission Tester](/docs/guides/submit-oin-app/saml2/main/#oin-submission-tester). diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/test-steps.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/test-steps.md index 571edfd810d..0169531a581 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/test-steps.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/test-steps.md @@ -1,6 +1,3 @@ 1. Generate app instances from your updated integration and assign test users. See [Generate instances for testing](#generate-instances-for-testing). -1. Test the required flows for each of your SSO instances with the [OIN Submission Tester](/docs/guides/submit-oin-app/saml2/main/#oin-submission-tester). Fix any test failures from the OIN Submission Tester, then regenerate the test instance (if necessary) and retest. - - > **Note:** You must have the Okta Browser Plugin installed with **Allow in Incognito** enabled before you use the **OIN Submission Tester**. See [OIN Wizard requirements](/docs/guides/submit-app-prereq/main/#oin-wizard-requirements). - +1. Test the required flows for each of your SSO instances. See [Test your integration](#test-your-integration). diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/generate-instances.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/generate-instances.md index ebc4111dd8b..a83a3d240ad 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/generate-instances.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/generate-instances.md @@ -1,3 +1,87 @@ +1. From the **Test integration** page, click **Generate instance**. A page appears to add your instance details. + + > **Note:** There's a limit of five app instances in a Okta Developer Edition org. The **Generate instance** option is deactivated when you reach this limit. Deactivate unused instances to make room for new instances in your org. See [Deactivate app instances in your org](/docs/guides/submit-oin-app/scim/main/#deactivate-an-app-instance-in-your-org). + +1. In the **General settings** tab, enter an **Application label** and any other required integration properties. +1. Click **Done**. Your generated test instance appears with more tabs for configuration. +1. Click **Provisioning** > **Configure API Integration**. +1. Select **Enable API integration**. + * For custom or bearer authentication, specify the **API token** for your instance. + * For OAuth 2.0 authentication, click **Authenticate with {yourApp}** and provide credentials for your test instance. +1. Click **Test API Credentials** to test authentication to your SCIM service. If there's an error, verify that the credentials are correct. +1. Click **Save**. +1. Select **Settings** > **To Okta** from the updated **Provisioning** tab. +1. In the **General** section, click **Edit** to schedule imports and configure the username format for imported users. + + You can also define a percentage of acceptable assignments before the [import safeguards](https://help.okta.com/okta_help.htm?id=csh-eu-import-safeguard) feature is automatically triggered. + +1. Click **Save**. Next, [configure attribute mappings](#configure-attribute-mappings). + +See [Add existing app integrations](https://help.okta.com/okta_help.htm?type=oie&id=csh-apps-add-app). + +> **Note:** Your SCIM app must support redirect URIs that include the app name (`{appName}`) that's generated after you create your app instance. See SCIM service [authentication](/docs/guides/scim-provisioning-integration-prepare/main/#authentication) for a list of redirect URIs required. Your app name appears in the **General settings** tab or in the Admin Console URL when you're viewing the instance page. + +#### Configure attribute mappings + +> **Note:** Configure attribute-mapping instructions are only for SCIM integrations. + +SCIM integrations that are submitted through the OIN Wizard have a default set of user attribute mappings. The user schema in your SCIM app might not support all of these attributes. Ensure the integration that you're submitting to Okta reflects the attributes that are supported by your app. The OIN team uses the attribute mappings in your test instance for your integration provisioning settings in the OIN catalog. + +After you've enabled the provisioning API connection in your test instance, configure user attribute mappings to and from Okta in the **Provisioning** tab of your instance: + +* **To App**: User attribute mappings from Okta to your app +* **To Okta**: User attribute mappings from your app to Okta + +1. Select **To App** on the left **Settings** panel of the **Provisioning** tab. + The **Provisioning to App** settings appear. The provisioning operations are already set by default from the [SCIM properties](#properties) section when you configured your integration. + +1. Scroll to the **{yourApp} Attribute Mappings** section. + + * Delete attributes: + 1. Click **X** next to the attribute that you want to delete, and then click **OK** to confirm. + + Repeat this step until you remove all the mappings for the attributes that you want to delete. + + 1. After removing all the mappings for the attributes that you want to delete, click **Go to Profile Editor**. + + 1. In the Profile Editor, delete all the corresponding attributes from the mapping by clicking **X** next to the attribute and then **Delete Attribute** to confirm. + + Repeat this step for all the attributes that you want to delete. + + * Add attributes: + + 1. In the Profile Editor, click **Add Attribute**. + + 1. Enter the information for the new attribute that you’re adding and then click **Save**. + + > **Note:** The **Scope** property determines whether the attribute that you're adding can be assigned at a group level or per user. If you want your admins to assign a value for this attribute at a group level, don't select the **User personal** checkbox. + + 1. After adding attributes, go back to the **{yourApp} Attribute Mappings** section and click **Edit** to map your new attributes. A dialog appears with two dropdown fields. + + 1. Select **Map from Okta Profile** in the first dropdown list. + 1. In the second dropdown list, select the Okta profile attribute that you want to map over to the SCIM attribute. + 1. Click **Save**. + + Repeat these steps for all SCIM attributes that you want to map (from Okta to your app). + +
+ + ![Displays the map attribute dialog.](/img/oin/scim_check-attributes-14.png) + +
+ + 5. After you update the mappings from Okta to your app, click **To Okta** in the **Settings** section. + 6. Scroll to the **{yourApp} Attribute Mappings** section. Find the attribute that you want to update and click **Edit**. A dialog appears with two dropdown fields next to **Attribute value**. + 7. Select **Map from {yourApp} App Profile** from the first dropdown list. + 8. In the second dropdown list, select the SCIM attribute that you want to map to the Okta attribute. + 9. Click **Save**. + + Repeat these steps for all SCIM attributes that you want to map from your app to Okta. + +After you complete your attribute mappings, you're ready to [test your integration](#test-your-integration). + +--- + Depending on the nature of your updates, you may need to generate instances for testing: * If you're only updating app profiles, then you don't need to create an app instance for backward-compatibility testing. You can test the app profile updates in the updated instance version of your submission. See [Generate instance for testing](#generate-instances-for-testing) and [Configure attribute mappings](map-profile-attributes). @@ -7,3 +91,6 @@ Depending on the nature of your updates, you may need to generate instances for * If you don't have an instance based on the published integration, create an instance of the published integration. See [Generate a published OIN catalog instance](generate-a-published-oin-catalog-instance) OR See [Add existing app integrations](https://help.okta.com/okta_help.htm?type=oie&id=csh-apps-add-app) to create an instance for backwards-compatibility testing. > **Note:** The **Generate instance** option is disabled if you have five active instances in your org. [Deactivate instances](/docs/guides/submit-oin-app/openidconnect/main/#deactivate-an-app-instance-in-your-org) that you're not using. + +--- +> **Note:** Okta recommends that you execute the Runscope tests on a published-version instance of your SCIM integration, but it's not a requirement for submission. diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/test-instance.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/test-instance.md index 1c7ea8a49e7..46e910e248e 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/test-instance.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/test-instance.md @@ -1,3 +1,5 @@ +> **Note:** Okta recommends that you execute the Runscope tests on a published-version instance of your SCIM integration, but it's not a requirement for submission. + 2. In the **General settings** tab, enter an **Application label** and any other required integration properties. 3. Click **Done**. Your generated test instance appears with more tabs for configuration. 4. Click **Provisioning** > **Configure API Integration**. diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/test-steps.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/test-steps.md index a6723f96bb6..8480fd626dc 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/test-steps.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/test-steps.md @@ -1,6 +1,3 @@ 1. Generate an app instance from your updated integration. See [Generate instances for testing](#generate-instances-for-testing). -1. Execute the [Runscope CRUD tests](#runscope-crud-tests) and the [Okta manual integration tests](#manual-okta-scim-integration-tests) with your generated test instance. - -1. Execute the Runscope tests on the backwards compatible instance. - +1. Execute the Runscope CRUD and integration tests with your generated test instance. See [Test your integration](#test-your-integration). From 876030698a9f83b54c13bf7168e7b52f7ec93596 Mon Sep 17 00:00:00 2001 From: Van Ngo Date: Sun, 9 Feb 2025 16:56:55 -0500 Subject: [PATCH 10/28] Add edit-links snippet for custom links --- .../docs/guides/update-oin-app/main/index.md | 10 +++------- .../update-oin-app/main/openidconnect/edit-links.md | 6 ++++++ .../main/openidconnect/generate-instances.md | 2 +- .../main/openidconnect/required-app-instances.md | 4 ++-- .../guides/update-oin-app/main/saml2/edit-links.md | 6 ++++++ .../update-oin-app/main/saml2/generate-instances.md | 2 +- .../main/saml2/required-app-instances.md | 4 ++-- .../docs/guides/update-oin-app/main/scim/edit-links.md | 6 ++++++ 8 files changed, 27 insertions(+), 13 deletions(-) create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/edit-links.md create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/edit-links.md create mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/edit-links.md diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md index 9d210e9d50e..6a3268b15cd 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md @@ -79,15 +79,11 @@ To update a previously published OIN integration: 1. From the **This integration is read-only** information box, click **Edit integration**. > **Note:** You can skip this step if your submission is in draft status. The **Edit integration** option isn't available for submissions in draft status because it's not in read-only mode. - + 1. Update your integration as required in the following sections of the OIN Wizard flow: - * **Select your protocol** - * [OIN catalog properties](/docs/guides/submit-oin-app/-/main/#oin-catalog-properties) - * [Integration variables](/docs/guides/submit-oin-app/-/main/#integration-variables) - > **Note:** See [Update integration considerations](#update-integration-considerations) for backwards compatibility with integration variables. - * [ properties](/docs/guides/submit-oin-app/-/main/#properties) - * [Enter test information](/docs/guides/submit-oin-app/-/main/#enter-test-information) + + 1. Click **Test your integration** to save your updates and move to the testing section of the OIN Wizard. diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/edit-links.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/edit-links.md new file mode 100644 index 00000000000..18e01e15599 --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/edit-links.md @@ -0,0 +1,6 @@ + * **Select your protocol** + * [OIN catalog properties](/docs/guides/submit-oin-app/openidconnect/main/#oin-catalog-properties) + * [Integration variables](/docs/guides/submit-oin-app/openidconnect/main/#integration-variables) + > **Note:** See [Update integration considerations](#update-integration-considerations) for backwards compatibility with integration variables. + * [OIDC properties](/docs/guides/submit-oin-app/openidconnect/main/#properties) + * [Enter test information](/docs/guides/submit-oin-app/openidconnect/main/#enter-test-information) diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/generate-instances.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/generate-instances.md index c466c1403c0..7272addb939 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/generate-instances.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/generate-instances.md @@ -1,4 +1,4 @@ -1. Create an instance for your updated OIDC integration. See [Generate an instance for OIDC](/docs/guides/submit-oin-app/openidconnect/main/#generate-instances-for-testing). +1. Create an instance for your updated OIDC integration. See [Generate an instance for OIDC](/docs/guides/submit-oin-app/openidconnect/main/#generate-an-instance-for). 1. Assign test users for your generated instance. See [Assign test users to your integration instance](/docs/guides/submit-oin-app/openidconnect/main/#assign-test-users-to-your-integration-instance). diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/required-app-instances.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/required-app-instances.md index 9d02e81ce38..0b95f7bca1a 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/required-app-instances.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/required-app-instances.md @@ -1,9 +1,9 @@ -The **Required app instances** section shows you the instances detected in your org that are available to test your integration. It also shows you the test instances required for the OIN Submission Tester based on your selected protocols: +The **Required app instances** section shows you the instances detected in your org that are required for the OIN Submission Tester: * The **CURRENT VERSION** status indicates the instances that you need to test your current integration submission. * The **PUBLISHED VERSION** status indicates the instances that you need to test backwards compatibility. -[Generate an instance](#generate-instance) to test the specific protocol if **No instance detected** appears next to the protocol. +[Generate an instance](#generate-an-instance) to test the specific protocol if **No instance detected** appears next to the protocol. > **Notes:** > * Generate separate instances for testing if you support two SSO protocols (one for OIDC and one for SAML). The OIN Submission Tester can only test one protocol per instance. diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/edit-links.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/edit-links.md new file mode 100644 index 00000000000..10c8c11a703 --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/edit-links.md @@ -0,0 +1,6 @@ + * **Select your protocol** + * [OIN catalog properties](/docs/guides/submit-oin-app/saml2/main/#oin-catalog-properties) + * [Integration variables](/docs/guides/submit-oin-app/saml2/main/#integration-variables) + > **Note:** See [Update integration considerations](#update-integration-considerations) for backwards compatibility with integration variables. + * [SAML properties](/docs/guides/submit-oin-app/saml2/main/#properties) + * [Enter test information](/docs/guides/submit-oin-app/saml2/main/#enter-test-information) diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/generate-instances.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/generate-instances.md index 10f1b2bb918..f6d09a7a8f3 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/generate-instances.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/generate-instances.md @@ -1,4 +1,4 @@ -1. Create an instance for your updated SAML integration. See [Generate an instance for SAML](/docs/guides/submit-oin-app/saml2/main/#generate-instances-for-testing). +1. Create an instance for your updated SAML integration. See [Generate an instance for SAML](/docs/guides/submit-oin-app/saml2/main/#generate-an-instance-for). 1. Assign test users for your generated instance. See [Assign test users to your integration instance](/docs/guides/submit-oin-app/saml2/main/#assign-test-users-to-your-integration-instance). diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/required-app-instances.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/required-app-instances.md index 5e3c891a184..fef3b45d89b 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/required-app-instances.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/required-app-instances.md @@ -1,9 +1,9 @@ -The **Required app instances** section shows you the instances detected in your org that are available to test your integration. It also shows you the test instances required for the OIN Submission Tester based on your selected protocols: +The **Required app instances** section shows you the instances detected in your org that are required for the OIN Submission Tester: * The **CURRENT VERSION** status indicates the instances that you need to test your current integration submission. * The **PUBLISHED VERSION** status indicates the instances that you need to test backwards compatibility. -[Generate an instance](#generate-instance) to test the specific protocol if **No instance detected** appears next to the protocol. +[Generate an instance](#generate-an-instance) to test the specific protocol if **No instance detected** appears next to the protocol. > **Notes:** > * Generate separate instances for testing if you support two SSO protocols (one for OIDC and one for SAML). The OIN Submission Tester can only test one protocol per instance. diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/edit-links.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/edit-links.md new file mode 100644 index 00000000000..3fe333deca9 --- /dev/null +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/edit-links.md @@ -0,0 +1,6 @@ + * **Select your protocol** + * [OIN catalog properties](/docs/guides/submit-oin-app/scim/main/#oin-catalog-properties) + * [Integration variables](/docs/guides/submit-oin-app/scim/main/#integration-variables) + > **Note:** See [Update integration considerations](#update-integration-considerations) for backwards compatibility with integration variables. + * [SCIM properties](/docs/guides/submit-oin-app/scim/main/#properties) + * [Enter test information](/docs/guides/submit-oin-app/scim/main/#enter-test-information) From 1c38ae1d2981c9b0a668b6ca6f62f0cb6a7ec6fe Mon Sep 17 00:00:00 2001 From: Van Ngo Date: Mon, 10 Feb 2025 10:44:43 -0500 Subject: [PATCH 11/28] Edits to generate-instances, required-app-instances, test-instance snippets --- .../guides/update-oin-app/main/saml2/test-instance.md | 2 +- .../guides/update-oin-app/main/scim/generate-instances.md | 4 +--- .../update-oin-app/main/scim/required-app-instances.md | 8 ++++---- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/test-instance.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/test-instance.md index 7f86a5e3c27..2d77b3f5f75 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/test-instance.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/test-instance.md @@ -2,4 +2,4 @@ For an SSO integration, use the OIN Submission Tester to test the required flows 1. Go to the [Application instance for testing](/docs/guides/submit-oin-app/saml2/main/#application-instances-for-testing) section on the **Test integration** page. 1. Add your test instance to the OIN Submission Tester. See [Add to Tester](/docs/guides/submit-oin-app/saml2/main/#add-to-tester). -1. Run the required tests in the OIN Submission Tester. Fix any test failures, then regenerate the test instance (if necessary) and retest. See [OIN Submission Tester](/docs/guides/submit-oin-app/saml2/main/#oin-submission-tester). +1. Run the required tests in the OIN Submission Tester. Fix any test failures, then regenerate the test instance (if necessary) and retest. See [OIN Submission Tester](/docs/guides/submit-oin-app/saml2/main/#oin-submission-tester). diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/generate-instances.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/generate-instances.md index a83a3d240ad..368cb954626 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/generate-instances.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/generate-instances.md @@ -17,9 +17,7 @@ 1. Click **Save**. Next, [configure attribute mappings](#configure-attribute-mappings). -See [Add existing app integrations](https://help.okta.com/okta_help.htm?type=oie&id=csh-apps-add-app). - -> **Note:** Your SCIM app must support redirect URIs that include the app name (`{appName}`) that's generated after you create your app instance. See SCIM service [authentication](/docs/guides/scim-provisioning-integration-prepare/main/#authentication) for a list of redirect URIs required. Your app name appears in the **General settings** tab or in the Admin Console URL when you're viewing the instance page. +> **Note:** Your SCIM app must support redirect URIs that include the app name (`{appName}`). This app name string is generated after you create your app instance. See SCIM service [authentication](/docs/guides/scim-provisioning-integration-prepare/main/#authentication) for a list of redirect URIs required. Your app name appears in the **General settings** tab or in the Admin Console URL when you're viewing the instance page. #### Configure attribute mappings diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/required-app-instances.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/required-app-instances.md index 72e221af94d..bc52000fdfd 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/required-app-instances.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/required-app-instances.md @@ -1,13 +1,13 @@ The **Required app instances** section shows you the instances detected in your org that are available to test your integration. It shows you the test instances required for the OIN Submission Tester if your integration also supports SSO: * The **CURRENT VERSION** status indicates the instances that you need to test your current integration submission. -* The **PUBLISHED VERSION** status indicates the instances that you need to test backwards compatibility for SSO. If your integration only supports the SCIM protocol, then no published version instance is required. +* The **PUBLISHED VERSION** status indicates the instances that you need to test backwards compatibility for SSO. If your integration only supports the SCIM protocol, then the OIN Wizard doesn't require a published version instance. -You need to [generate an instance](#generate-instance) to test the specific protocol if **No instance detected** appears next to the protocol. +[Generate an instance](#generate-an-instance) to test the specific protocol if **No instance detected** appears next to the protocol. -> **Note:** If your integration also supports SSO: +> **Notes:** If your integration also supports SSO: > * You can avoid creating another app instance for SSO testing if these conditions apply: > * Your integration supports SCIM and one SSO protocol. > * Your integration doesn't support SSO JIT. > * The **Create User** SCIM operation is enabled. -> * You should already have an instance of your published integration for SSO backwards-compatibility testing. The OIN Wizard ensures that an SSO published instance is available in your org before you update your integration. +> * You should already have an instance of your published integration for SSO backwards-compatibility testing. The OIN Wizard ensures that an SSO published instance is available in your org before you update your integration. If you don't have a published-version instance for SSO testing, exit the OIN Wizard and create the SSO OIN-published instance. See [Add existing app integrations](https://help.okta.com/okta_help.htm?type=oie&id=csh-apps-add-app) to create an OIN-published instance for backwards-compatibility testing. From 07a1684acad2f43aeaa2c74e33c7d9b6dc6d1f9d Mon Sep 17 00:00:00 2001 From: Van Ngo Date: Mon, 10 Feb 2025 10:58:00 -0500 Subject: [PATCH 12/28] Update edit-links snippet to raise acrolinx score --- .../update-oin-app/main/openidconnect/edit-links.md | 11 +++++------ .../guides/update-oin-app/main/saml2/edit-links.md | 11 +++++------ .../guides/update-oin-app/main/scim/edit-links.md | 11 +++++------ 3 files changed, 15 insertions(+), 18 deletions(-) diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/edit-links.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/edit-links.md index 18e01e15599..b84155e55d1 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/edit-links.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/edit-links.md @@ -1,6 +1,5 @@ - * **Select your protocol** - * [OIN catalog properties](/docs/guides/submit-oin-app/openidconnect/main/#oin-catalog-properties) - * [Integration variables](/docs/guides/submit-oin-app/openidconnect/main/#integration-variables) - > **Note:** See [Update integration considerations](#update-integration-considerations) for backwards compatibility with integration variables. - * [OIDC properties](/docs/guides/submit-oin-app/openidconnect/main/#properties) - * [Enter test information](/docs/guides/submit-oin-app/openidconnect/main/#enter-test-information) +* [OIN catalog properties](/docs/guides/submit-oin-app/openidconnect/main/#oin-catalog-properties) +* [Integration variables](/docs/guides/submit-oin-app/openidconnect/main/#integration-variables) + > **Note:** See [Update integration considerations](#update-integration-considerations) for backwards compatibility with integration variables. +* [OIDC properties](/docs/guides/submit-oin-app/openidconnect/main/#properties) +* [Enter test information](/docs/guides/submit-oin-app/openidconnect/main/#enter-test-information) diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/edit-links.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/edit-links.md index 10c8c11a703..ce5b790bb02 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/edit-links.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/edit-links.md @@ -1,6 +1,5 @@ - * **Select your protocol** - * [OIN catalog properties](/docs/guides/submit-oin-app/saml2/main/#oin-catalog-properties) - * [Integration variables](/docs/guides/submit-oin-app/saml2/main/#integration-variables) - > **Note:** See [Update integration considerations](#update-integration-considerations) for backwards compatibility with integration variables. - * [SAML properties](/docs/guides/submit-oin-app/saml2/main/#properties) - * [Enter test information](/docs/guides/submit-oin-app/saml2/main/#enter-test-information) +* [OIN catalog properties](/docs/guides/submit-oin-app/saml2/main/#oin-catalog-properties) +* [Integration variables](/docs/guides/submit-oin-app/saml2/main/#integration-variables) + > **Note:** See [Update integration considerations](#update-integration-considerations) for backwards compatibility with integration variables. +* [SAML properties](/docs/guides/submit-oin-app/saml2/main/#properties) +* [Enter test information](/docs/guides/submit-oin-app/saml2/main/#enter-test-information) diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/edit-links.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/edit-links.md index 3fe333deca9..ccc72ac6940 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/edit-links.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/edit-links.md @@ -1,6 +1,5 @@ - * **Select your protocol** - * [OIN catalog properties](/docs/guides/submit-oin-app/scim/main/#oin-catalog-properties) - * [Integration variables](/docs/guides/submit-oin-app/scim/main/#integration-variables) - > **Note:** See [Update integration considerations](#update-integration-considerations) for backwards compatibility with integration variables. - * [SCIM properties](/docs/guides/submit-oin-app/scim/main/#properties) - * [Enter test information](/docs/guides/submit-oin-app/scim/main/#enter-test-information) +* [OIN catalog properties](/docs/guides/submit-oin-app/scim/main/#oin-catalog-properties) +* [Integration variables](/docs/guides/submit-oin-app/scim/main/#integration-variables) + > **Note:** See [Update integration considerations](#update-integration-considerations) for backwards compatibility with integration variables. +* [SCIM properties](/docs/guides/submit-oin-app/scim/main/#properties) +* [Enter test information](/docs/guides/submit-oin-app/scim/main/#enter-test-information) From e07719cc7b2ce312216b9b2b5eff389f3e428cfe Mon Sep 17 00:00:00 2001 From: Van Ngo Date: Mon, 10 Feb 2025 11:27:53 -0500 Subject: [PATCH 13/28] Increase score for saml2:edit-links --- .../docs/guides/update-oin-app/main/saml2/edit-links.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/edit-links.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/edit-links.md index ce5b790bb02..ac1df8d6b7a 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/edit-links.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/edit-links.md @@ -1,5 +1,5 @@ * [OIN catalog properties](/docs/guides/submit-oin-app/saml2/main/#oin-catalog-properties) * [Integration variables](/docs/guides/submit-oin-app/saml2/main/#integration-variables) > **Note:** See [Update integration considerations](#update-integration-considerations) for backwards compatibility with integration variables. -* [SAML properties](/docs/guides/submit-oin-app/saml2/main/#properties) -* [Enter test information](/docs/guides/submit-oin-app/saml2/main/#enter-test-information) +* [SAML 2.0 properties](/docs/guides/submit-oin-app/saml2/main/#properties) +* [Test information](/docs/guides/submit-oin-app/saml2/main/#enter-test-information) From 4acd5583ec3f2d23945f5a650f9b57f20e38c2d1 Mon Sep 17 00:00:00 2001 From: Van Ngo Date: Mon, 10 Feb 2025 12:55:34 -0500 Subject: [PATCH 14/28] More edits for SCIM use case: required-app-instances and generate-instance.md --- .../docs/guides/update-oin-app/main/index.md | 4 +- ...rate-instances.md => generate-instance.md} | 0 ...rate-instances.md => generate-instance.md} | 54 ++++++++----------- .../main/scim/required-app-instances.md | 14 +++-- 4 files changed, 36 insertions(+), 36 deletions(-) rename packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/{generate-instances.md => generate-instance.md} (100%) rename packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/{generate-instances.md => generate-instance.md} (62%) diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md index 6a3268b15cd..53c74bbe64b 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/index.md @@ -81,7 +81,7 @@ To update a previously published OIN integration: -1. Update your integration as required in the following sections of the OIN Wizard flow: +1. Click **Configure your integration** to proceed to update your integration as required in the following sections of the OIN Wizard: @@ -109,7 +109,7 @@ Generate instances for testing your updates directly from the OIN Wizard. See [R #### Generate an instance - + ### Test your integration diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/generate-instances.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/generate-instance.md similarity index 100% rename from packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/generate-instances.md rename to packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/generate-instance.md diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/generate-instances.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/generate-instance.md similarity index 62% rename from packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/generate-instances.md rename to packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/generate-instance.md index 368cb954626..5786f03b53c 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/generate-instances.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/generate-instance.md @@ -21,9 +21,7 @@ #### Configure attribute mappings -> **Note:** Configure attribute-mapping instructions are only for SCIM integrations. - -SCIM integrations that are submitted through the OIN Wizard have a default set of user attribute mappings. The user schema in your SCIM app might not support all of these attributes. Ensure the integration that you're submitting to Okta reflects the attributes that are supported by your app. The OIN team uses the attribute mappings in your test instance for your integration provisioning settings in the OIN catalog. +SCIM integrations that are submitted through the OIN Wizard have a default set of user attribute mappings. Update the attribute mappings to reflect the attributes supported by your app. The OIN team uses the updated attribute mappings in your test instance for your integration provisioning settings in the OIN catalog. After you've enabled the provisioning API connection in your test instance, configure user attribute mappings to and from Okta in the **Provisioning** tab of your instance: @@ -34,17 +32,7 @@ After you've enabled the provisioning API connection in your test instance, conf The **Provisioning to App** settings appear. The provisioning operations are already set by default from the [SCIM properties](#properties) section when you configured your integration. 1. Scroll to the **{yourApp} Attribute Mappings** section. - - * Delete attributes: - 1. Click **X** next to the attribute that you want to delete, and then click **OK** to confirm. - - Repeat this step until you remove all the mappings for the attributes that you want to delete. - - 1. After removing all the mappings for the attributes that you want to delete, click **Go to Profile Editor**. - - 1. In the Profile Editor, delete all the corresponding attributes from the mapping by clicking **X** next to the attribute and then **Delete Attribute** to confirm. - - Repeat this step for all the attributes that you want to delete. +1. Click **Go to Profile Editor**. * Add attributes: @@ -61,34 +49,38 @@ After you've enabled the provisioning API connection in your test instance, conf 1. Click **Save**. Repeat these steps for all SCIM attributes that you want to map (from Okta to your app). -
![Displays the map attribute dialog.](/img/oin/scim_check-attributes-14.png)
- 5. After you update the mappings from Okta to your app, click **To Okta** in the **Settings** section. - 6. Scroll to the **{yourApp} Attribute Mappings** section. Find the attribute that you want to update and click **Edit**. A dialog appears with two dropdown fields next to **Attribute value**. - 7. Select **Map from {yourApp} App Profile** from the first dropdown list. - 8. In the second dropdown list, select the SCIM attribute that you want to map to the Okta attribute. - 9. Click **Save**. + 7. After you update the mappings from Okta to your app, click **To Okta** in the **Settings** section. + 8. Scroll to the **{yourApp} Attribute Mappings** section. Find the attribute that you want to update and click **Edit**. A dialog appears with two dropdown fields next to **Attribute value**. + 9. Select **Map from {yourApp} App Profile** from the first dropdown list. + 10. In the second dropdown list, select the SCIM attribute that you want to map to the Okta attribute. + 11. Click **Save**. Repeat these steps for all SCIM attributes that you want to map from your app to Okta. -After you complete your attribute mappings, you're ready to [test your integration](#test-your-integration). - ---- + * Delete attributes: -Depending on the nature of your updates, you may need to generate instances for testing: + 1. In the Profile Editor, click **Mappings**. + 1. Click **{yourApp} to Okta User** at the top of the page. + 1. Scroll to the attribute that you want to delete, click the mapping icon (yellow arrow) and select **Do not map**. + 1. Click **Save Mappings**. + Perform **Do not map** and **Save Mappings** actions for all attributes that you want to remove from your app to Okta mappings. + 1. Click **Apply updates now** to save all the attributes you unmapped. - * If you're only updating app profiles, then you don't need to create an app instance for backward-compatibility testing. You can test the app profile updates in the updated instance version of your submission. See [Generate instance for testing](#generate-instances-for-testing) and [Configure attribute mappings](map-profile-attributes). + 1. In the Profile Editor, click **Mappings**. + 1. Click **Okta User to {yourApp}** at the top of the page. + 1. Scroll to the attribute that you want to delete, click the mapping icon (yellow arrow) and select **Do not map**. + 1. Click **Save Mappings**. + Perform **Do not map** and **Save Mappings** actions for all attributes that you want to remove from Okta to your app mappings (similar to the **{yourApp} to Okta User** steps). + 1. Click **Apply updates now** to save all the attributes you unmapped. - * If you're updating all other properties from the **Configure your integration**, and **Test integration** pages, then you need a backward-compatible instance for testing: - * If you tested and submitted your published integration from the same Okta Developer Edition org, you might have an existing backward-comptible instance already. Use this older app instance version to test backward compatibility. See [Testing backward-compatibiity]. - * If you don't have an instance based on the published integration, create an instance of the published integration. See [Generate a published OIN catalog instance](generate-a-published-oin-catalog-instance) OR See [Add existing app integrations](https://help.okta.com/okta_help.htm?type=oie&id=csh-apps-add-app) to create an instance for backwards-compatibility testing. + 1. In the Profile Editor, delete all the corresponding attributes from the mapping by clicking **X** next to the attribute and then **Delete Attribute** to confirm. - > **Note:** The **Generate instance** option is disabled if you have five active instances in your org. [Deactivate instances](/docs/guides/submit-oin-app/openidconnect/main/#deactivate-an-app-instance-in-your-org) that you're not using. + Repeat this step for all the attributes that you want to delete. ---- -> **Note:** Okta recommends that you execute the Runscope tests on a published-version instance of your SCIM integration, but it's not a requirement for submission. +After you complete your attribute mappings, you're ready to [test your integration](#test-your-integration). diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/required-app-instances.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/required-app-instances.md index bc52000fdfd..2190ad92f16 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/required-app-instances.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/required-app-instances.md @@ -1,9 +1,17 @@ -The **Required app instances** section shows you the instances detected in your org that are available to test your integration. It shows you the test instances required for the OIN Submission Tester if your integration also supports SSO: +The **Required app instances** section shows you the instances detected in your org that are required to test your integration. -* The **CURRENT VERSION** status indicates the instances that you need to test your current integration submission. +* The **CURRENT VERSION** status indicates the instances that you need to test your current integration submission. [Generate an instance](#generate-an-instance) to test SCIM if **No instance detected** appears next to the **SCIM** label. * The **PUBLISHED VERSION** status indicates the instances that you need to test backwards compatibility for SSO. If your integration only supports the SCIM protocol, then the OIN Wizard doesn't require a published version instance. -[Generate an instance](#generate-an-instance) to test the specific protocol if **No instance detected** appears next to the protocol. +Depending on the nature of your updates, you may need to generate instances for backwards-compatibility testing. Okta recommends that you execute the Runscope tests on a published-version instance for backwards compatibility, but it's not a requirement for submission. + + * If you're only updating app profiles, then you don't need to create an extra app instance for backward-compatibility testing. You can test the app profile updates in the updated instance version of your submission. See [Configure attribute mappings](#configure-attribute-mappings). + + * If you're updating all other properties from the **Configure your integration**, and **Test integration** pages, then Okta recommends backwards-compatibility testing: + + * If you tested and submitted your published integration from the same Okta Developer Edition org, you might already have an existing backward-comptible instance. Use this older app instance version to test backward compatibility. See [Testing backward-compatibiity]. + + * If you don't have an instance based on the published integration, exit the OIN Wizard and create an instance of the OIN-published instance. See [Add existing app integrations](https://help.okta.com/okta_help.htm?type=oie&id=csh-apps-add-app) to create an OIN-published instance for backwards-compatibility testing. > **Notes:** If your integration also supports SSO: > * You can avoid creating another app instance for SSO testing if these conditions apply: From 6a2adbdc46e73ff9a5f6bb7ce31fc59da760a6bc Mon Sep 17 00:00:00 2001 From: Van Ngo Date: Mon, 10 Feb 2025 12:56:59 -0500 Subject: [PATCH 15/28] MOre generate-instance snippet changes --- .../main/saml2/{generate-instances.md => generate-instance.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/{generate-instances.md => generate-instance.md} (100%) diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/generate-instances.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/generate-instance.md similarity index 100% rename from packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/generate-instances.md rename to packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/generate-instance.md From 568e764b40bc1610f77ab6e1dc509d62d0211930 Mon Sep 17 00:00:00 2001 From: Van Ngo Date: Mon, 10 Feb 2025 16:48:46 -0500 Subject: [PATCH 16/28] Add mapping instructions and image --- .../public/img/oin/scim_unmap-attribute.png | Bin 0 -> 121342 bytes .../main/scim/generate-instance.md | 29 ++++-- .../main/scim/required-app-instances.md | 10 +- .../update-oin-app/main/scim/test-instance.md | 96 +++++++++--------- 4 files changed, 74 insertions(+), 61 deletions(-) create mode 100644 packages/@okta/vuepress-site/.vuepress/public/img/oin/scim_unmap-attribute.png diff --git a/packages/@okta/vuepress-site/.vuepress/public/img/oin/scim_unmap-attribute.png b/packages/@okta/vuepress-site/.vuepress/public/img/oin/scim_unmap-attribute.png new file mode 100644 index 0000000000000000000000000000000000000000..9812092543c45b31891b62eeffb9cd9ab2791fab GIT binary patch literal 121342 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%0D5Is~=bA<5P^aUE8_bCiMG{Tq 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�;$QJm)34Hz)#OrCP`+Bv2|teT zKp9B4Zh`q(%G>~Nt2)K_5h)HL-J8D!79Dd@6`~3{_=NM?=?W=>tfwlZPuX-vaG@=hBDX1b79Zw zJ2z@5eTAzmc>8EWeGRa!Kq?vZUh@iw)>X~^)Q7vmFeu3Zm%)N8Es?K4qFAd+VwQt8 zyR-`v{v6RkcIDt0_;o{E60Q_l_Bvmr2j0T|VzB9NcE4Sa*#`3qhN~ME3uL#B_l*8? z%=TcUZy`NI)_0sG3MzN-*Jo0ooc}x8Kv8m?Ru?zhWA;D!4Or>%<7}Lke?=V*<|?`+ zA+dTC@V#GWhWkWeQCHUR04>6@pwhGMnFu|EUT1J2HYzd^Xs4cuBYs0@6t(z1?ok0X z4{e1AFP_`jm*>tD>W^ZLSS_PHpGxwJK(nadvv(L7$SkPXTkA(v)>#h6bITSE=JQ&O z%a?Kd!iXWa`O@k3oUqXQd*j>=IX=lFGP6qE4V{nqPEKxmHfaKI7#SP1h1wP;B-ghg zLboqf6EVcFNo9jijMMqCsC|uwc+C3gO-k0n$;VJTYtEFG1u}sUfh{Vt*BOD@kQ zSmz&lh^#+iT#XQl=WQ68^V+EOkJs(z5=V#SG;eY8`9xy-m$?~LY3t4n7SU}|M+E$8 zZ*}ZP;n}#aOZAKlH`J1bCH6e`+1B)OSCxgOej{~R04Y|xlp2q-m&RpKyAIm@K}Se7p3P6hYvSP!gd&Ej%g}i(A}M$Y$~)n2k8F` z;PBu}RHeNEVEk0x4QsmjzKpnj!^x^OBAMG7ro2e_I;#x_&O{_Gn%4mlna6Kd+ve7G?U|f=x5mF47!@hBc9hyp z%_PsP3|o0T9ocfFA`m-w+bo&Vz{|pJYnqHKwgMF>xk5>{8VXeBdxSs)XQ5@{15ITp z^&w75$uC;i=ZmB9hV$qGkHu1@scCI>jX0V98?Yt;^_zkUN5xN7E3(i$|KM?k2Q+Xu zJ{KrOHIZ)TBe#k~f!avS7_uG;-Eds_cWCe&e+XzkQ!69{b#u6e#hv*{dEi9aHRof_ z5{(I_g4KeL#}Tvw*o*QC9OoDzqJdJF$&xAetfTkyp$SiKqY@fu44%ars$E|v%w@MU_}mq z!t34@wmIs*YSFVK7u*clL1VpKDxp5+NS}#cnBqSoSsj=rB!9UpB-=kA_!2>OnDsu4 zG@c|RFgcO7I$I(?z&Hw_2;ov?M~ezYpAwyCA-h$vD3$dL9UBWg7nb3;3mZVSC?>60 z0d!pbs;-rzw;fnWI%Xn#4<;m3Fw0@;saDgzTgu6K(>Y*wpsm=#Rly=abB3a#3giA9 z0tav~cdGYq)0=vFLV~+{&JDD7BMHY|OK4}+i>#qsXEh;o6|FBaK z`1QQNa=)pd@S5IoHBn&dL!-q2ceEWd3_9u56Jw2h}4#@>3B+<1Y4+lqBp3psEF>BSme1VrD zU&wf~ik-$W%&LHc`zbmk97Owk&@;8t)ML38zS&t7CQggznc+|WGn2vqXZ2lk2GfhUW4cfQT&R>g-^vdZJvSb+Dtc^UhPh$wv?z*#6smMOHhdFFwvXEc5kq@*_gnF zGJ_0pwsE}f#cTom)Tc1^U!_OpW29voXH4>34Tt_)(lgz`Bv=bOc^x-X?EV@=*F7H4 zQVZ-uP4R_iJGgDpMb&v~DA9A$d)i(~WYS$q|VPBeTL+ za5|bTkTdRE_1G?mnlvFC#Fc}p8!usSMi3DbAfo25B5~R!w-G(qjD;1SAJn54G0mY^ zscI0n>kI0T7=?KW{$Qe|g|tL=qqO4O#fXzZ1k1lJx){V$E_`wWOG}8$(xo_y(#AVP z1sC5m?Vw}jWC`2-tU|X}d(4n!{AUk`Ko-q7_MA30!RqlK+}we|bUEW>0(KTTQcEim zIil8@^WXDLK8vY4_QB(6j_*sYxv8t#5tWhMr^&nEl)lSo>2T!}HXQ2_Plp{$uuem` zKFBbb%<))-P)-x$FkELd;_a(AIb-z@N&kSi$L{l(#mVKsJM`ea6ZG9X! z?9$I{8ue3jL3kBjYEo?4=JbCxZwvPyNT%d2Hqk5AtvYHje=z|>9+#1XK~kR?l&n@r ztLqiMt21WBA|&PC=iI4u4($zpIPA!-pGMt>jz=}js)w($tMhU7akuXBjqdxa^*B#^ zyoUlc(|ses=a-6F1X!1e`1GqGIdg| zeWF49+2oC7X7{BIU?y%S{W;pnECLPS(a63m&{=7Cy!|Pc{H1hO`NL|J1uphl0=goU z0*!*3BhPn2{S2)dJ8KaWrZl?Yx>&kT!CIN2&}5i8TT2h|Kr|cw3ou$A8ko-8t)1*!zX8K1sZ0t9UUr z17{m&|GoZ6LA9>rJ{sF}^f9lJGxT_L8q}_jbS$VIuL;4OlQkpF3YGsos9`jyD&)VG zkTX7xz3XoBV#U<=sMx(fN!1>L*DjFX7&t)*aY*n8$DVq|TY~OVqw6|FBhl2^9R*eu zOHq$Vk&6`VLS1heXB4KK7nKhXmhYx24!?VtVxm5a6%fWT7oj;~e>e!mKTgb#Ao3Zk z_vf+FrVe0Z7IyK7E9{;s+0-SH^Oo<+eYLScv-(nSGunTbT1KdQ49!=lX<8VX6oNrG zhjs8&OQxMyEzXLzFSFK)TzvbLx1)m!i4yznxR@0-VSoaWQy8Q|ouNmGjpO2X;~kg? zO0qSZA$NC_u=_Z4j+{Y0wFmzW{ln@9feH3p2=GEF_sR;D520A-YAh$)?7!p`vClYC zA7E??j~Ir+E|g+X=CBWOZx~wNdbrN1ytnou6mE*x{)GRz*nbX9fn1)R;$ze^oKC<&QpR}c=a`w>ui;R=k>-5`tyE4`H8Zsa-!0_z_#O3P1+*Et2*BXyDOC_#j=z{i8I}IPRinJ#)~9$h?|#&X5$CPTwj~`V*3yD8`%%hWg7Izk%yG93(k(^Y)U0jDuid zo_!!GgAEJ32XiD0553VG%!)fXRLyGuM6Pdq7%0P(WVYrUnzfDVIJ!p zcEn|naQLDl9r!_KMM%BG_1#0&PVTw&Gacrt<{2`Zg&AM)vv;0s-|CR%zGiAD6W6{k z%IgEQ3lNeK*k%5h2C=FZJNpa?lQ4WHJQ{(75}c=__#6UIPKQ(y?cfeB&2ug5F`}0n z%E_(Q$gp_pF&w|4jRgxlrW@}p)_0r&SsVe^tS;DDoGiLy-s6Sx2azB&47RmH|Uj);PG|Mjh7)Hpv*(o|2 zZ_{NQ(w-H6d8w2BaSigLQpQMjdUx;gNe%`1okZ5n1{WWq|CHx(Wb+Y|fUMT=`&tDL zuyu0UQm%2pmW4n-tu?~cCf&`?zI9fU{}^$d1HWB`XuUM6vg!+ewX}YxgPpSvv>o>g zhqXNHFX=%H!4l5#8mXHP;eZvBxmz^4nRblgS2akw_2QMxtFg_jp8CjF9e->O1;%SV zZl5-nNLe*Js*3k&bsOnR-pg7+hvC_`Ja;E%s`+)gGu6oNA5Cm?;k1n;XUTgMAUz9Z zz77*%``~#T(^7=?#CeChu#;%X7J<*^!@@tOH6V1NRG-n%fXx%I&KA{i+XChPIhE0A zBomm4+@Qm#1WOi-k?|%p^oQtqg zO|2sxhocL=25|dS*S$LTC$Za6`*oCFNw+yoj(5zP7kD)ANkC64wYj}EA7x1VWM7>e zqI{L%4Wd?-Fi2ohNgCmFJRXklO{GW@m-Q5iHtx)LyJc-USvOE7or^!4ml@oCnWf8X z^0jZ5Hb^?bL89qcLarok1aXrI_*o$$y0_i(STPh5x?bfzlmGSCjt6Tx^L z;%aKTf5|x5K#$uH!7jaape|uJhobLmk{WqT!SVJrJmM4wsjcI;m#xDQ6C{) zhB>hBHo-gV4;!sVYCqvy5%%64$*L{MRE4ouYzawe8C^V8Es9|g1vjN^2*$$#_4Bmj z2LEro>j_6u4G#qPz0ws~=6 z;&xDT==NRl3@>fK1rEP0Bb#G{B1EXCjy2L1ZN~F40Nn+P7S%63A5hmro@k*iQ8N7a2<=)I42yyB1@FC6;>xdMIqic5ZA=wsrUM<1=%K`3Cj`a>DykYXO8N8 zW%FIU%&A>c>?$=LiiR7J!?s%KmiW>SvwSnA8l^vI0`jF7(3NoCC!2zUTt?sbDSQNzb%fu!k#%?zw8jd{xPfP3`_ISS(rO1(_OET3SYmQ#E&JtUsjp+H6 z=;@3awg3yR#1GtHSa$*PX}o3pB=+{cE_*GgKyXo=hV&JIjDogA6O&$v`I5Oi5qgUNG6MeJ{z2c0xNAx?LUu^1^iUtv(Hcn0+-K!-ra1H zwenqOoHOH}OL$|@h8~<0ej@=El83h)4cfNHF-QXIh|6W-p$!pJb4RO@OhdUc?R=40 z5_mnj)K89T<60repWc&W1#JTEP+G&uz#I?{B1~hv=KHHL84JMiFy%As_$@W?A>%>v zS3cn}B49+lA9&`Zz<%FBP^EU-{ejn!K1Jc642a=#~t z{jf(Y3)`T)_oV!9$PQ*1C&n0O;}zudMQtMk3yhO-3I_}t!lls1Uf;c_vupoQ&moYt z4mkxaDr$r2lRc*>Qr<-EwmTEj1YgATuUy_Q_T>vD&{pp^)OsM4GhlL^?3Uq7$SLZt z=ND7YI7-G!cr_}?;avYsZ1;P&I_*iwW$)V*AxHgWG-~gJu(CwgfWn-hxccswrvT7U!QC}@-it4={nTc> zE)cSp_^O9ICGp^RL}0GdVtO7}OZ9dB{#Bvh6V>GU)4Uc zdpYE;9tV)zZGHbk03^jn(Y${rzmjf*c>~M_5sRa{Ugdo0bBl4>&IGQ^wmO zB_jn%K_)(%X%;XjbqubLw+$2a>FMpyY*(U6k5SREBQz^GCY5o%knSI#WCV5Q8D-W| zF^mw(11Bf@3XCMLVKx7a0*`fvi60r3DJf#b)vsbpg&4aDJ#&pOwSO6|xV0Mrf zz(MX?{@{bz|1$EDTbFgkIyN=*uKmZOa*yn%qM)9llU`Gd*~#V>9u`s|_v7=HygzUd z5*WyFz064%%}BSTkp-d_kyXJA%Jhp`O&Ksd!IPM<tT<4)}@lf`)X!)J{`IgYxGj z?@u`3yU`@0 z0!6)wR!Bcyqy+*f{xFDmAB%^X(>T3`{fElTA8ZWN9;^WtDm^7EDq6gqwC5&eW*aYl z=d|G7XInM~kpHR%dR2Ta7S&mQTaq5JZVTXvD}=rq3f4sr!`y4D52vlGd-UQ9@4#8b zNMJE66EFuE1U>LhFlUuof5$RC9;O@2xs&bI+3L$+-hQ<(7D%ZD1pT|9x4xr2`sNm> z7Y6}W)_UeFjuLoMc(;H=lKG|OGb0dBV&o0@si^KFRJF!61zEn+NBw>ue#+;2xfV6^z=~uOEF}ZfBCG-DEt-Z((7Kl2m%S$5 zW3Sb2M;h2=ST6u)x>tqP<)dNHy#>GugoPD|9A{c`DE&|pnQ;FQ)&?i}ou zbSZ$RO~GehPifS4@REF>ri#xf!|In6+)NTU^=DH}Y7Vh@!EcX}UHuzQ_X_GOKTq?W zGn+GcyboKMmMy1xodD}MUs{mQx|c$HXPX*lXmd_&5@gPG`p{wI-5sAuZtF{0&SF1ddBOk>?mV1=WeGtqUgWUO_g6F)1a&oypgT)qgCinBf6 zU$8D)UJaf3m5)w5?Bg{rVd0*y4Q0s{y&`QdBXb*6dq@o3#`XcL+|+>k+aEGO@~)># zQ*%9$&4Id6Z9q9oC{5ZnLLlf$T~ur0xiyrm;eDNSJVFeN0sdwFD3pPrZD^XJN)B1$ zG$&}DGvC6$s@gTV2pjYS%uG=u{9iQUEX>2eeg6ni#frfW-d_&G~i(XQ81tP@2$t~kz%kF*4 z5tPjfOJFL#Lu$1IvEnZ=)2iJ;x~4(5XU5c1F5A*K^ZBYFwh3Q> zx{|Nklk?M`;2`@;U)3)SQAhbzom(T-Yq(~lEnDj2^27q_k$E%CfpC!x3$}io;AN>M zV-d^TzC;XdSh&m_$q!RGA;)U7Y!k9 zwb@qwhx?=S)T&;GjKFJ`>A&V$0!*}$=Np#fF%ORF$!zA&`#3W}xpEV|qt}{?57IHlJTTSrPvm z?-9n@{Gw{~2MLeD=z>$q`GLzR)0cIg!})7ymSzH27(DedR}Ik+L!`ZUIx6Oe*o45T z=iUYG*-72!u!PnZ*{*G6G0F_5$N?JoeB$bu&&xus&OmCJ%~?~ohR1<}qn8%>^8E2> zQSw8g=IuvbfGbos-*x6RkC9U^GZ1h$mCy_%5(e^i&~PABbE#R^nWRh?u?RpUR59FjnfOZ~lNbq?I3c+x`naWji7^5j-Iz5QtHv0@upsmK^d=-%Lg!wgR0q35#`~!ayL=;yBCzA6MmK0WW zX|6A~^OtW;1&yEe(~Qv^6jdLpvGs5|U@J4+CCFae+q*c-7&3tP&ll_%-+Z&##eeN> z@<27r0oz+?l}*uPqnMa=l-ix#GX68;#zIN>F*dbeu3;U11peH$h0UzCcOed7NBZ7+ zN$kz_;CW~)Q5b>$YKR6M*&~>DUxF19mKbhPUfJ0v8Wo^37Dc&#a}n{&0B!-WlGjpkGe(JNJT2kL!aX# z)r{*IpF_lw2(NQV8f)mEh8FJn^$gs;J`-)qs`I`M42qEfLl*XLck4Da45j^2Ao4GGV(uYN_1ouXh;=DVr>lVQYH75-wwV~KN170EgN6}FS z&XU#nb;ms_Ebwsj*u<9ng*TNn@In*ngfP+1ffuh`ZcYvLe0nJUy}$SeIY`1@@WJXp za5K*Fe#ga+a!6jl`2si3upIj6Ff)ikC;5eB*rVSV;whteQAbt3-nqM%qrwprK&FjnDJm zyplP1OLWe-2*y&fT2qL38Ro)E#s9T=*)ujC`?e<=0j%hBH8d%Ysh{uGF5*-K38uj} z`oXJ2)rH%z6mibL4yDbV=yon^bPZ+CsHl<(D1N_=-|r7c)SZI0C6}Mr#e-)iiyNI z;oa-8=@vT7-CU9E*8|?3pHtv4w_wOWQ3eE9Xv_6jQfZ-E@+0$9fu~V%zvcXXJO@%s z>)9Muf8m>z{)JGORJwnG+pcY4kEQrW>6dOfGuE)wWx&*Vh~n32kv6JT>rfv7Xf6;OmLl~7`j;dS}mk8Ae1L|R5k znM7Ro@XanmtK>s0W9p)LIlH{V%pd41g5~AWiJ_DYR<#1iAM!6uTHFhK<+}6CKN3_0 z*lgiT*R9i=_W%*v$zRopTvF^a2nC2ve!TMtVT=)v;kzkd>tUn@m(LIM4Lo8Pt{Squ z?O#}U~{ z$~ud=YL1?CqyFVXtdjv!sp}q5#pH=8HbTUe^M;X`1iNmAml`{V=e*=Gt?NhzA92Nd zVMASFf{Du8KCd|p{dHZ5Q z;kUZ8ad`<-ym=i(P4`r3`G!~Vxc;HceWW%jeX(c|opnP0A}ei%CjzuXyYJV6A>vYFlFhb@8e}!cK)>I`GaAXdj6ssMd000f}L##nwvpfR0}Ce z0Im?pRh#H*FV{^2vGL!TUG(+M=Lp%CrWzUS32Az^nJ>PJTzd`+OM<!CdS!1r>C~R}e zs_6CcRmwig=41b4k-rdf5i#nQIl+$3=HHXsN^n02ISy-e-^P{B;G^uFB$}uv??0LN zb=PkVaPS3h0#qfPEa13|xqgq^g!=*2NdUXwrKXJB_LJcIPp!)Z6B|Nx*f4>tJV=5~ z{s;f;86MWyiPJZ3b#;e_ltKF3>8fU%ywn}@8I$e;FZ@RTH7n(t;iRrp&kHDA>qOf< zWYo=kIaEJs09yo1?joj?0WqcOu*w2EL|BLm@~^%8U&-QDDIX9YD&CYX;VQ;@qnh7w z!(#Rc!gIhZRX}1<$z$^0lc^;*My6jgtVR+pRLHg{q{ObD9>j{OuC|;z0*nF7asK&Kr4J&|g-Xe-#q+}475=e6W&L!hYL)OABA7kA7yov_* zo%ery*hIFK`ycWCH+h7BF-+yjA3^)m^M~@1uiGIn9#+$drNA%#(^ja;ek0Aa<6zNGiK0Q0)j z-E2V}#^ zOEN!L8B^I4&OGYQ?17U`LaBwPKh;iYNkVQHk^W3PL0>Vmsy# z5-{_!+!Zn2s&$ASYrfKl-NFAG27wR{<@^mS!et(87D6~xg=mswU>O~OKXxJE-l2PH z0Mqp$@Ha!2i?5P#{ynklH>} zAYey*?Fi0D3~*3(605=Jy+Ge2x!1CXs;I3XMZ`6LST$nF4%qiRan{fSUSp~GDXNUo|3}aG&6@s~6@04Prg<59b<7aPLJyPH4Y0HR` zp)_zY9NH_KWMI@sHf`s0u@U19OPze?V;J!J7BwvS?*t-&78Vvv%{}?D z2ujFC&&F8X{vd!R!E>x$w&ctSs2U~8F!got284#b;WVDUdsOV6fg?PQCP92z`CVlR zs6;pH_i%EEzP9Y|g|VNZ!JPmv-Db@LixauqjE@`nUw&0885*0oea**(y3LV>u?W)# z!?@%b1OFWrP#jJ_o|k`4KN<^`di?rlK~h2*k02{L0AKILqIG^iB)wnb-iyoeX$@@= zFrD)~kJw=y=QC|Ld@i$AGzxI6GZpBSK;wOhdS_^!Pwh|c-~X%z{$2;Cxc8haj`sk1 zHg-#^)A?gXj{kAdD#BHu~@Ha(KRoO^g$kQunKXO^SAGVh%c zvNc_%*Y|tnPaxs7&w4b+?qr3>A1YqM{05LH4#wh-iK6UZ&ioSPPG*Yd-N@U-P_8(cvG$v-GJjyn6M>C}0* zt^uj?QE8qa8+#V`C~4;6rVGWu$Ou5;eYQyw)$00Dt&DYQY2t zNs$*`2=#-AKY!ZBl}*&;E1Qk)+Z4K4N;m$eE(!{fbi0QXj${PH zgKgUZ{_OjcYo@o^TMaT5SMs%hwzDOxmWpVIt{SaE{>%{gIF$(h9ta|2Wv z$8e@uD%`IrA{$1z2L&uzFtfX3D*EjECeQu$lTqK!A@=O>YX40h$L)FdKEkr9v$0!P z>)N(eJQ2Y7dwIj9e~>sjI=yy|D<%Cm0s8M}yDfZA->+f@S8KKy*8TsHSjS3CnnPM6 z>RPpGfS>=)a(i<3T)Y~X66JD5svQl&lz7qMtm`lC>Fu^uZU#Ch%|Vc8@~z0VA*Fq$ z%I~SXJCS=ht3%i@`D~CSf#AN~l?o;rH|6!`v{WtvpgE`Rl{cWEfRSTyH*FDRiO8HjeE1gt;T82BmcXd5#Imh$f(JhR(4~Z|1`XO zXOiuM05o(wtf;1Qv9r`}=~U~pd8NKnVgg$F1Nws2Vo5>e{*tTHSs#Q4pkHs3Cj)su zk@qN>|L>)h*>dE)bV~;`{3b-G^S3@iIDgF+*B*HnoeVwb@iDV39+#!X!WVwYY7>8A z<_|b}=1ks32m~I*#^5%1*Yz{2SYERV$o+pIgCPpS_NhE5{2Bk9gjE~@ISfn8WpaPt zkfcz3Lr%N$$1e+^QZ6no7C&x$EUscU9aqhz;xKnbXm;T))N)Wt1S}3ejUp|?fd?ea z;J06k1n%JB0G}d52T1c4e{L^`{SF$RdjmGdUI3#n_7Hj3d<0ava?k-k8^Q%d*&;eR)Pz3M~2pv$*=;#mjZC6?iI%u5ReU^XGdC@`Row}p&@t)~h z8{e#$kayNT5uTh4VP^SKArq6(gM6=Rs zFDkrAd?tdc4rKyjtO6?DNQ@%~x;lG-rA@gDiQIlTnHJ8HbG_!gHzKYN(BR7> zBk#AfFR}k$U2h#$)z-BSOK+s5yQHMMTM0=I(%s#tbax{uvFYv(>6Q*bTDoh~?Qd;8 z=RD8*eecU3aP5n==bUTCm?Q3S4-s0GV9N;xDgvzIrVVtoSI;{DuOt&RL$-yEjnNb8 zgbvdGb@yXIq)QrF$hA})VI0!}aO!>Fo^^;!9t0>VD!m$b%7yPd04Dn2`;!j+J)n># z(j`kXaO!8A5vV5tAA7MBaU`?4?uSG*gcG1lyvkyh&#Kc9Lt!9wG#?dUGV?F6-n0X$ z&}-q06@yVIh(veJKo<7FSqE*%$-k^D?GymVSbNr1-9PFQpc}jdWjTocdN|)##X|8d zgx9}ir*!~$9)uB}6~wYV2CB{~KP@gUNJ^WByjtcD2xJQYGtk?&LW0SRQL9yT+&OJh znCQ=K%Wa9s13p4hvslQ8T}3eEHh`kCk%%$?HXR8Lj81=VX^V-Oglk&#X^=9cNXG{_ zINdu-c@2SZiJq0HrylGf2R@N02SiNpe{2jPmHSxgU#aN zV)n@oG2#f3pq#gzDv?~L17iM-&{9PR+!s1POlZv?g=M0%2$)ImvF08EA=|$435g{! z28Kx?sgMSl+h*Kp#)&5#H0-i~4_jIj$Q&F8VAgAeO(59+iUbY#R}nNW0{?u5di#T6 zVN`CAH@_vI2_dkFRKNZ5fR?C zHm+K;=jEI&nt%Z328V^YSZYue^HB2*GMP7Z7BcR@) zD~k~DX}rK|2RJb&TA?}Ieu=8l{M!V!_+;{1d>0dvAHtv4(IR=A`XaX9PKn$f<~mKS z0I-9~3&G(y)}GB)jINmu;qWxh##6RJ$e4Ztc;K}L5GMnDei zWK0B~|8uK8ic@riwTmvbLb*l%)kNM<`10peT4wAW zz$ckTVXq*<|9IWpa6?FcWkY`ofBf2Qdnv&U#{yO}l`_E7Vjz+*_d;I3x~7R)Fjz#N zN)6smfY}?-6QUD(5IYdu^=v~W!h8Iair?c~4 z1TEm)UCNpy|Nh^vP(}!QYYSTnd4ol3TeC-70?I{Aa~eC##ZAO5G07c_kI9J{K$Lv7>BKLvjM(?^r07}Ul>kgp8=*_ulSgRt^9pP+oR@s0h7P1|P6E@j5{(1URUARMNw+X!d?IG`krW7Ex^N?SNV zuQW|%{Y{t@rIcmAvu|$#NF}x${epgVV&Of=0zm)6gppi4F~8-SsOs1>_1%;)Jmb77~B=Nl*W>ly_?^JaAi zlOAU{B^=nSr%QXEnLX}geQ&p>r@I4>3uHKKJ+9t63eYPl%%qP9rQ^Vt`xl@Vukte( z@62y#PQ$euDR1mMc2Z_z05;@sUyuJu6$m3Oh9%bAFBnivDo@N_8KS4Z-3Nht<1v)L z&>{_Cp*4gz{0ijF^mGTIToMF;hJ^crKD8a_@&|#Nu$YvFtf=*Ght$8HcGtxM<}C9e z5bbZ?{@f2gCR=ALi;M3Vkfl$8eX_nD!HNzTjCOngjv$fO4M0}q#1_S5Zvp!D6z)5X z;7hQ_@#NmiA=X9oy7cQ{!mXCDLd4dN+fjQfeYQLxi61EvXHbm4&NZsa3KdKOl&Rn0 z%4EL-crr*DR;;Xr3%#J$XKeJdj?uaVR?(>0bAV+&{8>jdb-DA4{5vbbtG54~)<_Zf zDV&8mp;mYqwWKBNCYAR;BhS)Q{j-7eN=evp`1UD`*G6}+r5R9Nc;B|`J9>ikxk>1v z7))pU#$I7&l0jk=2dSwonp&8;R2hke&w5KA*}w;Gwa`{u%3*-?Xa<0}Ap3D_;QXNc zSuhoAFBR1!nyOFPA6*8Pl*eQn@a?u@#Jh$SIKWr2JvGU$Jms1<;*V@-6k;}~Rc`P? z6+G?Fg7sObw+_4^0+w_B z8oX&Vx(?*Sh+KD$W>&(;5e*um;t=LqFlo;e1hQFuAN5Sacis)Ik`YOAzgVgG&upL) zz|xNsJO{yAv96X>71sH3_=+Rs!jh574~NFLG4;85@i$y0Dygj%is&IjTnIM4%#t~Z zGif$MXflnt39uwzM?<*S1%~+5h~~9Lf)QIK50|bcv}@cy>N)&m&LN^FfZN|-H)crs zQWMNx1FInE)t~iQwJCD;U$=~yK0u}^rH|$8{-0}*o)Ml+Mm~*4L48Dd94^7@9eC7( zf`JJP(@^&6c_YJ^lPn5%85h?y6!rrcaz?cWwL0Rpra9Mqam|KT$I26~xjJT~JHyG(aqv1Qda zn2@!amXnc3T6C__-^E3r^6*VW`^n%C8OMsDzw3|x`L{-O@&CITly(^ffAB1U~C*{UDt}YTj_^ZHzsauGNbApYi*(Q%uY*;F)#sXrmzksb~Zo zCx{+j8q9A2IzQOO&2RB={YmY>COg{Q)v!%{tAES)M@~^=!A!@jdsGs(NE`XIDMfdt zQnAsCi?f?mDSY90qwlN12qrInRQ^$itp}xd{Jjao$)?y9)m}H73uFy1N_N)+tHq~e^)4p6e?VJ z)ExB^n^u0JICnUS8HIp9vOiBA4Db&U6BEx+Of4;y^j1him)iZGFkCo5?`B(ykGVD;#omA zKD}8{UOuz;inZ>`aC~yY3&09-CO0CAy)Ie`a=E&Zt(VEOWR*yb+&-pL}0U%|-;gleqCr zi7J$kF&9SeB=;Wy%qD;tn>f6Vzc-g6-kz~o?J0`-f}b%2?UsNW3`9o(OqF1fHMeu$ zIixPUpZ90;*1h)!_~3Z_NL}92>l{JzEQ=QYiup;gZ=9H(i2g_xe3^bx*GOQ1-&Q3! zJ4H1wWmdX71-NyUcB>y{OU+H&PQIG1wjX}OB0&D_AEm%`R^ih6!_E4~X(RwEn=g`4 z!qsePTiB+ftrrcpHKh@+h&1zmfoF@=}XB4jnom=a&p6i`?1&k zSoG|$5aH6ff>*E3iIET6Ej(QN2WF+x2dZt`CbfkZi91~Fc@ibK*xSejVS8Zw#Mv!w zV$Aq-p0oTrArpeIX7alk9FkpvzB6Gzk(erZMbzjDl!gzYlyu0>!_TGn*&q9;3(D@I zdKA5v?N5UxHbdJ&5GxJsix05~vJR$?)f*bU>BgCVUa5iY?OlL9jtB?i;XQY5!nVNF z5C!y!!x%aJUyz+aNne2Fmat|;6Wms&VmC1H@at-fNva}ue}j9Oa|7bqN;kG`OJYvr z(GH&%YtT(gM)filgbpj=k5etv3HKrt-&Fz@8IwW`7M|6U;$`m(5fDWUCIuFNzc?svDqRs0~wtq zPGzRbj5SA`OtO2o2Cc!oY>w4Bzx+Z4Gnv@;A}39S=7!O4yX=gNa{RT)ct#`74^-sL zg}=D(?Ml%m8fV1X=%j*I((3n<(s<54j^Mt_!<0GU4dr<9keLo01{XTzjmj(GB%T-S z?NuL4>VddWVDNsKWozM`1HbOD3)pK`sJK!;jpa2=>UlEzgbX^Z~6<}k-90MF0^qGxfR^?90tCx<;3*+|iH730} z+G(Hk-O^9aUCgIfKh-*d$2YuAAbag_mzcj|OU#H*`SevJp zpgt*K0IC^6XEe|kGsW+j)UZyJ(OJG!OeVg&jV{vD7ds3~!ugvElH2#Q=l3Fv2awI; z#PO}|#r6!_f-)Q*R>7!^xkA*qu_S3O%n%)-!3d#XZvE-|BYPiWD2J-UUVgF^_2Mu! zM(}lo?$>TVIHc}3___%tUuGOjoYe?vTC*^VK4iM4o|MAGubi-G+nxvrEsxjhYk+Pz zt5wVOT3jp%NJt_B*~d4B9(k5OG?wfJUxZIsfM}6_mnsE@jR~s>zf=TiE4=UICeAE~ zNBq*2HsNX$@P0gm#F1>gnb?L!GIgN#+BrsUJZu66#|#qG!ABU|aOHy4{XH?B-2 zjg7pk74js(Y&!;EMZau2o7~*o?8-{k?F|yQi`bBddFwuYsVgWUXSmIR;#upSg8lQw z23r)UR=ek&I?~uV?RnHGV>+S)Z?!BvUuU&r>FJ&xLa=vfa(2d0A&9m5<H za0sR81K`wMWL_?=1ha!sV=N+4N5c2We^w0>HY2LjCeqBLHekGUHs7iEskPPB8T0Ld zftdGP*rWW~R@{hin0*Y>%E$x#IL2Nt=37(6K-itFYG%t=##_ndl=1@~s`ev`tgaz$ zs43SCMSbp4b}hC6aZC0xy*7dMUr;VQqG{IFQwgp*pfI&RVEbVNLN6u&-NoQ;Vo-3!x+lY=5y+nd%e*CdwY_S!H-OZnG| zIm4>XudCdOO8o950jF%?SqM8pAdjLFPMq9G9C&ysH~nxVt7c}HQ=oVDNs$MJCue((JS+uo<|TGbJB1v%()ql5BP-g>^4duHl}JFXuBy3jNz#(U9SVJzWVUQ5=d z7MTr!LEG2Ov|s-rIXc|E%teADr(mS1FEHuBA!Gegru4JQUn`d*;kO?~`wMq`9uM?; z0LT~q%H3>ZFz2`sr_lA1^IC}LgW+7u2kW^eM`Nz;>%)0$*=QgJO4kZx9|NRfcAyS` z9Sh17NfsOu($j+>N`ht;`h0~=1aM}qnTy_QLSc89v*p_Oivd`_T7I;#ECHN%lN#oj z&$s6V@I2&JD8I+mab;|n)eH8C4WPjJUFccm_0`5HnKn00#}?#6>Z41yit+U2lBX6z zp8W_h$9Y*9{}mGplc-l*Lri4VaV-zd8j(_RW%=tT=}J@?!$H$lW(o<ix`?*y;je<2IPq7FoD--;~ z6U58=;0QTUh*zio{AOi?c=^YWI%D~}$IsTxu-;LpRR(X#Oy0cJ5wkj73YrM@Dp-C! zm^UsA?!fHH%Z1C>r2y|xswm4)N8`^NBJa|;lCH}lJ-KjYV?ow27N208h@AZTq*i6c zQW(fsQSoOl-*3u)j}d0xw(r8&$}^p)_*QIUnCNbrl(y|YvGw8FtHeKzeF&h%`-FdX z!BshMyJG4CgpUKQE1GGc{(8>+sHLl;#SK_(CE?2i5E_!A2UPlrB~yxt#*r?$kxw5M zyynPWipdr{!r&iII(XD#Kxrm?h)L5vymGkdRFTpUvS#;S+6iM*J#6&yA;{#j<3LiF z55>Y8=$5IbLnU%kKGe6qJF-=!Uuegq?T^$VAV!v!2BXE(*^r%;tSOW5EeZ*!X>}~w zJ0*du1(`}d7R6E!P&9Z4x_S1Fj%D$6<76uIDR&9NarB^5YVy65LkTdRkEGh)>n7+2 zJwXNN1`2hnrU}t=`xn&%vz7Y#ng-F0!DaDX#BUmPT_bK9J06+$p|rBbWCeK!k9mcHX!dU@mZLTJKUE=B3R4j|%?)PRtIx&~qJ&S;Fs*!x33zBDjwr6>I?joi{79-7L+RS&&b+x&X<9rCwBpjP2_IJkEG$e~>b)T^i zO)andw7J{I=ipT#Iy){;1H#7pC<~#A$y8A~D?o9KQ@mN)5y4+vvt{T@^0sfk-R@jc zkHq#rV9eiF|D$pU5W?J{-BCr7-ErOF+~q>TAbdrUI|>%Q*YVXcDf6TQB3z4~C^Gx| z9vtiJ6FKdJC#$IqPo4@T4Ik!}59jR!qJxZn?q&O|wpI;ZNk`jZQ0KA+uJ&U1&ZP*dl$k;#LJPdT-T@=PRmP4OrTPQW*{An7AXeRFf)t$ri_Ln_dH)A zkFy;k`Jm5QDRA?j8KJNt#2WVp?iP}Snvm1F~A2zx#o$y4WF&xUr}sa?3_6Usk&nfE(~_W`_WMLBkpO}(Cl3$`G9*$-x#O& z^*uzCsxouHniZ>H(E>bgM}PwnrrKoc$uQ_AjG1yV_hNNh}?`plDS?msZwD65bkvvnETD`g)$L zkZQ9qJB(+~2ytXzi@(QaUF1r*l;SF5Vn^a(&L2O+vthi7{1Vce?Qk*ZNPUXb{oR$F zNv~#7pfR!F=My2J(R&Q+H?PV9e$?Wq9yc0KkL10|q6_@>^_;SnP%SvDIG;yPs(cDz232#qft$i%NT5TaK2?LK%E6 zH@?2-LT>B0fnvcGS(9mM1B?A1@{NZlWcQCz*b8ZnX&FC^OF z1%DA@b&H0OlwUCc`kB!da{)F1X;IDIG>5A3YKjZGV_T{+Kpo8GW8?e|O?G|KdvRgEU`8c}PW z!*VZ-4$g7ooqLI}m^9C0vI&opWw==_CFMq9U~Qew_vFIoxjX6L@QZrw^og#gt1Tvk z`XgBZdJ4E!L1}U@7+cCy2p65KX<(C#O+B$~^2uQ0a9W~lulmT5&6Wpr|MqK{w=lx_ zRh_%?59>-n!9bDo7YwP{bAp7l5ngI^+RpnW=aS^L#zp#WWq;8dYfaAhI}eqb9e(CX zQ?3MK5<<&McS8{t7L3)~2-fDFzwUp=L;mjk`^=pkn)ZA@z6wi{iQ*_psOC6YF{ z)7-r_SrIA4_`>yiiYn~%qKP%4W#zR^|4(tE%8lEIXROC=-W)u}=_9q#5YnC2Nb@oc z)|aG5g?I|$6W<8W-UyPw$$6_G=RMBjwu`-5lroxV4y6P0#&2q>I}P*V}R)NyL@8w zSTUE2SmrW3MU8rQRSmC&eGRgm@66id>&Os{A}M#-w;g|+920;qRHx9VGZ$kcsFUB` zLJN0Sx>Xb+!dht$se3CtI1tw6|Al}U&C9NCUJECF&4QqQj|M5G)gWM%a@yW0&eZ@S zebBMqLNw65M*XV>=A1_bM%d7l zHrmUp^pN+n8-P>j64T&UTKJv}{f@N2>1 zqNE&p1nIf)#3%)kd(7$a_+B>Si{||l1Rz(BiM_wbeHgK@Ka*D)zre-#bhLoGli`na z_ytMit0atVEP4+%F@J?uPKk zEvE)*<_FMAR*Ui$B={sI}7;H9%6YJgF@=Ok;C`dKF zgc7;ePxr+k7)O)Q26X`gC&Rl{BO(IF_{K)IMIIE;t@P z9#NX456K7;b3fWG^&*jFcI#(HbS4z}`u6lb+E}l~9Bvpd52lh&&-1=^df-DvvU9<` z+iCKuw|B`kpei|FQ6NJzYNa{+xXCE+C}4p446LJ_s97*y(BNQe0wVm-J3uC@e8M}3 zzOe=Ya}=YjPaRKvY3ZLQUq2i*E|Z~?2w^?}7f&z%|KnK#?D4fv9rwCT09uc_+0WY! zuOLTR`iJv3n&jR_t~_k|+6A=O+47gd=gAFN6t9ao{RGZ%Ux3hu@|X2a=#`(cMH0~b zAc>WpG~UODUMC*+YZ}EO}U!|ha_40Sk;x|{uT}IK&KC8orBu8p?6Pj zu0CKKoSR|SoJCzB4CcG-Nw<#6ZWJCEUDg!836G>#8Ow?C<>ffbOdXE@)sC~r>y5AHD5MW0MH;5JX077oW~SGi$`@1y%F5$s(~S3b@9W5lb%-jBDJNdR*Z8o` zpSL>c(u(YuK`c%^-2`xXMKM>2?g^6c*srW-KYUu=9Tj0rQ$=ji#sZG*GcKLyltc#C zkBd#Ns%#E)%YK)_tItHpu&UHWcIm)=tzRcOZbA||tzmUXq>a4kV02v>t0)Sv;dcW^ zI=vE(0Gyr|(@vr2qh&gFI96!sOER3Yc=6_A@vcGz6~svNl$KjLaNTh=>=yY@-jPUt zkj0A2sxHiVFwDN2>sPI4!hW|$Q<=;;#AeEMw^Y4uvQD&69M!Xl-m?(_!oz0pWM zekHPpo;%CKICsw#E*=PP5S3@&Vp{Q#&(oCk?DZU|6zg#&$G6KNd^X*94!oyyQK zU{}DKGGTim@ZjR@&fUfjHl5C;Rq=C%J`u$ z`{&W0TB$t&ffMRfRt`hxhr+5N!ehTe@(sP6MB?$`fR>3Z6+b2E44|p!Z!xx;ugRzK zPs3nIE&J7VN3m-*sWdxtGdCcD$L{nOl}FEC((4owMa0u;d}bxjH_?J^1m1+W?hoHl zj_8^SJm=&8BAyRTbd(`;^sFqO>{@!i-S+B_V_obMWoN3QGujG%?f8}O?!`rGoz0hu zp7Zxp<-fwa5W9zy>_PVfV0H&3i9r9I-@w%0HonB*48 zpd(V|HQW7{@KA?dIbqxucFoo0f&h&*e$YAZHINZrO=XKHhcT`2ijaawIU`2*O_?kb zr%Yh{B>%FnCo`wvP_nG?!JeFnzO(&H%lRIy8g|=;%MrXRXG*pRk47?$`eXHRZKVP| z_gr@!#rrWSgN7epvE1k%>`_8V>|w?F=Y0^U6K(@L^X9bXvwPvcid|T#38cuGqZ(joFO;X9HrR;uw_CAcPgDed0KTOh!EK-o)P3nGq%4{&mdkK)L*>BA|`@YqXVHsQr5% zW>P&pFsfyO_*W3*-1&;uS_)jV)_WaAjK+D!n=0${=Ne;Ugg>1#7N8!7tgWrRT~TyL zexB{NH8D4)nSY1#q}}A$w-6*`D>{YqVt6+ z28QjEcWi>)vN-Mof3aF2B~FNCT7pSw818iMJk=sI!93a+_)}?ybgqfD5k4NRSHO5j z$o$NnY{4#_u%eUv-$i3 zl~0*A9FL~(<6C^#Kl7xF=GW@&z~hy2(AQ{KGKcSu!q~G~<9*&zRhdmnUbmO;aY)lI za{qmwakjC%0YN;%aBsprO{Au4wtLPX!qvxX?)S7~$Z))#2Ua<)-mF#JgUmNFb1MI>kuC9DJ-4`!p0=dWs%AEbw z5d-eHd`8}HAvL?#)K7Vp$l+cpgk7Ck=8~J^sz*py05?d?SkUkDBnINbhPlhC>!>LF z`rZ5uFVaD0uub+jjiKewvnp2?6+U*WX)2E^Em5DPLG*)@sFYo1upOs-Qd*gt&D{HV z21eEvo!9<31A2U@fis1=c9xi^+x&j=FUgotrX?^NpAv<$TNyLBZnR6BzcuD2_@s_F z;9BY*y5>2u6t)2e8U-K5hxW$1LMGkjsX3|CQzB~y_sK7!(g9XxiW+ zYy?MT+y{|BaEr8Znfx&=@{!}Y{j$`94jiU>*bTu_O7tGK8n5(l*zu|2R_PVciq$Fs z?IWG`p-#eFt6c3sX?Us{>h%ineYz6d(JG=X7tdk@MYR?fo8*~Dapwl?(TZ&4q{@Sz zKKAaxOrs~L21BKk7|2Bc*3xHALqFri*5%Fcz7Sgi0%6o9&?`aT>XY<-+gS*l)4tESY7EjFy^ae$lk1j1t}I zS-+_rx7{yKeQEpVc8cL|*_fpZ`hIXQ<;~BSR-o{s@i1!bCHxA0U{eSeeH_8`%OC|= zX4w?^u#2Kl_4Q#SDZV<6yd$}o^Tqk0RGCI#*yU0bkHnQ~YAZjzsc%d61K)n zJ<$?Wmp(D5T~@0~;j%%_j8Sb@{AmTQQT4}P?tgX>1-YNy9_N|0=)H#h$;i{^%2)zR z82dFCDk^tl%y+ajbE+mbM#wvyAe1|UP4mVABz_{a`F2iWr5NHFI)1>&54 z60Ql+?m3N8^|Py^@7Bdn7wNaeKHe2+DfR)gST%uFRF$uQl=Ds^=UsDwy7KcNF(k?f zJc)p-u~CgZiaafi#Cc*z=Ca85|IE1sCJY@{>SRntnW0F}7@L3If--dniAK~-$I_Wq zGckNYu!i?7HwPEP-uuMGynVSS%v~9H#hITo#jhHvS^Zzt1Jr>ptmGtpe0&TRWH}=< zlGNT0{d43%ewx%2J?^uy3<1EjpFi{4uiF!{NKd7JZvpuwVH3$EF(Fe^Q)9h|BqJ2j zb@^0O@<%XHz?V?4@mr$Uj%mc?glFaaZton+ZEua$sC-kiMMM&D)4=aQPv&U!alfE)kAtlZS z`Pqq!`3x*O<-Z^QNHyVvfkwp1#f5WqyiCmIZ8V{!O+#|Q_|J}e4ogtcu8PHPI_YYD zxY8!bq~HFKFe8redm8axz*2GIP0grjn+J$#>y?&iR8tu|01+-8B>O0%Y69Lz$FXfE zS+ze4i}xJ%BIY6^NMdhUve1=>Bg*AxyO*JZL)E%lvvNh)!tY(qhYPZ3b$O+%{$<%; zOdEt2$zA|9fF~7lWg`*soH19YcdUO@9Dzil!_GCM4@ykD63ScL}!CZ%)K0a6^YEk~ZLI8fpZ<~Sw zBWin5)zG+&2hg9~V*|9t1a``|(Xz(}KA@3j8c z|APE@s3;_IqYO&v|G(q<^L!RRD0IRCJ$j1je{a4H3uxXJUi-~|;4S~W*zX2L#l-@p zoE;MI{*UIPKo=UC+KU?C@E5TE **Note:** There's a limit of five app instances in a Okta Developer Edition org. The **Generate instance** option is deactivated when you reach this limit. Deactivate unused instances to make room for new instances in your org. See [Deactivate app instances in your org](/docs/guides/submit-oin-app/scim/main/#deactivate-an-app-instance-in-your-org). + > **Note:** There's a limit of five app instances in an Okta Developer Edition org. The **Generate instance** option is deactivated when you reach this limit. Deactivate unused instances to make room for new instances in your org. See [Deactivate app instances in your org](/docs/guides/submit-oin-app/scim/main/#deactivate-an-app-instance-in-your-org). 1. In the **General settings** tab, enter an **Application label** and any other required integration properties. 1. Click **Done**. Your generated test instance appears with more tabs for configuration. @@ -21,9 +23,9 @@ #### Configure attribute mappings -SCIM integrations that are submitted through the OIN Wizard have a default set of user attribute mappings. Update the attribute mappings to reflect the attributes supported by your app. The OIN team uses the updated attribute mappings in your test instance for your integration provisioning settings in the OIN catalog. +SCIM attribute mappings are configured at the instance-level. Ensure that these mappings reflect the current attributes supported by your app. The OIN team uses the updated attribute mappings in your test instance for integration provisioning settings in the OIN catalog. -After you've enabled the provisioning API connection in your test instance, configure user attribute mappings to and from Okta in the **Provisioning** tab of your instance: +After you've enabled the provisioning API connection in your test instance, configure attribute mappings to and from Okta in the **Provisioning** tab: * **To App**: User attribute mappings from Okta to your app * **To Okta**: User attribute mappings from your app to Okta @@ -49,11 +51,11 @@ After you've enabled the provisioning API connection in your test instance, conf 1. Click **Save**. Repeat these steps for all SCIM attributes that you want to map (from Okta to your app). -
+
- ![Displays the map attribute dialog.](/img/oin/scim_check-attributes-14.png) + ![Displays the map attribute dialog.](/img/oin/scim_check-attributes-14.png) -
+
7. After you update the mappings from Okta to your app, click **To Okta** in the **Settings** section. 8. Scroll to the **{yourApp} Attribute Mappings** section. Find the attribute that you want to update and click **Edit**. A dialog appears with two dropdown fields next to **Attribute value**. @@ -61,14 +63,22 @@ After you've enabled the provisioning API connection in your test instance, conf 10. In the second dropdown list, select the SCIM attribute that you want to map to the Okta attribute. 11. Click **Save**. - Repeat these steps for all SCIM attributes that you want to map from your app to Okta. + Repeat these steps for all SCIM attributes that you want to map from your app to Okta (in the **Settings** > **To Okta** panel). * Delete attributes: 1. In the Profile Editor, click **Mappings**. 1. Click **{yourApp} to Okta User** at the top of the page. 1. Scroll to the attribute that you want to delete, click the mapping icon (yellow arrow) and select **Do not map**. + +
+ + ![Displays the map attribute dialog.](/img/oin/scim_unmap-attribute.png) + +
+ 1. Click **Save Mappings**. + Perform **Do not map** and **Save Mappings** actions for all attributes that you want to remove from your app to Okta mappings. 1. Click **Apply updates now** to save all the attributes you unmapped. @@ -76,10 +86,11 @@ After you've enabled the provisioning API connection in your test instance, conf 1. Click **Okta User to {yourApp}** at the top of the page. 1. Scroll to the attribute that you want to delete, click the mapping icon (yellow arrow) and select **Do not map**. 1. Click **Save Mappings**. - Perform **Do not map** and **Save Mappings** actions for all attributes that you want to remove from Okta to your app mappings (similar to the **{yourApp} to Okta User** steps). + + Perform **Do not map** and **Save Mappings** actions for all attributes that you want to remove from Okta to your app mappings. 1. Click **Apply updates now** to save all the attributes you unmapped. - 1. In the Profile Editor, delete all the corresponding attributes from the mapping by clicking **X** next to the attribute and then **Delete Attribute** to confirm. + 1. In the Profile Editor, delete all the corresponding attributes from the mapping by clicking **X** next to the attribute and then clicking **Delete Attribute** to confirm. Repeat this step for all the attributes that you want to delete. diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/required-app-instances.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/required-app-instances.md index 2190ad92f16..40a281821e9 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/required-app-instances.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/required-app-instances.md @@ -1,17 +1,17 @@ The **Required app instances** section shows you the instances detected in your org that are required to test your integration. * The **CURRENT VERSION** status indicates the instances that you need to test your current integration submission. [Generate an instance](#generate-an-instance) to test SCIM if **No instance detected** appears next to the **SCIM** label. -* The **PUBLISHED VERSION** status indicates the instances that you need to test backwards compatibility for SSO. If your integration only supports the SCIM protocol, then the OIN Wizard doesn't require a published version instance. +* The **PUBLISHED VERSION** status indicates the instances that you need to test backwards compatibility for SSO. If your integration only supports the SCIM protocol, then the OIN Wizard doesn't require a published-version instance. -Depending on the nature of your updates, you may need to generate instances for backwards-compatibility testing. Okta recommends that you execute the Runscope tests on a published-version instance for backwards compatibility, but it's not a requirement for submission. +Depending on the nature of your updates, you may need to generate instances for backwards-compatibility testing. Okta recommends that you execute the Runscope tests on your SCIM published-version instance for backwards compatibility, but it's not a requirement for submission. - * If you're only updating app profiles, then you don't need to create an extra app instance for backward-compatibility testing. You can test the app profile updates in the updated instance version of your submission. See [Configure attribute mappings](#configure-attribute-mappings). + * If you're only updating app profiles, then you don't need to create an extra app instance for SCIM backward-compatibility testing. You can test the app profile updates in the updated instance version of your submission. See [Configure attribute mappings](#configure-attribute-mappings) when you generate a SCIM instance for testing. - * If you're updating all other properties from the **Configure your integration**, and **Test integration** pages, then Okta recommends backwards-compatibility testing: + * If you're updating all other properties from the **Configure your integration** and **Test integration** pages, then Okta recommends SCIM backwards-compatibility testing: * If you tested and submitted your published integration from the same Okta Developer Edition org, you might already have an existing backward-comptible instance. Use this older app instance version to test backward compatibility. See [Testing backward-compatibiity]. - * If you don't have an instance based on the published integration, exit the OIN Wizard and create an instance of the OIN-published instance. See [Add existing app integrations](https://help.okta.com/okta_help.htm?type=oie&id=csh-apps-add-app) to create an OIN-published instance for backwards-compatibility testing. + * If you don't have an instance based on the published integration, exit the OIN Wizard and create an instance of the SCIM OIN-published instance. See [Add existing app integrations](https://help.okta.com/okta_help.htm?type=oie&id=csh-apps-add-app) to create an OIN-published instance for SCIM backwards-compatibility testing. > **Notes:** If your integration also supports SSO: > * You can avoid creating another app instance for SSO testing if these conditions apply: diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/test-instance.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/test-instance.md index 46e910e248e..93ab5225feb 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/test-instance.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/test-instance.md @@ -1,77 +1,79 @@ > **Note:** Okta recommends that you execute the Runscope tests on a published-version instance of your SCIM integration, but it's not a requirement for submission. -2. In the **General settings** tab, enter an **Application label** and any other required integration properties. -3. Click **Done**. Your generated test instance appears with more tabs for configuration. -4. Click **Provisioning** > **Configure API Integration**. -5. Select **Enable API integration**. - * For custom or bearer authentication, specify the **API token** for your instance. - * For OAuth 2.0 authentication, click **Authenticate with {yourApp}** and provide credentials for your test instance. -1. Click **Test API Credentials** to test authentication to your SCIM service. If there's an error, verify that the credentials are correct. -1. Click **Save**. -1. Select **Settings** > **To Okta** from the updated **Provisioning** tab. -1. In the **General** section, click **Edit** to schedule imports and configure the username format for imported users. +--- +You need to run three sets of tests for SCIM integrations: - You can also define a percentage of acceptable assignments before the [import safeguards](https://help.okta.com/okta_help.htm?id=csh-eu-import-safeguard) feature is automatically triggered. +1. [SCIM API specification tests](/docs/guides/scim-provisioning-integration-prepare/main/#test-your-scim-api) -1. Click **Save**. Next, [configure attribute mappings](#configure-attribute-mappings). + You need to first test your SCIM API service before you conduct Okta-SCIM integration tests. Okta provides you with a SCIM API specification test suite to execute in Runscope. See [Test your SCIM API](/docs/guides/scim-provisioning-integration-prepare/main/#test-your-scim-api) for instructions on how to run this test suite. Provide the test results URL in the **Link to Runscope spec test results** field when you submit your integration to the OIN. -> **Note:** Your SCIM app must support redirect URIs that include the app name (`{appName}`) that's generated after you create your app instance. See SCIM service [authentication](/docs/guides/scim-provisioning-integration-prepare/main/#authentication) for a list of redirect URIs required. Your app name appears in the **General settings** tab or in the Admin Console URL when you're viewing the instance page. +1. [Runscope create, read, update, and delete (CRUD) user profile tests](#runscope-crud-tests) -#### Configure attribute mappings + Enter the results URL from these tests in the **Link to Runscope CRUD test results** field when you submit your integration to the OIN. -> **Note:** Configure attribute-mapping instructions are only for SCIM integrations. +1. [Manual Okta SCIM integration tests](#manual-okta-scim-integration-tests) -SCIM integrations that are submitted through the OIN Wizard have a default set of user attribute mappings. The user schema in your SCIM app might not support all of these attributes. Ensure the integration that you're submitting to Okta reflects the attributes that are supported by your app. The OIN team uses the attribute mappings in your test instance for your integration provisioning settings in the OIN catalog. + You must certify that you've completed these tests when you submit your integration to the OIN. -After you've enabled the provisioning API connection in your test instance, configure user attribute mappings to and from Okta in the **Provisioning** tab of your instance: +#### Runscope CRUD tests -* **To App**: User attribute mappings from Okta to your app -* **To Okta**: User attribute mappings from your app to Okta +1. Download the [Okta SCIM 2.0 CRUD Test](/standards/SCIM/SCIMFiles/Okta-SCIM-20-CRUD-Test.json) file. -1. Select **To App** on the left **Settings** panel of the **Provisioning** tab. - The **Provisioning to App** settings appear. The provisioning operations are already set by default from the [SCIM properties](#properties) section when you configured your integration. + This CRUD test file is built for the [BlazeMeter Runscope](https://www.runscope.com/) API monitoring tool. If you don't have a Runscope account, you can sign up with a [free trial to Runscope](https://www.runscope.com/okta) for Okta developers. +1. From Runscope, click **Import Test**. +1. Select **API Monitoring Tests** as the import format. +1. Click **Choose File** and select the **Okta SCIM 2.0 CRUD Test** file. +1. Click **Import API Test**. In this new test bucket, click **Editor** from the left-navigation menu. +1. Click **Test Settings** and then click **Initial Variables**. +1. Add the following variables with values that match your SCIM integration: + * `oktaOrgUrl`: The base URL for your Okta org. Include the `https://` prefix. + * `oktaAppId`: The unique identifier that's assigned to your test app instance. You can see this value in the **App Embed Link** panel under the **General** tab for your instance. -1. Scroll to the **{yourApp} Attribute Mappings** section. +
- * Delete attributes: - 1. Click **X** next to the attribute that you want to delete, and then click **OK** to confirm. + ![The browser bar showing the oktaOrgUrl location.](/img/oin/scim_crud-test-identifiers.png) - Repeat this step until you remove all the mappings for the attributes that you want to delete. +
- 1. After removing all the mappings for the attributes that you want to delete, click **Go to Profile Editor**. + * `oktaToken`: The Okta API token used by Runscope to connect to Okta APIs. You can generate an API token inside your org. See [Create an API token](/docs/guides/create-an-api-token/main/). + * `SCIMUrl`: The base URL of the SCIM service. For example: `https://example.com/scim/v2` + * `SCIMAuth`: The authorization token used to access your SCIM API. You can use the same authorization token you used to **Enable API integration** from [Generate an instance for ](#generate-an-instance-for). - 1. In the Profile Editor, delete all the corresponding attributes from the mapping by clicking **X** next to the attribute and then **Delete Attribute** to confirm. + The following is an example of the Runscope variable values: - Repeat this step for all the attributes that you want to delete. +
- * Add attributes: + ![Sample values for CRUD test variables. Runscope initial variables](/img/oin/scim_crud-variables-d.png) - 1. In the Profile Editor, click **Add Attribute**. +
- 1. Enter the information for the new attribute that you’re adding and then click **Save**. +1. Click **Test Settings** and then click **Initial Script**. +1. Copy the contents of the [Okta CRUD Initial Script](/standards/SCIM/SCIMFiles/Initial_Script_CRUD.txt) text file and paste into this Runscope console. +1. Click **Save & Run**. - > **Note:** The **Scope** property determines whether the attribute that you're adding can be assigned at a group level or per user. If you want your admins to assign a value for this attribute at a group level, don't select the **User personal** checkbox. +##### Review Runscope test results - 1. After adding attributes, go back to the **{yourApp} Attribute Mappings** section and click **Edit** to map your new attributes. A dialog appears with two dropdown fields. +On the left of your Runscope page, the test appears in the **Recent Test Runs** section. - 1. Select **Map from Okta Profile** in the first dropdown list. - 1. In the second dropdown list, select the Okta profile attribute that you want to map over to the SCIM attribute. - 1. Click **Save**. +1. Click **View Progress** from the **Recent Test Runs** section. +As the test suite runs, Runscope displays live updates of the test in progress. After the test suite completes, the main panel displays the results of your test. +1. Click a test case to see its **Request**, **Response**, and **Connection** information. - Repeat these steps for all SCIM attributes that you want to map (from Okta to your app). +When you're satisfied with your Runscope CRUD test results, enter them in the **Link to Runscope CRUD test results** field: -
+1. From your Runscope dashboard, open the test results that you want to share. +2. At the top of the test result, set the **Private | Shareable** toggle to **Shareable**. +3. Copy the URL for the test result. The test results can be viewed in detail, but the test can't be edited or rerun by people outside of your team. - ![Displays the map attribute dialog.](/img/oin/scim_check-attributes-14.png) + Example of a test result URL: + `https://www.runscope.com/radar/abcdefghijkl/m01nopq2-3456-7r8s-9012-t34567uvw890/history/123ef4gh-i567-89j0-1k2l-3m4n5o678901`. -
+1. Paste the test results URL into the **Link to Runscope CRUD test results** field in the OIN Wizard **Test integration** > **SCIM integration testing step** section. - 5. After you update the mappings from Okta to your app, click **To Okta** in the **Settings** section. - 6. Scroll to the **{yourApp} Attribute Mappings** section. Find the attribute that you want to update and click **Edit**. A dialog appears with two dropdown fields next to **Attribute value**. - 7. Select **Map from {yourApp} App Profile** from the first dropdown list. - 8. In the second dropdown list, select the SCIM attribute that you want to map to the Okta attribute. - 9. Click **Save**. +#### Manual Okta SCIM integration tests - Repeat these steps for all SCIM attributes that you want to map from your app to Okta. +Execute the test cases in the [Okta SCIM Test Plan](/standards/SCIM/SCIMFiles/okta-scim-test-plan-v2.xlsx). Skip the test cases for the features that your integration doesn't support. All the other supported-feature test cases must pass before you can submit your integration to the OIN. -After you complete your attribute mappings, you're ready to [test your SCIM integration](#test-your-scim-integration). +Depending on your test scenario, you can import users from the **Import** tab (see [Import users](https://help.okta.com/okta_help.htm?id=ext_Importing_People)) or create users in Okta before assigning them to your test instance. See [About adding provisioned users](https://help.okta.com/okta_help.htm?type=oie&id=lcm-about-user-management) and [Assign test users to your integration instance](#assign-test-users-to-your-integration-instance). + +After you've successfully completed the manual SCIM integration tests, see [Submit your integration](#submit-your-integration). From 6b552383c5bad9feaf9fb7ab38a5123b272aebe6 Mon Sep 17 00:00:00 2001 From: Van Ngo Date: Mon, 10 Feb 2025 18:24:48 -0500 Subject: [PATCH 17/28] Yay! Finish first draft of new topic --- .../update-oin-app/main/scim/submit-checks.md | 2 - .../update-oin-app/main/scim/test-instance.md | 78 ++----------------- 2 files changed, 7 insertions(+), 73 deletions(-) diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/submit-checks.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/submit-checks.md index 486d0eb2686..b860c2599a8 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/submit-checks.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/submit-checks.md @@ -4,5 +4,3 @@ The OIN Wizard checks the following for SCIM submissions: * All required instances are active. * The **Link to Runscope spec test results** field is specified. * The **Link to Runscope CRUD test results** field is specified. - -> **Note:** See [Test your SCIM integration](#test-your-scim-integration) for SCIM submission requirements. diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/test-instance.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/test-instance.md index 93ab5225feb..0191ab58b80 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/test-instance.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/test-instance.md @@ -1,79 +1,15 @@ -> **Note:** Okta recommends that you execute the Runscope tests on a published-version instance of your SCIM integration, but it's not a requirement for submission. - ---- You need to run three sets of tests for SCIM integrations: -1. [SCIM API specification tests](/docs/guides/scim-provisioning-integration-prepare/main/#test-your-scim-api) - - You need to first test your SCIM API service before you conduct Okta-SCIM integration tests. Okta provides you with a SCIM API specification test suite to execute in Runscope. See [Test your SCIM API](/docs/guides/scim-provisioning-integration-prepare/main/#test-your-scim-api) for instructions on how to run this test suite. Provide the test results URL in the **Link to Runscope spec test results** field when you submit your integration to the OIN. - -1. [Runscope create, read, update, and delete (CRUD) user profile tests](#runscope-crud-tests) - - Enter the results URL from these tests in the **Link to Runscope CRUD test results** field when you submit your integration to the OIN. - -1. [Manual Okta SCIM integration tests](#manual-okta-scim-integration-tests) - - You must certify that you've completed these tests when you submit your integration to the OIN. - -#### Runscope CRUD tests - -1. Download the [Okta SCIM 2.0 CRUD Test](/standards/SCIM/SCIMFiles/Okta-SCIM-20-CRUD-Test.json) file. - - This CRUD test file is built for the [BlazeMeter Runscope](https://www.runscope.com/) API monitoring tool. If you don't have a Runscope account, you can sign up with a [free trial to Runscope](https://www.runscope.com/okta) for Okta developers. -1. From Runscope, click **Import Test**. -1. Select **API Monitoring Tests** as the import format. -1. Click **Choose File** and select the **Okta SCIM 2.0 CRUD Test** file. -1. Click **Import API Test**. In this new test bucket, click **Editor** from the left-navigation menu. -1. Click **Test Settings** and then click **Initial Variables**. -1. Add the following variables with values that match your SCIM integration: - * `oktaOrgUrl`: The base URL for your Okta org. Include the `https://` prefix. - * `oktaAppId`: The unique identifier that's assigned to your test app instance. You can see this value in the **App Embed Link** panel under the **General** tab for your instance. - -
- - ![The browser bar showing the oktaOrgUrl location.](/img/oin/scim_crud-test-identifiers.png) - -
- - * `oktaToken`: The Okta API token used by Runscope to connect to Okta APIs. You can generate an API token inside your org. See [Create an API token](/docs/guides/create-an-api-token/main/). - * `SCIMUrl`: The base URL of the SCIM service. For example: `https://example.com/scim/v2` - * `SCIMAuth`: The authorization token used to access your SCIM API. You can use the same authorization token you used to **Enable API integration** from [Generate an instance for ](#generate-an-instance-for). - - The following is an example of the Runscope variable values: - -
- - ![Sample values for CRUD test variables. Runscope initial variables](/img/oin/scim_crud-variables-d.png) - -
- -1. Click **Test Settings** and then click **Initial Script**. -1. Copy the contents of the [Okta CRUD Initial Script](/standards/SCIM/SCIMFiles/Initial_Script_CRUD.txt) text file and paste into this Runscope console. -1. Click **Save & Run**. - -##### Review Runscope test results - -On the left of your Runscope page, the test appears in the **Recent Test Runs** section. - -1. Click **View Progress** from the **Recent Test Runs** section. -As the test suite runs, Runscope displays live updates of the test in progress. After the test suite completes, the main panel displays the results of your test. -1. Click a test case to see its **Request**, **Response**, and **Connection** information. - -When you're satisfied with your Runscope CRUD test results, enter them in the **Link to Runscope CRUD test results** field: - -1. From your Runscope dashboard, open the test results that you want to share. -2. At the top of the test result, set the **Private | Shareable** toggle to **Shareable**. -3. Copy the URL for the test result. The test results can be viewed in detail, but the test can't be edited or rerun by people outside of your team. +1. SCIM API specification tests - Example of a test result URL: - `https://www.runscope.com/radar/abcdefghijkl/m01nopq2-3456-7r8s-9012-t34567uvw890/history/123ef4gh-i567-89j0-1k2l-3m4n5o678901`. + First, test your SCIM API service before you conduct Okta-SCIM integration tests. Okta provides you with a SCIM API specification test suite to execute in Runscope. See [Test your SCIM API](/docs/guides/scim-provisioning-integration-prepare/main/#test-your-scim-api) for instructions on how to run this test suite. Provide the test results URL in the **Link to Runscope spec test results** field when you submit your integration to the OIN. -1. Paste the test results URL into the **Link to Runscope CRUD test results** field in the OIN Wizard **Test integration** > **SCIM integration testing step** section. +1. Runscope create, read, update, and delete (CRUD) user profile tests -#### Manual Okta SCIM integration tests + The Runscope CRUD test relies on your updated SCIM instance for testing. See [Runscope CRUD tests](/docs/guides/submit-oin-app/scim/main/#runscope-crud-tests) for instructions on how to run this test suite. Enter the results URL from these tests in the **Link to Runscope CRUD test results** field when you submit your integration to the OIN. -Execute the test cases in the [Okta SCIM Test Plan](/standards/SCIM/SCIMFiles/okta-scim-test-plan-v2.xlsx). Skip the test cases for the features that your integration doesn't support. All the other supported-feature test cases must pass before you can submit your integration to the OIN. +1. Manual Okta SCIM integration tests -Depending on your test scenario, you can import users from the **Import** tab (see [Import users](https://help.okta.com/okta_help.htm?id=ext_Importing_People)) or create users in Okta before assigning them to your test instance. See [About adding provisioned users](https://help.okta.com/okta_help.htm?type=oie&id=lcm-about-user-management) and [Assign test users to your integration instance](#assign-test-users-to-your-integration-instance). + See [Manual Okta SCIM integration tests](/docs/guides/submit-oin-app/scim/main/#manual-okta-scim-integration-tests) for instructions on how to run this test suite. There's no field in the OIN Wizard for the [Manual Okta SCIM integration tests](#manual-okta-scim-integration-tests) results, however, you must certify that you've completed these tests when you submit your integration to the OIN. -After you've successfully completed the manual SCIM integration tests, see [Submit your integration](#submit-your-integration). +> **Note:** Okta recommends that you execute the Runscope CRUD tests and the manual Okta SCIM integration tests on a published-version SCIM instance for backwards compatibility. The results of the backwards-compatibility tests aren't requirements for submission. From 426d5aba25fb728554ba95546d6f01ab5a7f37b5 Mon Sep 17 00:00:00 2001 From: Van Ngo Date: Mon, 10 Feb 2025 18:47:27 -0500 Subject: [PATCH 18/28] remove extraneous snippets --- .../main/openidconnect/protocol-fullname.md | 1 - .../main/openidconnect/variable-desc.md | 13 -------- .../main/saml2/protocol-fullname.md | 1 - .../main/saml2/variable-desc.md | 31 ------------------- .../main/scim/protocol-fullname.md | 1 - .../update-oin-app/main/scim/variable-desc.md | 27 ---------------- 6 files changed, 74 deletions(-) delete mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/protocol-fullname.md delete mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/variable-desc.md delete mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/protocol-fullname.md delete mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/variable-desc.md delete mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/protocol-fullname.md delete mode 100644 packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/variable-desc.md diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/protocol-fullname.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/protocol-fullname.md deleted file mode 100644 index 2f8bbd40ed5..00000000000 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/protocol-fullname.md +++ /dev/null @@ -1 +0,0 @@ -OpenID Connect (OIDC) \ No newline at end of file diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/variable-desc.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/variable-desc.md deleted file mode 100644 index a938af561e5..00000000000 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/openidconnect/variable-desc.md +++ /dev/null @@ -1,13 +0,0 @@ -For example, if you have an OIDC configuration variable called `subdomain`, then you can set your **Redirect URI** string to `https://{app.subdomain}.example.org/strawberry/login`. When your customer sets their `subdomain` variable value to `berryfarm`, then `https://berryfarm.example.org/strawberry/login` is their redirect URL. - -> **Note**: A variable can include a complete URL (for example, `https://example.com`). This enables you to use global variables, such as `app.baseURL`. - -The following are Expression Language specifics for OIDC properties: - -* OIDC [integration variables](#integration-variables) you define in the OIN Wizard are considered [Application properties](/docs/reference/okta-expression-language/#application-properties) and have the `app.` prefix when you reference them in Expression Language. For example, if your integration variable name is `subdomain`, then you can reference that variable with `app.subdomain`. - -* OIDC properties support [Expression Language conditional expressions](/docs/reference/okta-expression-language/#conditional-expressions) and evaluates everything between curly brackets. For example, the following is an expression for the **Redirect URI** property: - - ```js - {String.stringContains(app.environment, 'PROD') ? 'https://app.data.one/' : 'https://app-sandbox.data.one/'} - ``` \ No newline at end of file diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/protocol-fullname.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/protocol-fullname.md deleted file mode 100644 index 43347ef91d7..00000000000 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/protocol-fullname.md +++ /dev/null @@ -1 +0,0 @@ -Security Assertion Markup Language (SAML) \ No newline at end of file diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/variable-desc.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/variable-desc.md deleted file mode 100644 index 5c77bf74ad0..00000000000 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/variable-desc.md +++ /dev/null @@ -1,31 +0,0 @@ -For example, if you have a SAML configuration variable called `subdomain`, then you can set your **ACS URL** string to `https://${org.subdomain}.example.org/strawberry/login`. When your customer sets their `subdomain` variable value to `berryfarm`, then `https://berryfarm.example.org/strawberry/login` is their ACS URL. - -> **Note**: A variable can include a complete URL (for example, `https://example.com`). This enables you to use global variables, such as `org.baseURL`. - -The following are Expression Language specifics for SAML properties: - -* SAML [integration variables](#integration-variables) you define in the OIN Wizard are considered [Organization properties](/docs/reference/okta-expression-language/#organization-properties) and have the `org.` prefix when you reference them in Expression Language. For example, if your integration variable name is `subdomain`, then you can reference that variable with `org.subdomain`. - -* SAML properties support [Expression Language conditional expressions](/docs/reference/okta-expression-language/#conditional-expressions) and evaluates everything between `${` and `}`. For example, the following is an expression for the **ACS URL** property: - - ```js - ${empty org.baseUrl ? 'https://app.mydomain.com' : org.baseUrl} - ``` - -* SAML properties don't support Expression Language [String functions](https://developer.okta.com/docs/reference/okta-expression-language/#string-functions). Use [JSTL functions](https://docs.oracle.com/javaee/5/jstl/1.1/docs/tlddocs/fn/tld-summary.html) instead. For example: - - ```js - ${fn:substringAfter(org.base_url, '//')} - ``` - - ```js - ${fn:substringBefore(user.userName, '@')}@example.com - ``` - - ```js - https://${fn:endsWith(org.site_url, 'host1.com') ? 'host1.com' : fn:endsWith(org.site_url, 'host2.com') ? 'host2.com' : '.host.com'}/sso/saml - ``` - - ```js - https://${fn:contains(org.environment, 'production') ? 'productiondomain.com' : 'previewdomain.com'}/sso/saml - ``` diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/protocol-fullname.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/protocol-fullname.md deleted file mode 100644 index 12602c44d53..00000000000 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/protocol-fullname.md +++ /dev/null @@ -1 +0,0 @@ -System for Cross-domain Identity Management (SCIM) 2.0 \ No newline at end of file diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/variable-desc.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/variable-desc.md deleted file mode 100644 index 52049aedf51..00000000000 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/variable-desc.md +++ /dev/null @@ -1,27 +0,0 @@ -For example, if you have a SCIM configuration variable called `subdomain`, then you can set your **Base URL** string to ` 'https://' + app.subdomain + '.example.org/strawberry/scim2/'`. When your customer sets their `subdomain` variable value to `berryfarm`, then `https://berryfarm.example.org/strawberry/scim2/` is their base URL. - -> **Note**: A variable can include a complete URL (for example, `https://example.com/scim2/`). This enables you to use global variables, such as `app.baseURL`. - -The following are Expression Language specifics for SCIM properties: - -* Any SCIM [integration variables](#integration-variables) that you define in the OIN Wizard are considered [application properties](/docs/reference/okta-expression-language/#application-properties). They have an `app.` prefix when you reference them in Expression Language. For example, if your integration variable name is `subdomain`, then you can reference that variable using `app.subdomain`. - -* SCIM properties support [Expression Language conditional expressions](/docs/reference/okta-expression-language/#conditional-expressions). For example: - - ```js - 'https://' + app.subdomain + '.example.org/strawberry/scim2/'` - ``` - - ```js - 'https://' + (app.region == 'us' ? 'myfruit' : 'myveggie') + '.example.com/strawberry/oauth/token' - ``` - -* SCIM properties support Expression Language [String functions](https://developer.okta.com/docs/reference/okta-expression-language/#string-functions). For example: - - ```js - (String.len(app.baseUrl) == 0 ? 'https://fruit.example.com/scim2/' : app.baseUrl) + 'v1/oauth_token' - ``` - - ```js - (String.stringContains(app.environment,"PROD") ? 'https://fruit.example.com' : 'https://fruit-sandbox.example.com') + '/v1/oauth2/token' - ``` From 56a0079b99e8bd2ec1a523e5fca2539e72a57b79 Mon Sep 17 00:00:00 2001 From: Van Ngo Date: Mon, 10 Feb 2025 19:01:45 -0500 Subject: [PATCH 19/28] Remove update published integration content in submit-oin-app --- .../docs/guides/submit-oin-app/main/index.md | 70 +------------------ 1 file changed, 1 insertion(+), 69 deletions(-) diff --git a/packages/@okta/vuepress-site/docs/guides/submit-oin-app/main/index.md b/packages/@okta/vuepress-site/docs/guides/submit-oin-app/main/index.md index b2a360cadef..f600da6ae0f 100644 --- a/packages/@okta/vuepress-site/docs/guides/submit-oin-app/main/index.md +++ b/packages/@okta/vuepress-site/docs/guides/submit-oin-app/main/index.md @@ -269,7 +269,7 @@ To assign test users to your integration: The **Required app instances** box shows you the instances detected in your org that are available to test your integration. It also shows you the test instances required for the OIN Submission Tester based on your selected protocols: * The **CURRENT VERSION** status indicates the instances that you need to test your current integration submission. -* The **PUBLISHED VERSION** status indicates the instances that you need to test backwards compatibility if you edit a previously published integration. See [Update your integration](#update-your-integration). +* The **PUBLISHED VERSION** status indicates the instances that you need to test backwards compatibility if you edit a previously published integration. See [Update a published integration with the OIN Wizard](/docs/guides/update-oin-app/). ### Application instances for testing @@ -550,77 +550,9 @@ After you've successfully completed the manual SCIM integration tests, see [Subm ## Update your integration -You can modify your published SSO and/or SCIM integrations in the OIN Wizard. - -When you edit a published OIN integration, test the flows for the updated version and the published version for backwards compatibility. Testing the published version for backwards compatibility ensures that your integration still works for users who have already installed it. See [Update integration considerations](#update-integration-considerations) before you edit your published integration. After you successfully test the updated and published versions of your integration, resubmit it to the OIN team. - -> **Note:** When you edit your published OIN integration, your previous PUBLISHED status and date are overwritten with the DRAFT status and current date. - -To update a previously published OIN integration: - -1. Sign in to your Okta Developer Edition org as a user with either app admin or super admin roles. - > **Note:** Edit your integration from an Okta account that has your company domain in the email address. You can't use an account with a personal email address. The OIN team doesn't review submission edits from a personal email account. -1. In the Admin Console, go to **Applications** > **Your OIN Integrations**. - - > **Note:** If you don't need to edit your submission and want to jump to testing, see [Navigate directly to test your integration](#navigate-directly-to-test-your-integration). - -1. Click your published integration to update from the dashboard. Your published OIN submission appears in read-only mode. -1. From the **This integration is read-only** information box, click **Edit integration**. - > **Note:** If you open a submission in **DRAFT** status, it's not in read-only mode and the **Edit integration** option isn't available. - - Continue to edit your draft submission as a new submission. See [Start a submission](#start-a-submission). -1. If the OIN Wizard doesn't detect an instance to test your published integration in the org, then an **Application instance not detected** dialog appears. Click **Generate instance** to create an app instance based on your published OIN integration. See [Add existing app integrations](https://help.okta.com/okta_help.htm?type=oie&id=csh-apps-add-app) to create an instance for backwards-compatibility testing. - > **Note:** The **Generate instance** option is disabled if you have five active instances in your org. [Deactivate instances](#deactivate-an-app-instance-in-your-org) that you're not using. - - If the OIN Wizard detects an instance based on your published integration, the dialog doesn't appear. This is usually the case if you tested and submitted your published integration from the same org. - -1. Continue to update your integration in the **Select protocol**, **Configure your integration**, and **Test integration** pages. See [Update integration considerations](#update-integration-considerations) for backwards compatibility with integration variables. - - The **Required app instances** box contains the following items: - * The instances that you need to test the **PUBLISHED VERSION** of your OIN integration. - * The instances that you need to test the **CURRENT VERSION** of your integration submission. - - See [Required app instances](#required-app-instances). - > **Note:** If the OIN Submission Tester session expired, click **Refresh tester session** for a new test session. - - Backwards-compatible test instances that were generated from your published integration appear in the **Application instances for testing** list. - -1. Click **Generate Instance** to create an instance required for the **CURRENT VERSION** from the **Required app instances** status box. - - See [Generate an instance for testing](#generate-an-instance-for) to create instances for your current submission. - > **Note:** There's a maximum of five active app instances allowed in a Developer Edition org. Deactivate any instances that you don't need for testing. - -1. Test your integration protocol: - - * For SSO testing, click **Add to Tester** for each required test instance. See [Add to Tester](#add-to-tester).
The required tests appear for each test instance. Run your tests from the OIN Submission Tester. See [OIN Submission Tester](#oin-submission-tester). If you encounter errors, see [Failed tests](#failed-tests) for help with resolving the issues. - - * For SCIM testing, see [Test your SCIM integration](#test-your-scim-integration) for all the test requirements. - -1. [Submit your integration](#submit-your-integration) if all your tests passed. ### Update integration considerations -* For published integrations that were migrated from the OIN Manager, if you need to update configured properties that aren't available the OIN Wizard, contact . - -* You can't update a published SCIM integration with Basic authentication. This breaks the integration for existing customers. For any updates, you must submit a new SCIM integration that implements header authentication or OAuth 2.0 authentication. You can use either token or bearer token format for header authentication. - -* If you edit a published SCIM integration that was migrated from the OIN Manager, the **Import users** (and **Import groups** if groups are managed) capability is automatically enabled in the OIN Wizard. You must support and test this capability if your previous SCIM integration didn't support it. If you need help with implementing this feature, contact . - -* When you update an integration that's already published, be mindful to preserve backwards compatibility for your integration. Older instances of your integration could be in use by Okta customers. - - * If you modify the **Name** (`name`) property of your [integration variables](#integration-variables), Okta removes the original variable and creates a variable with your updated name. This action negatively impacts your existing customers if you use the original variable in your integration dynamic properties. - - * Migrated published integrations from the OIN Manager don't have some OIN Wizard restrictions. For instance: - - * Published integrations can have more than three integration variables - * Published integrations can have variable names with uppercase letters - * Published integrations can use `http` (instead of enforced `https`) in URLs and Expression Language-supported properties - - * If your update introduces new variables and you're using dynamic URLs, ensure that your tests cover various scenarios with different possible values for those variables. See [Dynamic properties with Okta Expression Language](#dynamic-properties-with-okta-expression-language). The newly introduced variables aren't populated for older instances of your integration. - - For example: - - ## Submit your integration From d0b1102716dd810457622a45d485c4e9da6de62e Mon Sep 17 00:00:00 2001 From: Van Ngo Date: Mon, 10 Feb 2025 20:39:29 -0500 Subject: [PATCH 20/28] Remove #update-your-integration and #update-integration-considerations from submit-oin-app and add redirects --- packages/@okta/vuepress-site/conductor.yml | 25 ++++++++++++++----- .../docs/guides/submit-app/main/index.md | 4 +-- .../docs/guides/submit-oin-app/main/index.md | 8 +----- 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/packages/@okta/vuepress-site/conductor.yml b/packages/@okta/vuepress-site/conductor.yml index aa471de87f3..61094d83cd5 100644 --- a/packages/@okta/vuepress-site/conductor.yml +++ b/packages/@okta/vuepress-site/conductor.yml @@ -4282,7 +4282,7 @@ redirects: - from: /docs/guides/submit-app/openidconnect/submission3-process to: /docs/guides/submit-app-overview/#understand-the-submission-review-process - from: /docs/guides/submit-app/openidconnect/update-submission - to: /docs/guides/submit-oin-app/openidconnect/main/#update-your-integration + to: /docs/guides/update-oin-app/openidconnect/main/ - from: /docs/guides/submit-app/faqs to: /docs/guides/submit-app-overview/ - from: /docs/guides/submit-app/openidconnect/overview/index.html @@ -4296,7 +4296,7 @@ redirects: - from: /docs/guides/submit-app/openidconnect/submission3-process/index.html to: /docs/guides/submit-app-overview/#understand-the-submission-review-process - from: /docs/guides/submit-app/openidconnect/update-submission/index.html - to: /docs/guides/submit-oin-app/openidconnect/main/#update-your-integration + to: /docs/guides/update-oin-app/openidconnect/main/ - from: /docs/guides/submit-app/faqs/index.html to: /docs/guides/submit-app-overview/ - from: /docs/guides/submit-app/saml2/overview @@ -4310,7 +4310,7 @@ redirects: - from: /docs/guides/submit-app/saml2/submission3-process to: /docs/guides/submit-app-overview/#understand-the-submission-review-process - from: /docs/guides/submit-app/saml2/update-submission - to: /docs/guides/submit-oin-app/saml2/main/#update-your-integration + to: /docs/guides/update-oin-app/saml2/main/ - from: /docs/guides/submit-app/saml2/overview/index.html to: /docs/guides/submit-oin-app/saml2/main/ - from: /docs/guides/submit-app/saml2/create-guide/index.html @@ -4322,7 +4322,7 @@ redirects: - from: /docs/guides/submit-app/saml2/submission3-process/index.html to: /docs/guides/submit-app-overview/#understand-the-submission-review-process - from: /docs/guides/submit-app/saml2/update-submission/index.html - to: /docs/guides/submit-oin-app/saml2/main/#update-your-integration + to: /docs/guides/update-oin-app/saml2/main/ - from: /docs/guides/submit-app/scim/overview to: /docs/guides/submit-oin-app/scim/main/ - from: /docs/guides/submit-app/scim/create-guide @@ -4334,7 +4334,7 @@ redirects: - from: /docs/guides/submit-app/scim/submission3-process to: /docs/guides/submit-app-overview/#understand-the-submission-review-process - from: /docs/guides/submit-app/scim/update-submission - to: /docs/guides/submit-oin-app/scim/main/#update-your-integration + to: /docs/guides/update-oin-app/scim/main/ - from: /docs/guides/submit-app/scim/overview/index.html to: /docs/guides/submit-oin-app/scim/main/ - from: /docs/guides/submit-app/scim/create-guide/index.html @@ -4346,7 +4346,20 @@ redirects: - from: /docs/guides/submit-app/scim/submission3-process/index.html to: /docs/guides/submit-app-overview/#understand-the-submission-review-process - from: /docs/guides/submit-app/scim/update-submission/index.html - to: /docs/guides/submit-oin-app/scim/main/#update-your-integration + to: /docs/guides/update-oin-app/scim/main/ + - from: /docs/guides/submit-oin-app/openidconnect/main/#update-your-integration + to: /docs/guides/update-oin-app/openidconnect/main/ + - from: /docs/guides/submit-oin-app/saml2/main/#update-your-integration + to: /docs/guides/update-oin-app/saml2/main/ + - from: /docs/guides/submit-oin-app/scim/main/#update-your-integration + to: /docs/guides/update-oin-app/scim/main/ + - from: /docs/guides/submit-oin-app/openidconnect/main/#update-integration-considerations + to: /docs/guides/update-oin-app/openidconnect/main/#update-integration-considerations + - from: /docs/guides/submit-oin-app/saml2/main/#update-integration-considerations + to: /docs/guides/update-oin-app/saml2/main/#update-integration-considerations + - from: /docs/guides/submit-oin-app/scim/main/#update-integration-considerations + to: /docs/guides/update-oin-app/scim/main/#update-integration-considerations + - from: /docs/guides/submit-app/openidconnect/main to: /docs/guides/submit-oin-app/openidconnect/main/ - from: /docs/guides/submit-app/openidconnect/main/index.html diff --git a/packages/@okta/vuepress-site/docs/guides/submit-app/main/index.md b/packages/@okta/vuepress-site/docs/guides/submit-app/main/index.md index 3a9f38493de..ff648744194 100644 --- a/packages/@okta/vuepress-site/docs/guides/submit-app/main/index.md +++ b/packages/@okta/vuepress-site/docs/guides/submit-app/main/index.md @@ -8,7 +8,7 @@ layout: Guides Use this guide to understand the process of submitting Workflows connector and API service integrations to the Okta Integration Network (OIN) using the OIN Manager. This guide also shows you how to update a previously published integration or delete a draft submission. -> **Note:** For SSO or Lifecycle Management (LCM) SCIM integrations, use the [OIN Wizard](/docs/guides/submit-oin-app/scim/main/) for a seamless ISV submission experience. Previously submitted SSO and LCM SCIM integrations from the OIN Manager have been migrated to the OIN Wizard. You can edit these published integrations directly in the OIN Wizard and resubmit them to the OIN team. See [Update your integration](/docs/guides/submit-oin-app/scim/main/#update-your-integration). +> **Note:** For SSO or Lifecycle Management (LCM) SCIM integrations, use the [OIN Wizard](/docs/guides/submit-oin-app/scim/main/) for a seamless ISV submission experience. Previously submitted SSO and LCM SCIM integrations from the OIN Manager have been migrated to the OIN Wizard. You can edit these published integrations directly in the OIN Wizard and resubmit them to the OIN team. See [Update a published integratin with the OIN Wizard](/docs/guides/update-oin-app/). --- @@ -127,7 +127,7 @@ Include all required information before you click **Submit for Review** to move If you need to edit your published integration, use the [OIN Manager](https://oinmanager.okta.com/) to create an updated version of the integration. -> **Note:** As of release 2024.11.0, use the OIN Wizard to [edit your published SCIM integration](/docs/guides/submit-oin-app/scim/main/#update-your-integration). Previous SCIM integrations submitted through the OIN Manager are now available through the **Your OIN Integrations** dashboard in the Admin Console. +> **Note:** Use the OIN Wizard to [edit your published SCIM integration](/docs/guides/update-oin-app/scim/main/). Previous SCIM integrations submitted through the OIN Manager are now available through the **Your OIN Integrations** dashboard in the Admin Console. > If you submitted a SCIM integration through the OIN Manager and the OIN review process hasn't started, resubmitted it in the OIN Wizard. 1. Sign in to the OIN Manager using the credentials for the original submission Okta Developer Edition org. diff --git a/packages/@okta/vuepress-site/docs/guides/submit-oin-app/main/index.md b/packages/@okta/vuepress-site/docs/guides/submit-oin-app/main/index.md index f600da6ae0f..2212cca4f12 100644 --- a/packages/@okta/vuepress-site/docs/guides/submit-oin-app/main/index.md +++ b/packages/@okta/vuepress-site/docs/guides/submit-oin-app/main/index.md @@ -546,13 +546,7 @@ Execute the test cases in the [Okta SCIM Test Plan](/standards/SCIM/SCIMFiles/ok Depending on your test scenario, you can import users from the **Import** tab (see [Import users](https://help.okta.com/okta_help.htm?id=ext_Importing_People)) or create users in Okta before assigning them to your test instance. See [About adding provisioned users](https://help.okta.com/okta_help.htm?type=oie&id=lcm-about-user-management) and [Assign test users to your integration instance](#assign-test-users-to-your-integration-instance). -After you've successfully completed the manual SCIM integration tests, see [Submit your integration](#submit-your-integration). - -## Update your integration - - -### Update integration considerations - +After you've successfully completed the manual SCIM integration tests, you can submit your integration. ## Submit your integration From 7224d4f90b364ee07fa2a1712ffdb4e133e38d94 Mon Sep 17 00:00:00 2001 From: Van Ngo Date: Mon, 10 Feb 2025 20:52:24 -0500 Subject: [PATCH 21/28] fix typo in conductor file --- packages/@okta/vuepress-site/conductor.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/@okta/vuepress-site/conductor.yml b/packages/@okta/vuepress-site/conductor.yml index 61094d83cd5..b3ac712d8ab 100644 --- a/packages/@okta/vuepress-site/conductor.yml +++ b/packages/@okta/vuepress-site/conductor.yml @@ -4359,7 +4359,6 @@ redirects: to: /docs/guides/update-oin-app/saml2/main/#update-integration-considerations - from: /docs/guides/submit-oin-app/scim/main/#update-integration-considerations to: /docs/guides/update-oin-app/scim/main/#update-integration-considerations - - from: /docs/guides/submit-app/openidconnect/main to: /docs/guides/submit-oin-app/openidconnect/main/ - from: /docs/guides/submit-app/openidconnect/main/index.html From 92f64884cbbbf2419890b83e0cd9137e7f829e7f Mon Sep 17 00:00:00 2001 From: Van Ngo Date: Mon, 10 Feb 2025 20:57:48 -0500 Subject: [PATCH 22/28] Remove backward-compatible-eg snippet in submit-oin-app --- .../main/openidconnect/backward-compatible-eg.md | 9 --------- .../submit-oin-app/main/saml2/backward-compatible-eg.md | 9 --------- .../submit-oin-app/main/scim/backward-compatible-eg.md | 9 --------- 3 files changed, 27 deletions(-) delete mode 100644 packages/@okta/vuepress-site/docs/guides/submit-oin-app/main/openidconnect/backward-compatible-eg.md delete mode 100644 packages/@okta/vuepress-site/docs/guides/submit-oin-app/main/saml2/backward-compatible-eg.md delete mode 100644 packages/@okta/vuepress-site/docs/guides/submit-oin-app/main/scim/backward-compatible-eg.md diff --git a/packages/@okta/vuepress-site/docs/guides/submit-oin-app/main/openidconnect/backward-compatible-eg.md b/packages/@okta/vuepress-site/docs/guides/submit-oin-app/main/openidconnect/backward-compatible-eg.md deleted file mode 100644 index 969092af031..00000000000 --- a/packages/@okta/vuepress-site/docs/guides/submit-oin-app/main/openidconnect/backward-compatible-eg.md +++ /dev/null @@ -1,9 +0,0 @@ - Your integration update introduced a new variable (`companyId`), and you use it in your updated redirect URL. The redirect URL changed from `https://login.myapp.io` to `https://login.myapp.io?connection={app.companyId}`. In this case, ensure that the dynamic redirect URL is also valid for existing instances where the `companyId` value isn't set. - - To handle empty `companyId` values, you can define the redirect URL as: - - ```bash - https://{String.len(app.companyId) == 0 ? 'login.myapp.io' : 'login.myapp.io?connection=' + app.companyId} - ``` - - This expression handles both scenarios where `companyId` is populated or empty. \ No newline at end of file diff --git a/packages/@okta/vuepress-site/docs/guides/submit-oin-app/main/saml2/backward-compatible-eg.md b/packages/@okta/vuepress-site/docs/guides/submit-oin-app/main/saml2/backward-compatible-eg.md deleted file mode 100644 index 5c246d9d52a..00000000000 --- a/packages/@okta/vuepress-site/docs/guides/submit-oin-app/main/saml2/backward-compatible-eg.md +++ /dev/null @@ -1,9 +0,0 @@ - Your integration update introduced a new variable (`companyId`), and you use it in your updated ACS URL. The ACS URL changed from `https://login.myapp.io` to `https://login.myapp.io?connection={org.companyId}`. In this case, ensure that the dynamic ACS URL is also valid for existing instances where the `companyId` value isn't set. - - To handle empty `companyId` values, you can define the ACS URL as: - - ```bash - https://${empty org.companyId ? 'login.myapp.io' : 'login.myapp.io?connection=' += org.companyId} - ``` - - This expression handles both scenarios where `companyId` is populated or empty. \ No newline at end of file diff --git a/packages/@okta/vuepress-site/docs/guides/submit-oin-app/main/scim/backward-compatible-eg.md b/packages/@okta/vuepress-site/docs/guides/submit-oin-app/main/scim/backward-compatible-eg.md deleted file mode 100644 index 2f18e423586..00000000000 --- a/packages/@okta/vuepress-site/docs/guides/submit-oin-app/main/scim/backward-compatible-eg.md +++ /dev/null @@ -1,9 +0,0 @@ - Your integration update introduced a new variable (`companyId`), and you use it in your updated SCIM server base URL. The base URL changed from `https://fruits.example.com/scim2/myapp/` to `https://fruits.example.com/scim2/myapp?connection={app.companyId}`. In this case, ensure that the dynamic base URL is also valid for existing instances where the `companyId` value isn't set. - - To handle empty `companyId` values, you can define the base URL as: - - ```js - 'https://fruits.example.com/scim2/myapp' + (String.len(app.companyId) == 0 ? '/' : '?connection=' + app.companyId) - ``` - - This expression handles scenarios where `companyId` is populated or empty. From d0d1abab97d3a68649edc8f3863c34584097db3a Mon Sep 17 00:00:00 2001 From: Janu Geethakumari Date: Tue, 11 Feb 2025 17:10:05 -0500 Subject: [PATCH 23/28] Removed lines with anchor --- packages/@okta/vuepress-site/conductor.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/packages/@okta/vuepress-site/conductor.yml b/packages/@okta/vuepress-site/conductor.yml index b3ac712d8ab..c30a6fa8fa9 100644 --- a/packages/@okta/vuepress-site/conductor.yml +++ b/packages/@okta/vuepress-site/conductor.yml @@ -4353,12 +4353,6 @@ redirects: to: /docs/guides/update-oin-app/saml2/main/ - from: /docs/guides/submit-oin-app/scim/main/#update-your-integration to: /docs/guides/update-oin-app/scim/main/ - - from: /docs/guides/submit-oin-app/openidconnect/main/#update-integration-considerations - to: /docs/guides/update-oin-app/openidconnect/main/#update-integration-considerations - - from: /docs/guides/submit-oin-app/saml2/main/#update-integration-considerations - to: /docs/guides/update-oin-app/saml2/main/#update-integration-considerations - - from: /docs/guides/submit-oin-app/scim/main/#update-integration-considerations - to: /docs/guides/update-oin-app/scim/main/#update-integration-considerations - from: /docs/guides/submit-app/openidconnect/main to: /docs/guides/submit-oin-app/openidconnect/main/ - from: /docs/guides/submit-app/openidconnect/main/index.html From 2422dbaf69f110e32f9152caa506286a0438bca1 Mon Sep 17 00:00:00 2001 From: Janu Geethakumari Date: Wed, 12 Feb 2025 21:45:37 -0500 Subject: [PATCH 24/28] addressed comments from Iunalii --- .../public/img/oin/scim_unmap-attribute.png | Bin 121342 -> 122818 bytes .../docs/guides/submit-app/main/index.md | 2 +- .../main/saml2/backward-compatible-eg.md | 2 +- .../main/scim/backward-compatible-eg.md | 2 +- .../main/scim/required-app-instances.md | 4 ++-- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/@okta/vuepress-site/.vuepress/public/img/oin/scim_unmap-attribute.png b/packages/@okta/vuepress-site/.vuepress/public/img/oin/scim_unmap-attribute.png index 9812092543c45b31891b62eeffb9cd9ab2791fab..06ed47cd33b4b1c4561466bd26584625205063dd 100644 GIT binary patch literal 122818 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 L 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 z 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 literal 121342 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%0D5Is~=bA<5P^aUE8_bCiMG{Tq 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�;$QJm)34Hz)#OrCP`+Bv2|teT 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 **Note:** For SSO or Lifecycle Management (LCM) SCIM integrations, use the [OIN Wizard](/docs/guides/submit-oin-app/scim/main/) for a seamless ISV submission experience. Previously submitted SSO and LCM SCIM integrations from the OIN Manager have been migrated to the OIN Wizard. You can edit these published integrations directly in the OIN Wizard and resubmit them to the OIN team. See [Update a published integratin with the OIN Wizard](/docs/guides/update-oin-app/). +> **Note:** For SSO or Lifecycle Management (LCM) SCIM integrations, use the [OIN Wizard](/docs/guides/submit-oin-app/scim/main/) for a seamless ISV submission experience. Previously submitted SSO and LCM SCIM integrations from the OIN Manager have been migrated to the OIN Wizard. You can edit these published integrations directly in the OIN Wizard and resubmit them to the OIN team. See [Update a published integrating with the OIN Wizard](/docs/guides/update-oin-app/). --- diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/backward-compatible-eg.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/backward-compatible-eg.md index 12b8f7da326..d9281455f8e 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/backward-compatible-eg.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/saml2/backward-compatible-eg.md @@ -1,4 +1,4 @@ - Your integration update introduced a new variable (`companyId`), and you use it in your updated ACS URL. The ACS URL changed from `https://login.myapp.io` to `https://login.myapp.io?connection={org.companyId}`. In this case, ensure that the dynamic ACS URL is also valid for existing instances where the `companyId` value isn't set. + Your integration update introduced a new variable (`companyId`), and you use it in your updated ACS URL. The ACS URL changed from `https://login.myapp.io` to `https://login.myapp.io?connection=${org.companyId}`. In this case, ensure that the dynamic ACS URL is also valid for existing instances where the `companyId` value isn't set. To handle empty `companyId` values, you can define the ACS URL as: diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/backward-compatible-eg.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/backward-compatible-eg.md index 732d3f9f2aa..dbcea441c31 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/backward-compatible-eg.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/backward-compatible-eg.md @@ -1,4 +1,4 @@ - Your integration update introduced a new variable (`companyId`), and you use it in your updated SCIM server base URL. The base URL changed from `https://fruits.example.com/scim2/myapp/` to `https://fruits.example.com/scim2/myapp?connection={app.companyId}`. In this case, ensure that the dynamic base URL is also valid for existing instances where the `companyId` value isn't set. + Your integration update introduced a new variable (`companyId`), and you use it in your updated SCIM server base URL. The base URL changed from `https://fruits.example.com/scim2/myapp/` to `https://fruits.example.com/scim2/myapp?connection= + app.companyId`. In this case, ensure that the dynamic base URL is also valid for existing instances where the `companyId` value isn't set. To handle empty `companyId` values, you can define the base URL as: diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/required-app-instances.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/required-app-instances.md index 40a281821e9..8b71219ba93 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/required-app-instances.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/required-app-instances.md @@ -5,11 +5,11 @@ The **Required app instances** section shows you the instances detected in your Depending on the nature of your updates, you may need to generate instances for backwards-compatibility testing. Okta recommends that you execute the Runscope tests on your SCIM published-version instance for backwards compatibility, but it's not a requirement for submission. - * If you're only updating app profiles, then you don't need to create an extra app instance for SCIM backward-compatibility testing. You can test the app profile updates in the updated instance version of your submission. See [Configure attribute mappings](#configure-attribute-mappings) when you generate a SCIM instance for testing. + * If you're only updating app profiles or mapping, then you don't need to create an extra app instance for SCIM backward-compatibility testing. You can test the app profile updates in the updated instance version of your submission. See [Configure attribute mappings](#configure-attribute-mappings) when you generate a SCIM instance for testing. However, if you're updating the properties such as description, logo or guide link, then Okta recommends that you need to create an extra app instance for SCIM backward-compatibility testing. * If you're updating all other properties from the **Configure your integration** and **Test integration** pages, then Okta recommends SCIM backwards-compatibility testing: - * If you tested and submitted your published integration from the same Okta Developer Edition org, you might already have an existing backward-comptible instance. Use this older app instance version to test backward compatibility. See [Testing backward-compatibiity]. + * If you tested and submitted your published integration from the same Okta Developer Edition org, you might already have an existing backward-comptible instance. Use this older app instance version to test backward compatibility. See [Testing backward-compatibiity](#test-your-integration). * If you don't have an instance based on the published integration, exit the OIN Wizard and create an instance of the SCIM OIN-published instance. See [Add existing app integrations](https://help.okta.com/okta_help.htm?type=oie&id=csh-apps-add-app) to create an OIN-published instance for SCIM backwards-compatibility testing. From 1060fbce7e119ea9f0e9dc43037998deba7ddb7d Mon Sep 17 00:00:00 2001 From: janugeethakumari-okta Date: Thu, 13 Feb 2025 10:33:54 -0500 Subject: [PATCH 25/28] Update packages/@okta/vuepress-site/docs/guides/submit-app/main/index.md Co-authored-by: vanngo-okta <80703015+vanngo-okta@users.noreply.github.com> --- .../@okta/vuepress-site/docs/guides/submit-app/main/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@okta/vuepress-site/docs/guides/submit-app/main/index.md b/packages/@okta/vuepress-site/docs/guides/submit-app/main/index.md index 7b0fff54957..943829db0b2 100644 --- a/packages/@okta/vuepress-site/docs/guides/submit-app/main/index.md +++ b/packages/@okta/vuepress-site/docs/guides/submit-app/main/index.md @@ -8,7 +8,7 @@ layout: Guides Use this guide to understand the process of submitting Workflows connector and API service integrations to the Okta Integration Network (OIN) using the OIN Manager. This guide also shows you how to update a previously published integration or delete a draft submission. -> **Note:** For SSO or Lifecycle Management (LCM) SCIM integrations, use the [OIN Wizard](/docs/guides/submit-oin-app/scim/main/) for a seamless ISV submission experience. Previously submitted SSO and LCM SCIM integrations from the OIN Manager have been migrated to the OIN Wizard. You can edit these published integrations directly in the OIN Wizard and resubmit them to the OIN team. See [Update a published integrating with the OIN Wizard](/docs/guides/update-oin-app/). +> **Note:** For SSO or Lifecycle Management (LCM) SCIM integrations, use the [OIN Wizard](/docs/guides/submit-oin-app/scim/main/) for a seamless ISV submission experience. Previously submitted SSO and LCM SCIM integrations from the OIN Manager have been migrated to the OIN Wizard. You can edit these published integrations directly in the OIN Wizard and resubmit them to the OIN team. See [Update a published integration with the OIN Wizard](/docs/guides/update-oin-app/). --- From b98a9c44d9b4af1f27c4e938bff25655de836ac5 Mon Sep 17 00:00:00 2001 From: janugeethakumari-okta Date: Thu, 13 Feb 2025 10:34:21 -0500 Subject: [PATCH 26/28] Update packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/backward-compatible-eg.md Co-authored-by: vanngo-okta <80703015+vanngo-okta@users.noreply.github.com> --- .../guides/update-oin-app/main/scim/backward-compatible-eg.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/backward-compatible-eg.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/backward-compatible-eg.md index dbcea441c31..3ee8477b538 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/backward-compatible-eg.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/backward-compatible-eg.md @@ -1,4 +1,4 @@ - Your integration update introduced a new variable (`companyId`), and you use it in your updated SCIM server base URL. The base URL changed from `https://fruits.example.com/scim2/myapp/` to `https://fruits.example.com/scim2/myapp?connection= + app.companyId`. In this case, ensure that the dynamic base URL is also valid for existing instances where the `companyId` value isn't set. + Your integration update introduced a new variable (`companyId`), and you use it in your updated SCIM server base URL. The base URL changed from `https://fruits.example.com/scim2/myapp/` to `'https://fruits.example.com/scim2/myapp?connection=' + app.companyId`. In this case, ensure that the dynamic base URL is also valid for existing instances where the `companyId` value isn't set. To handle empty `companyId` values, you can define the base URL as: From 60537cc736c02c81095b7fd3b62b15ac6999a682 Mon Sep 17 00:00:00 2001 From: janugeethakumari-okta Date: Thu, 13 Feb 2025 10:34:38 -0500 Subject: [PATCH 27/28] Update packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/required-app-instances.md Co-authored-by: vanngo-okta <80703015+vanngo-okta@users.noreply.github.com> --- .../guides/update-oin-app/main/scim/required-app-instances.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/required-app-instances.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/required-app-instances.md index 8b71219ba93..6206abf7bc2 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/required-app-instances.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/required-app-instances.md @@ -9,7 +9,7 @@ Depending on the nature of your updates, you may need to generate instances for * If you're updating all other properties from the **Configure your integration** and **Test integration** pages, then Okta recommends SCIM backwards-compatibility testing: - * If you tested and submitted your published integration from the same Okta Developer Edition org, you might already have an existing backward-comptible instance. Use this older app instance version to test backward compatibility. See [Testing backward-compatibiity](#test-your-integration). + * If you tested and submitted your published integration from the same Okta Developer Edition org, you might already have an existing backwards-compatible instance. Use this older app instance version to test backwards compatibility. See [Test your integration](#test-your-integration). * If you don't have an instance based on the published integration, exit the OIN Wizard and create an instance of the SCIM OIN-published instance. See [Add existing app integrations](https://help.okta.com/okta_help.htm?type=oie&id=csh-apps-add-app) to create an OIN-published instance for SCIM backwards-compatibility testing. From 08431522e8bc63c482eae2ba1ca069a2c2fb5b83 Mon Sep 17 00:00:00 2001 From: janugeethakumari-okta Date: Thu, 13 Feb 2025 10:34:57 -0500 Subject: [PATCH 28/28] Update packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/required-app-instances.md Co-authored-by: vanngo-okta <80703015+vanngo-okta@users.noreply.github.com> --- .../guides/update-oin-app/main/scim/required-app-instances.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/required-app-instances.md b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/required-app-instances.md index 6206abf7bc2..bace0974017 100644 --- a/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/required-app-instances.md +++ b/packages/@okta/vuepress-site/docs/guides/update-oin-app/main/scim/required-app-instances.md @@ -5,7 +5,7 @@ The **Required app instances** section shows you the instances detected in your Depending on the nature of your updates, you may need to generate instances for backwards-compatibility testing. Okta recommends that you execute the Runscope tests on your SCIM published-version instance for backwards compatibility, but it's not a requirement for submission. - * If you're only updating app profiles or mapping, then you don't need to create an extra app instance for SCIM backward-compatibility testing. You can test the app profile updates in the updated instance version of your submission. See [Configure attribute mappings](#configure-attribute-mappings) when you generate a SCIM instance for testing. However, if you're updating the properties such as description, logo or guide link, then Okta recommends that you need to create an extra app instance for SCIM backward-compatibility testing. + * If you're only updating app profiles or mapping, then you don't need to create an extra app instance for SCIM backwards-compatibility testing. You can test the app profile updates in the updated instance version of your submission. See [Configure attribute mappings](#configure-attribute-mappings) when you generate a SCIM instance for testing. However, if you're updating the properties such as description, logo, or guide link, then Okta recommends that you create an extra app instance for SCIM backwards-compatibility testing. * If you're updating all other properties from the **Configure your integration** and **Test integration** pages, then Okta recommends SCIM backwards-compatibility testing: