Okta
Configure SURF to authenticate and provision users against Okta. This page covers user sign-in via SAML, user and group provisioning via SCIM, admin console SSO, and conditional access.
Before you start
| Requirement | Detail |
|---|---|
| Okta access | Administrator on your Okta tenant, with rights to add applications and edit security policies |
| SURF access | Administrator on the SURF Admin console, with SURF installed |
| Optional | SCIM provisioning, if you want Okta to create, update and deactivate SURF users automatically |
Two separate Okta applications are involved. The Surf Security app from the Okta catalogue handles end user sign-in and provisioning. A second, custom SAML app handles sign-in to the SURF Admin console. They are configured independently, and the admin console one is optional.
Step 1: Configure user authentication with SAML
In Okta
- Sign in to your Okta Admin tenant and go to Applications.
- Select Browse App Catalog.
- Search for Surf Security and select the application.
- Click Add integration, then Done.
- Open the Assignments tab and assign the application to the users or groups that should be able to sign in.
In SURF Admin
- Go to Settings β Integrations.
- Locate SAML 2.0 and select Add integration.
- Fill in the SAML values. These come from the Okta application's Sign On tab, under Metadata details.
- Click Submit.
- Set the new integration's status to ON.
SURF supports SP-initiated SSO, meaning the sign-in flow starts from SURF rather than from the Okta dashboard.
Step 2: Provision users and groups with SCIM
Optional. SCIM lets Okta manage the SURF user directory automatically instead of users being added by hand.
| Supported |
|---|
| Create users |
| Update user attributes |
| Deactivate users |
| Import users |
| Import groups |
| Group push |
- In the Surf Security application in Okta, open the Provisioning tab and click Configure API integration.
- Tick Enable API integration.
- In SURF Admin, go to Settings β Additional Setup and copy the company Secret.
- Paste the company secret into the Okta API Token field.
- Click Test API Credentials to validate the settings.
- If the test succeeds, close the dialog and click Save.
Step 3: Configure admin console SSO
Lets administrators sign in to the SURF Admin console with their Okta credentials. This uses a separate, custom Okta application, not the catalogue app from Step 1.
Create the application in Okta
- In Okta Admin, go to Applications and select Create App Integration.
- Choose SAML 2.0 and click Next.
- Name the application, for example
SURF Admin Console. A logo can be added from the SURF brand assets. - Enter the SAML settings:
| Field | Value |
|---|---|
| Single sign-on URL | https://prod-backend.surf-admin.link/api/v1/admin/saml/v2/login |
| Audience URI (SP Entity ID) | https://prod-backend.surf-admin.link/api/v1/admin/saml/v2/surf-sp |
- Click Next, select I'm an Okta customer and this is an internal app, then Finish.
- Open Assignments and assign the relevant administrators or admin group.
- Open the Sign On tab, scroll to the SAML 2.0 instructions and click More details. Keep this page open, the next steps copy three values from it.
Exchange the details in SURF Admin
- Go to Settings β Integrations, locate SAML 2.0 and select Update global SSO. This is a different menu item from Update integration and is what makes the configuration apply to the admin console.
- Copy the values across:
| SURF field | Okta value |
|---|---|
| Entity ID | Identity Provider Issuer |
| Single Sign on URL | Identity Provider Single Sign-On URL |
| Public Certificate | Signing Certificate (download or copy from Okta) |
- Click Submit.
- Click the gear icon again and select Update global SSO a second time.
- Set Enable SSO config to ON.
- Log out and log back in with SSO to confirm it works.
Step 4: Configure conditional access
Restricts an application so it can only be reached from inside SURF. Traffic is routed through a known proxy address, then Okta is told to deny sign-ins that do not originate from that address.
4.1 Configure the proxy in SURF
- In SURF Admin, go to Policy management β Proxy Access Management.
- Under Hosting, choose SURF's proxy or Self hosted proxy. If SURF hosts it, the SURF support team supplies the address.
- Enter the proxy address including port under Custom Proxy DNS / IP, for example
3.139.215.63:3221, and click Set. - Under Affected SaaS URLs, select the applications to route through the proxy.
- Add anything not in the list under Additional Affected URLs. Include your Okta sign-in domain, for example
your-org.okta.com, so the Okta login itself is proxied. - Turn Proxy Access ManagementON.
4.2 Define the proxy as a network zone in Okta
- Sign in to Okta Admin and go to Security β Networks.
- Select Add IP Zone and give it a recognisable name, for example
surf-zone. - Under Gateway IPs, enter the SURF proxy address from 4.1.
- Leave Block access from IPs matching conditions listed in this zone unticked. This zone is used to allow SURF traffic, not to block it.
- Click Save.
4.3 Create the authentication policy
- Go to Security β Authentication policies and add a new policy.
- Assign the policy to the relevant application.
- Add two rules, both assigned to the relevant group of users:
| Rule | Condition | Result |
|---|---|---|
| Surf Access Rule | User's IP is in the surf-zone network zone | Allowed after successful authentication |
| Surf Block Rule | User's IP is not in the surf-zone network zone, any user, any device state, any platform | Denied |
4.4 Verify
- In the SURF browser, refresh policy.
- Open the protected application from SURF. It should load.
- Open the same application from a standard browser. Okta should block it.
Reference
| Purpose | Value |
|---|---|
| Admin console SAML sign-on URL | https://prod-backend.surf-admin.link/api/v1/admin/saml/v2/login |
| Admin console SAML audience URI | https://prod-backend.surf-admin.link/api/v1/admin/saml/v2/surf-sp |
| SURF Admin console | https://admin.surf-admin.link/ |
| Task | Path |
|---|---|
| Add or update user SAML | SURF Admin β Settings β Integrations β SAML 2.0 β Add / Update integration |
| Configure admin console SSO | SURF Admin β Settings β Integrations β SAML 2.0 β Update global SSO |
| Find the SCIM company secret | SURF Admin β Settings β Additional Setup |
| Proxy configuration | SURF Admin β Policy management β Proxy Access Management |
| Okta network zones | Okta Admin β Security β Networks |
| Okta authentication policies | Okta Admin β Security β Authentication policies |
Troubleshooting
| Symptom | Check |
|---|---|
| Users cannot sign in after adding the app | The application was added in Okta but not assigned to any user or group (Step 1) |
| SCIM test credentials fail | The company secret was copied from the wrong place. It is under Settings β Additional Setup, not the integrations screen. |
| Admin SSO does not apply | Configuration saved under Update integration instead of Update global SSO (Step 3) |
| Admin SSO configured but sign-in still fails | Enable SSO config was never switched ON after submitting the certificate |
| Admin console rejects an authenticated SURF user | Signing in as a different account from the one holding the active Okta session in the SURF browser |
| Conditional access blocks SURF as well as other browsers | The Okta sign-in domain was not added to the affected URLs, or the Gateway IP in the zone does not match the proxy address |
| Rules have no effect | Both rules must be assigned to the relevant group, and the policy must be assigned to the application |
For anything not covered here, contact the SURF support team.
