Commit Graph

39 Commits

Author SHA1 Message Date
Bryan Frimin
11770b4058 Add OAuth2/OpenID Connect authorization server
Implement a full OAuth2 2.0 and OpenID Connect 1.0 authorization
server with support for authorization code flow (with PKCE),
refresh token rotation, device authorization grant, dynamic
client registration, token introspection, and token revocation.

Includes database schema, coredata layer, service logic, HTTP
handlers, OIDC discovery endpoint, and JWKS publishing.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-04-19 12:00:53 +02:00
Émile Ré
36062310be Add cookie banner REST API with per-banner CORS middleware
Introduce /cookie-banner/v1/{bannerID}/config endpoint for the JS SDK.
The custom CORS middleware validates each request origin against the
specific banner being requested, preventing cross-customer leakage.

Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-15 10:20:59 +04:00
Aurélien Sibiril
244b6390cb Wire accessreview.Service into server and probod
Add AccessReview field to server.Config and api.Config,
pass through to console and MCP NewMux. Create the
service in probod and run its background workers.

Signed-off-by: Aurélien Sibiril <81782+aureliensibiril@users.noreply.github.com>
2026-04-02 14:37:29 +02:00
Bryan Frimin
84a35c90e9 Add session transfer for SSO cookies on custom domains
After OIDC login, if the redirect targets a trust center custom
domain, the callback now redirects through a session-transfer
endpoint on that domain. The endpoint verifies an HMAC-signed,
time-limited token and sets the session cookie on the custom
domain before redirecting to the final URL.

The continue URL is bound into the signed token payload to
prevent open-redirect attacks via parameter tampering.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-31 14:49:20 +02:00
Bryan Frimin
419c93fc7d Fix compliance page login redirect to custom domains
SafeRedirect previously matched against a single static host string,
so OIDC callbacks always fell back to the console instead of
redirecting back to compliance pages on custom domains. Refactor
AllowedHost into a dynamic AllowedHostFunc and wire a trust-service
lookup into the connect handler so custom domain hosts are accepted.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-31 10:51:34 +02:00
Sacha Al Himdani
8c02c53315 Update copyright headers across all Go files
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-03-25 17:38:32 +01:00
Sacha Al Himdani
8b66a61990 Run go fix and go fmt
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-03-19 16:37:51 +01:00
Bryan Frimin
40df76d8b4 Fix SAML ACS endpoint CORS rejection
The SAML Assertion Consumer Service endpoint receives cross-origin POSTs from external identity providers by design. Bypass CSRF protection for this specific endpoint since the endpoint validates SAML response signatures itself.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-19 16:07:53 +01:00
Bryan Frimin
ea21f85887 Add http.CrossOriginProtection for CSRF defense using Sec-Fetch-Site headers
Implements native Go 1.26 cross-origin protection to block state-changing cross-origin browser requests. Registers configured AllowedOrigins as trusted origins and wraps the API router to check all incoming requests. Non-browser clients (MCP, Slack webhooks) are unaffected as they lack the browser-only Sec-Fetch-Site header.

Signed-off-by: gearnode <gearnode@probo.inc>
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-19 09:31:52 +01:00
Bryan Frimin
a5743729f7 Add file visibility (PRIVATE/PUBLIC) + public files API
Adds a visibility enum to files with PRIVATE (default) and PUBLIC states.
PUBLIC files are accessible via an unauthenticated /api/files/v1/{fileID}
endpoint that redirects to a presigned S3 URL. Introduces pkg/file service
to manage file operations. Logo uploads (trust centers, organizations,
frameworks, references) are marked PUBLIC; other files are PRIVATE.
Includes database migration and backfill for existing logos.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-18 19:19:04 +01:00
Sacha Al Himdani
4d2cb793b6 Add compliance page mailing list base
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-03-11 15:34:36 +01:00
Bryan Frimin
c191d25e9a Add electronic signature
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-02-23 09:38:27 +01:00
Bryan Frimin
ece54f1616 Fix golint errors
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-02-02 18:42:50 +01:00
Émile Ré
8b3bda56e6 Add magic link login for trust center
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-01-17 12:34:24 -08:00
Bryan Frimin
31f79fccce Add SCIM handler draft
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-01-17 12:22:44 -08:00
Bryan Frimin
63abfe3698 Fix not token secret
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-01-17 10:35:52 -08:00
Bryan Frimin
74fc3b8cd1 Rewrite identity and access management
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-01-17 10:07:34 -08:00
manish-singh-bisht
69f876484e nil check for slack
Signed-off-by: manish-singh-bisht <mthefool218@gmail.com>
2025-12-11 18:42:26 +01:00
manish-singh-bisht
8eeab0a6d0 feat:pull the slack message service out to slack pkg
Signed-off-by: manish-singh-bisht <mthefool218@gmail.com>
2025-12-11 18:42:26 +01:00
Sacha Al Himdani
21c4b7cd9d Add role management
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2025-11-13 17:11:22 +01:00
Bryan Frimin
6d1760ce9b Use enum values
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-11-12 12:04:35 +01:00
Bryan Frimin
fcbfd93f26 Fix route mount for each requests
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-11-12 12:04:34 +01:00
Bryan Frimin
1436d0db08 Add simple MCP server
Proof of concept of working MCP server for Probo. Currently the official
MCP library does not support session that why the server is configured
in stateless mode. It seams the input jsonschema is not used to perform
any validation, so we should figuring out how to validate the input
properly.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-11-12 12:04:34 +01:00
Sacha Al Himdani
fee5a9232e Make secure cookie configurable
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2025-11-04 17:09:51 +01:00
Bryan Frimin
59aa332ab5 Move to vanity import url
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-10-31 17:01:52 +01:00
Bryan Frimin
2766f8e423 Add SAML support
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-10-30 16:31:27 +01:00
Bryan Frimin
0f96b8518f Refactoring of authentification
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-10-14 16:32:22 +02:00
Bryan Frimin
65b7d90d61 Update trust center handler
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-10-09 15:06:40 +02:00
Bryan Frimin
2865b484bc Add cusotmizable cname target domain
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-10-09 15:04:52 +02:00
Sacha Al Himdani
e0ad0fc4f2 Use configuration for report url duration
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2025-08-06 16:34:44 +02:00
Sacha Al Himdani
4ff71312f9 Split Config
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2025-08-06 16:34:43 +02:00
Sacha Al Himdani
cb3d79502d Add trust center front
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2025-08-06 16:34:43 +02:00
Bryan Frimin
c29c857e29 Fix missing people role order
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-06-24 09:39:40 -07:00
Bryan Frimin
11a2282c3e Add default security header to API
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-06-23 09:07:27 -07:00
Bryan Frimin
0ea848ed8a Log graphql error
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-05-16 20:40:16 -07:00
Bryan Frimin
0387987612 Add signature handlers
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-04-30 00:23:30 -07:00
Bryan Frimin
85935ac1dc Add redirect back to specific page
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-04-20 21:16:18 -07:00
Bryan Frimin
5370d59451 Add connector service and http handlers
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2025-04-20 21:16:16 -07:00
gearnode
123a538d82 Embded frontend inside go binary
This will simplify the self hosting of the platform.

Signed-off-by: gearnode <bryan@frimin.fr>
2025-03-09 15:30:28 +01:00