galaxyproject / galaxyproject/brc-analytics

User accounts: login and Galaxy identity integration (Keycloak BFF)

Open
#1,668 0 comments 0 reactions 0 assignees View on GitHub
roadmap item
Dominant language
TypeScript
Stars
7
Forks
11
Avg merge
2d 12h
Merged PRs (30d)
16

Description

# Overview

BRC Analytics needs user accounts: users can log in (including with Google), BRC knows the user's associated Galaxy identity, and BRC can securely act on the user's behalf in Galaxy (list histories, check workflow run status, maintain preferences, organize results).

# Chosen approach

Keycloak + Backend-for-Frontend, per the evaluation in #812 (Approach 4):

- **Keycloak** is the central identity provider — handles Google login, user/role provisioning, and token issuance.
- **BRC Analytics (Next.js)** owns the session in encrypted httpOnly cookies and exposes `/api/galaxy/...` routes that proxy the needed Galaxy APIs; tokens never reach the browser.
- **Galaxy** acts as the resource server, validating Keycloak JWTs.

See #812 for the full decision history and the alternatives considered. Note: the original sketch assumed NextAuth; that dependency was later removed (#1247), and the session/auth provider now comes via findable-ui / `@repo/shared`.

Supersedes #812.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the decision history in #812 and the session-provider change in #1247; the issue names no implementation files or tests. Trace the current Next.js session setup and the `/api/galaxy/...` entry points. Done means Google login, Galaxy identity association, and secure proxying of the listed Galaxy operations without exposing tokens.

Written by the indexing model from the issue text.

Assessment

Tech stack
next.js, typescript
Domain
api, authentication, backend-api-design
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.