main

Experiments

Twirp + gRPC (AuthZ)

This experiment exposes a gRPC endpoint that aligns with the Ability.allowed?(subject, permission, resource) interface from GitLab’s declarative authorization logic.

It demonstrates a headless authorization service that provides a low-latency decision point for other services to verify permissions.

Actors in this experiment:

  • Headless authz service: A facade over GitLab’s existing declarative policies.
  • API (Resource Server in OAuth terms): A slimmed-down GitLab REST API that delegates authorization decisions to the authz service.

SAML, OIDC, OAuth

This experiment showcases how a separate authx service can handle both authentication and authorization using standard protocols:

  • SAML & OIDC for authentication
  • OAuth for authorization

Actors in this experiment:

  • Authx service: Acts as a SAML Identity Provider and an OAuth Authorization Server.
  • API: A slimmed-down GitLab REST API.

API Gateway

This experiment explores a stateless authorization mechanism by integrating a policy DSL (such as Casbin) into a reverse proxy. Authorization decisions are made early in the request pipeline based on HTTP request headers and body content.

Sidecar Process

This experiment demonstrates a sidecar approach for making authorization decisions within an nginx process. Inspired by Open Policy Agent deployments. This experiment:

  • Uses lua bindings in nginx to connect to a local client process.
  • The client process proxies requests to a gRPC based policy decision service.