Commit Graph

22 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
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
Bryan Frimin
23084a72a2 Add OIDC login support for Google and Microsoft providers
Implements OpenID Connect authentication flow with PKCE, JWT verification, and enterprise-only account restrictions. Adds OIDC service with JWKS caching and state management, HTTP handlers for login/callback flows, GraphQL query for available providers, and sign-in UI integration.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-23 14:17:43 +01:00
Bryan Frimin
7b320916af Add audit log feature for recording all actions
Adds audit logging that records all authorized actions performed by
users and API keys. The audit log is automatically populated whenever
the authorizer approves an action, and is queryable via GraphQL, MCP,
and CLI interfaces. Permission checks are excluded via a dry-run flag
to avoid phantom entries on page loads.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-21 19:16:19 +01:00
Émile Ré
5684984755 Fix bot review
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-02-18 18:20:45 +04:00
Émile Ré
e220c259b3 Use trust center from context
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-01-17 12:34:23 -08:00
Émile Ré
663400c4f6 Extract cookie config into authn pkg
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-01-17 12:34:04 -08:00
Émile Ré
1257347df9 Extract authn & authz utils
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-01-17 12:34:03 -08:00
Émile Ré
c6094ff572 Implement organization assumption check in authorization layer
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-01-17 12:34:01 -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
c3d4573091 Fix get identity on organization pending invitation
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-01-17 12:17:51 -08:00
Bryan Frimin
5fafba87a7 Dog food IAM to manage IAM
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-01-17 12:14:51 -08:00
Émile Ré
e46a11001a Fix iam pages permissions handling
Signed-off-by: Émile Ré <nemile.re@gmail.com>
2026-01-17 11:08:16 -08:00
Bryan Frimin
c4699e433f Add reveal token
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-01-17 10:35:52 -08:00
Bryan Frimin
3e95c8c38a Fix missing child session on SAML
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-01-17 10:27:44 -08:00
Bryan Frimin
41a6df9aec Fix test login url returns 404
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-01-17 10:27:44 -08:00
Bryan Frimin
dccac5c088 Move UnwrapOmittable in a dedicated helper
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-01-17 10:14:56 -08:00
Émile Ré
62721f7627 Plug back general settings page
Signed-off-by: Émile Ré <nemile.re@gmail.com>
2026-01-17 10:10:27 -08:00
Bryan Frimin
f72851df4d Fix no internal error on node
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-01-17 10:10:24 -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