Encipher API Authorization Flow

The diagram below illustrates the entire authentication process, read left to right and top to bottom.

sequenceDiagram
  web-browser->>+ivsvc-caddy: /auth/login
  ivsvc-caddy->>-web-browser: html using <sk-login-select>

  web-browser->>+ivc-auth: /api/auth/start
  ivc-auth->>+ivsvc-dexidp: start authentication flow
  ivsvc-dexidp->>-ivc-auth: authentication url
  ivc-auth->>-web-browser: JSON response

  web-browser->>+ivsvc-dexidp: /dex/auth?...
  ivsvc-dexidp->>-web-browser: redirect to OpenID Connect provider (OIDC)
  
  web-browser->>+OIDC Provider: OIDC authenticate flow with Google, LinkedIn, Auth0, Okta, or other spec-compliant provider
  OIDC Provider->>-web-browser: redirect to /dex/callback?...

  web-browser->>+ivsvc-dexidp: /dex/callback?...
  ivsvc-dexidp->>-web-browser: redirect to /login/cb.html?code=...&state=...

  web-browser->>ivsvc-caddy: /login/cb.html?code=...&state=...

  web-browser->>+ivc-auth: /api/auth/cb?code=...&state=...
  ivc-auth->>+ivsvc-dexidp: validate code and state
  ivsvc-dexidp->>-ivc-auth: approve or reject login
  ivc-auth->>-web-browser: JSON response with cookies

  web-browser->>ivc-zsession: start ZSession with /api/zs/conn

Navigation: