Add Zendesk access-review connector
Zendesk is a multi-tenant OAuth connector keyed by the customer subdomain. The customer enters it at connect time; it rides the signed state to the callback, is re-validated, and is stored on the connector settings to build the API host. List staff (agents and admins) via GET /api/v2/users.json with cursor pagination, mapping role, active/suspended, and 2FA status; end-users are excluded. The subdomain is validated as a single DNS label at every trust boundary to close the SSRF vector, and the data client keeps the SSRF-protected transport. Zendesk OAuth across customer subdomains requires a Zendesk-approved global OAuth client; the connector goes live once those credentials are supplied via bootstrap. Signed-off-by: Aurélien Sibiril <81782+aureliensibiril@users.noreply.github.com>
This commit is contained in:
82
pkg/accessreview/drivers/testdata/zendesk.yaml
vendored
Normal file
82
pkg/accessreview/drivers/testdata/zendesk.yaml
vendored
Normal file
@@ -0,0 +1,82 @@
|
||||
---
|
||||
version: 2
|
||||
interactions:
|
||||
- id: 0
|
||||
request:
|
||||
proto: HTTP/1.1
|
||||
proto_major: 1
|
||||
proto_minor: 1
|
||||
content_length: 0
|
||||
transfer_encoding: []
|
||||
trailer: {}
|
||||
host: acme.zendesk.com
|
||||
remote_addr: ""
|
||||
request_uri: ""
|
||||
body: ""
|
||||
form:
|
||||
page[size]:
|
||||
- "100"
|
||||
role[]:
|
||||
- agent
|
||||
- admin
|
||||
headers:
|
||||
Accept:
|
||||
- application/json
|
||||
url: https://acme.zendesk.com/api/v2/users.json?page%5Bsize%5D=100&role%5B%5D=agent&role%5B%5D=admin
|
||||
method: GET
|
||||
response:
|
||||
proto: HTTP/2.0
|
||||
proto_major: 2
|
||||
proto_minor: 0
|
||||
transfer_encoding: []
|
||||
trailer: {}
|
||||
content_length: -1
|
||||
uncompressed: true
|
||||
body: |
|
||||
{
|
||||
"users": [
|
||||
{
|
||||
"id": 12345,
|
||||
"email": "alice@example.com",
|
||||
"name": "Alice Example",
|
||||
"role": "admin",
|
||||
"suspended": false,
|
||||
"active": true,
|
||||
"two_factor_auth_enabled": true,
|
||||
"last_login_at": "2025-06-01T10:00:00Z",
|
||||
"created_at": "2025-01-02T03:04:05Z"
|
||||
},
|
||||
{
|
||||
"id": 67890,
|
||||
"email": "bob@example.com",
|
||||
"name": "Bob Example",
|
||||
"role": "agent",
|
||||
"suspended": false,
|
||||
"active": true,
|
||||
"two_factor_auth_enabled": false,
|
||||
"last_login_at": null,
|
||||
"created_at": "2025-02-01T00:00:00Z"
|
||||
},
|
||||
{
|
||||
"id": 99999,
|
||||
"email": "carol@example.com",
|
||||
"name": "Carol Customer",
|
||||
"role": "end-user",
|
||||
"suspended": false,
|
||||
"active": true,
|
||||
"two_factor_auth_enabled": false,
|
||||
"last_login_at": null,
|
||||
"created_at": "2025-03-01T00:00:00Z"
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"has_more": false,
|
||||
"after_cursor": null
|
||||
}
|
||||
}
|
||||
headers:
|
||||
Content-Type:
|
||||
- application/json
|
||||
status: 200 OK
|
||||
code: 200
|
||||
duration: 1ms
|
||||
Reference in New Issue
Block a user