Skip to content

Commit b3ed032

Browse files
feat(integrations): add support for onelogin (#4932)
## Describe the problem and your solution - add support for onelogin <!-- Issue ticket number and link (if applicable) --> <!-- Testing instructions (skip if just adding/editing providers) --> <!-- Summary by @propel-code-bot --> --- **Add First-Class OneLogin Integration with Automatic Resource Cleanup** This PR adds native support for the OneLogin identity provider across the platform. It registers OneLogin in the provider catalogue, delivers a server-side pre-deletion hook that automatically revokes tenant resources when a connection is removed, and ships the documentation and UI assets required for customers to discover and configure the new integration. The change is additive, introduces no breaking API changes, and directly addresses frequent customer requests for OneLogin support. <details> <summary><strong>Key Changes</strong></summary> • Registered OneLogin in packages/providers/providers.yaml so it appears in SDKs and UI integration catalogue • Implemented pre-connection-deletion hook (packages/server/lib/hooks/connection/providers/onelogin/pre-connection-deletion.ts) and wired it into hook index • Added comprehensive docs (setup, connect, troubleshooting) and updated docs.json for searchability • Included official OneLogin SVG logo for catalogue and connection panel </details> <details> <summary><strong>Affected Areas</strong></summary> • Provider registry (providers.yaml) • Server hooks subsystem • Documentation site & build artefacts • Webapp integration catalogue UI </details> --- *This summary was automatically generated by @propel-code-bot*
1 parent 568d9f0 commit b3ed032

File tree

14 files changed

+229
-0
lines changed

14 files changed

+229
-0
lines changed

docs/docs.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -617,6 +617,7 @@
617617
"integrations/all/one-drive",
618618
"integrations/all/one-drive-personal",
619619
"integrations/all/one-note",
620+
"integrations/all/onelogin",
620621
"integrations/all/openai",
621622
"integrations/all/openai-admin",
622623
"integrations/all/open-hands",

docs/integrations/all/onelogin.mdx

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
---
2+
title: 'OneLogin'
3+
sidebarTitle: 'OneLogin'
4+
description: 'Access the OneLogin API in 2 minutes 💨'
5+
---
6+
7+
<Tabs>
8+
<Tab title="🚀 Quickstart">
9+
<Steps>
10+
<Step title="Create an integration">
11+
In Nango ([free signup](https://app.nango.dev)), go to [Integrations](https://app.nango.dev/dev/integrations) -> _Configure New Integration_ -> _OneLogin_.
12+
</Step>
13+
<Step title="Authorize OneLogin">
14+
Go to [Connections](https://app.nango.dev/dev/connections) -> _Add Test Connection_ -> _Authorize_, then enter your OneLogin Subdomain, Client ID and Client Secret. Later, you'll let your users do the same directly from your app.
15+
</Step>
16+
<Step title="Call the OneLogin API">
17+
Let's make your first request to the OneLogin API (fetch user information). Replace the placeholders below with your [secret key](https://app.nango.dev/dev/environment-settings), [integration ID](https://app.nango.dev/dev/integrations), and [connection ID](https://app.nango.dev/dev/connections):
18+
<Tabs>
19+
<Tab title="cURL">
20+
21+
```bash
22+
curl "https://api.nango.dev/proxy/api/2/users" \
23+
-H "Authorization: Bearer <NANGO-SECRET-KEY>" \
24+
-H "Provider-Config-Key: <INTEGRATION-ID>" \
25+
-H "Connection-Id: <CONNECTION-ID>"
26+
```
27+
</Tab>
28+
29+
<Tab title="Node">
30+
31+
Install Nango's backend SDK with `npm i @nangohq/node`. Then run:
32+
33+
```typescript
34+
import { Nango } from '@nangohq/node';
35+
36+
const nango = new Nango({ secretKey: '<NANGO-SECRET-KEY>' });
37+
38+
// Fetch users from OneLogin
39+
const res = await nango.get({
40+
// https://developers.onelogin.com/api-docs/2/users/list-users
41+
endpoint: '/api/2/users',
42+
providerConfigKey: '<INTEGRATION-ID>',
43+
connectionId: '<CONNECTION-ID>'
44+
});
45+
46+
console.log(JSON.stringify(res.data, null, 2));
47+
```
48+
</Tab>
49+
50+
</Tabs>
51+
52+
Or fetch credentials dynamically via the [Node SDK](/reference/sdks/node#get-a-connection-with-credentials) or [API](/reference/api/connection/get).
53+
54+
</Step>
55+
</Steps>
56+
57+
✅ You're connected! Check the [Logs](https://app.nango.dev/dev/logs) tab in Nango to inspect requests.
58+
59+
<Tip>
60+
Next step: [Embed the auth flow](/getting-started/quickstart/embed-in-your-app) in your app to let your users connect their OneLogin accounts.
61+
</Tip>
62+
</Tab>
63+
<Tab title="🔗 Useful links">
64+
| Topic | Links |
65+
| - | - |
66+
| Authorization | [Guide to connect to OneLogin using Connect UI](/integrations/all/onelogin/connect) |
67+
| General | [OneLogin Website](https://www.onelogin.com/) |
68+
| Developer | [How to generate an API Credential Pair](https://developers.onelogin.com/api-docs/1/getting-started/working-with-api-credentials) |
69+
| | [OneLogin API docs](https://developers.onelogin.com/api-docs/2/getting-started/dev-overview) |
70+
| | [Authorizing Resource API Calls](https://developers.onelogin.com/api-docs/2/getting-started/authorizing-resource-api-calls) |
71+
| | [How to generate OAuth Tokens](https://developers.onelogin.com/api-docs/2/oauth20-tokens/generate-tokens-2) |
72+
73+
<Note>Contribute useful links by [editing this page](https://github.com/nangohq/nango/tree/master/docs/integrations/all/onelogin.mdx)</Note>
74+
</Tab>
75+
<Tab title="🚨 API gotchas">
76+
_None yet, add yours!_
77+
78+
<Note>Contribute API gotchas by [editing this page](https://github.com/nangohq/nango/tree/master/docs/integrations/all/onelogin.mdx)</Note>
79+
</Tab>
80+
</Tabs>
81+
82+
<Info>
83+
Questions? Join us in the [Slack community](https://nango.dev/slack).
84+
</Info>
138 KB
Loading
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
---
2+
title: OneLogin - How do I link my account?
3+
sidebarTitle: OneLogin
4+
---
5+
6+
# Overview
7+
8+
To authenticate with OneLogin using OAuth2 Client Credentials, you need:
9+
1. **Subdomain** - Your OneLogin account subdomain.
10+
2. **Client ID** - A unique identifier for your API Credential Pair.
11+
3. **Client Secret** - A confidential key used to authenticate your API Credential Pair.
12+
13+
This guide will walk you through generating these credentials within OneLogin.
14+
15+
### Prerequisites:
16+
17+
- You must have a OneLogin account with administrator access.
18+
19+
### Instructions:
20+
21+
#### Step 1: Finding Your Subdomain
22+
23+
1. Log in to your OneLogin account.
24+
2. Look at the browser’s address bar at the top of the page.
25+
3. Your **Subdomain** is the value between `https://` and `.onelogin.com`. If you're logged in and the URL in your browser is: `https://acme.onelogin.com/portal`, your subdomain is `acme`.
26+
27+
28+
#### Step 2: Generating API Credentials
29+
30+
1. Log in to your OneLogin Admin Console as an account owner or administrator.
31+
2. Navigate to **Developers** > **API Credentials**.
32+
<img src="/integrations/all/onelogin/api_credentials.png"/>
33+
3. On the API Access page, click the **New Credential** button in the top right.
34+
<img src="/integrations/all/onelogin/new_credentials.png"/>
35+
4. Give your credentials a meaningful **Name**, select the appropriate **Scope** for your integration and click **Save** to generate your client credentials.
36+
<img src="/integrations/all/onelogin/create_credentials_form.png"/>
37+
38+
<img src="/integrations/all/onelogin/generated_credentials.png"/>
39+
40+
41+
#### Step 3: Enter Credentials in the Connect UI
42+
43+
Once you have your **Subdomain**, **Client ID** and **Client Secret**:
44+
1. Open the form where you need to authenticate with OneLogin.
45+
2. Enter your **Subdomain**, **Client ID** and **Client Secret** in their respective fields.
46+
3. Submit the form, and you should be successfully authenticated.
47+
48+
<img src="/integrations/all/onelogin/form.png" style={{maxWidth: "450px" }}/>
49+
50+
You are now connected to OneLogin.
77.8 KB
Loading
37 KB
Loading
58.1 KB
Loading
40.3 KB
Loading
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
## Pre-built tooling
2+
<AccordionGroup>
3+
<Accordion title="✅ Authorization">
4+
| Tools | Status |
5+
| - | - |
6+
| Pre-built authorization (OAuth) ||
7+
| Credentials auto-refresh ||
8+
| Pre-built authorization UI ||
9+
| Custom authorization UI ||
10+
| End-user authorization guide ||
11+
| Expired credentials detection ||
12+
</Accordion>
13+
<Accordion title="✅ Read & write data">
14+
| Tools | Status |
15+
| - | - |
16+
| Pre-built integrations | 🚫 (time to contribute: &lt;48h) |
17+
| API unification ||
18+
| 2-way sync ||
19+
| Webhooks from Nango on data modifications ||
20+
| Real-time webhooks from 3rd-party API | 🚫 (time to contribute: &lt;48h) |
21+
| Proxy requests ||
22+
</Accordion>
23+
<Accordion title="✅ Observability & data quality">
24+
| Tools | Status |
25+
| - | - |
26+
| HTTP request logging ||
27+
| End-to-type type safety ||
28+
| Data runtime validation ||
29+
| OpenTelemetry export ||
30+
| Slack alerts on errors ||
31+
| Integration status API ||
32+
</Accordion>
33+
<Accordion title="✅ Customization">
34+
| Tools | Status |
35+
| - | - |
36+
| Create or customize use-cases ||
37+
| Pre-configured pagination | 🚫 (time to contribute: &lt;48h) |
38+
| Pre-configured rate-limit handling | 🚫 (time to contribute: &lt;48h) |
39+
| Per-customer configurations ||
40+
</Accordion>
41+
</AccordionGroup>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
## Pre-built integrations
2+
3+
_No pre-built integration yet (time to contribute: &lt;48h)_
4+
5+
<Tip>Not seeing the integration you need? [Build your own](https://nango.dev/docs/guides/platform/functions) independently.</Tip>

0 commit comments

Comments
 (0)