Naar de hoofdinhoud

Je fremforge-account

Een fremforge-account is je persoonlijke identiteit op het platform. Een organisatie is een tenant die wordt gefactureerd: een werkruimte waarin repository’s, leden, secrets, CI-runs en beleid staan. Het zijn bewust twee aparte begrippen. Deze pagina beschrijft wat waar staat, hoe ze samenhangen en hoe je elk van beide verwijdert.

Eén account, veel organisaties

Je meldt je één keer aan. Je krijgt één persoonlijk account op frem.sh/<your-username> met je e-mailadres, je SSH-sleutels, je persoonlijke toegangstokens, je 2FA en je lokale wachtwoord (als je er een instelt). Overal waar je je bij fremforge authenticeert, in de UI, via Git of via de API, doe je dat als dat account.

Lidmaatschap van een organisatie is een aparte relatie. Je ene account kan lid zijn van nul, één of veel organisaties. Elke organisatie betaalt haar eigen gebruiker voor jou. De organisaties waartoe je behoort, zie je in de organisatiewisselaar van de UI.

Twee gevolgen die goed zijn om te onthouden:

  • Je uit een organisatie verwijderen, verwijdert je account niet. Beheerders van een organisatie kunnen je op elk moment uit hun organisatie verwijderen; dat trekt je toegang tot hun repository’s in en haalt een betalende gebruiker van hun telling af, maar je persoonlijke account blijft bestaan en je kunt lid worden van andere organisaties.
  • Je account verwijderen, verwijdert de organisaties waartoe je behoort niet. Ben je de enige eigenaar van een organisatie, dan eist het platform dat je eerst een andere eigenaar aanwijst of de organisatie volledig opzegt voordat je verzoek om je account te verwijderen kan worden afgerond.

Lid worden van een tweede organisatie

Je kunt de oprichtende beheerder van meer dan één fremforge-organisatie zijn zonder meerdere accounts aan te maken. Twee gevallen:

  • Zelfde e-mailadres, nieuwe aanmelding. Meld je een nieuwe organisatie aan op frem.sh/_app/signup met een e-mailadres dat al een fremforge-account heeft, dan herkent de aanmelding de bestaande gebruiker, hergebruikt die en voegt je toe als Eigenaar van de nieuwe organisatie. Je krijgt geen tweede wachtwoord: je bestaande inloggegevens werken voor beide organisaties, en de knop in de welkomstmail luidt "<slug> openen →" (aanmelden met je bestaande wachtwoord) in plaats van de eenmalige link “Inloggen bij fremforge →” die een gloednieuwe beheerder krijgt. (Geen enkele welkomstmail van fremforge bevat ooit een wachtwoord.)
  • Uitgenodigd voor een bestaande organisatie. Nodigt een andere beheerder je e-mailadres uit, dan accepteer je de uitnodiging vanaf frem.sh/user/notifications en word je toegevoegd als lid van die organisatie. Geen tweede account, geen tweede wachtwoord.

Elke organisatie heeft haar eigen factuurrelatie met fremverk, haar eigen aantal gebruikers, haar eigen Mollie-mandaat, haar eigen facturen en haar eigen beheeromgeving op frem.sh/<slug>/_admin/billing. Er is geen gezamenlijke factuur over organisaties heen.

Wisselen tussen organisaties

Er is in frem.sh/_app geen organisatiewisselaar in het product; het beheer per tenant wordt bepaald door de slug in het URL-pad (/<slug>/_admin/...). De natuurlijke wisselaar zit aan de Forgejo-kant op frem.sh:

  1. Meld je aan op frem.sh/user/login (of klik ergens op de marketingsite op “Sign in”; dat stuurt je via frem.sh/_app/login voor het herkennen van je e-maildomein, zie Zo werkt aanmelden).
  2. Je dashboard toont elke organisatie waartoe je behoort. Klik er een aan om te beginnen: repository’s, issues, CI, instellingen.
  3. Om het fremforge-beheer (facturatie, SSO, leden) van een specifieke organisatie te openen, ga je naar frem.sh/<slug>/_admin/billing. De meeste mensen maken een bladwijzer van de beheer-URL van elke organisatie die ze beheren.

Sessiebinding per organisatie staat voor elke tenant standaard aan. De eerste keer dat je het beheer van een organisatie opent, stuurt fremforge je voor die organisatie door een aanmeldrondje en houdt het daarvan per organisatie tot 8 uur lang een registratie bij. Wat dat rondje bewijst, hangt af van het niveau hieronder. Bij zachte binding bewijst het dat je browser een geldige aanmelding heeft, niet dat je je net opnieuw hebt aangemeld. Alleen harde binding laat je opnieuw authenticeren.

Het doel van het rondje is de universele aanmelding van Forgejo op frem.sh/user/login, geen SSO-URL per organisatie. Dat is bewust: de universele aanmelding accepteert zowel de gekoppelde SSO-knoppen als een lokaal wachtwoord + 2FA, en daarmee blijft de SSO-noodtoegang intact: is je IdP onbereikbaar, dan kan een eigenaar van de organisatie met lokale inloggegevens en 2FA zich nog steeds authenticeren, door de binding per organisatie komen en het organisatiebeheer bereiken. Een omweg via een SSO-URL per organisatie zou een single point of failure creëren (de IdP van de organisatie), en die is precies wat het ontwerp van de noodtoegang moet voorkomen.

Twee sterkteniveaus, afhankelijk van hoe je IdP is gekoppeld:

  • Zachte binding (standaard, noodtoegang met lokale inloggegevens blijft behouden): per organisatie een registratie van wie het beheer van elke organisatie gebruikte en wanneer, en bij de eerste toegang tot elke organisatie een rondje via Forgejo. Is je Forgejo-sessie actueel, dan merk je niets van het rondje en wordt er niets gevraagd: het bewijst dat je een sessie hebt, geen verse authenticatie. Is de sessie niet actueel, dan meld je je opnieuw aan. Het doel is frem.sh/user/login, dat een lokaal wachtwoord + 2FA accepteert, zodat een storing bij de IdP eigenaren van organisaties niet buitensluit.
  • Harde binding (gereguleerde workloads): per organisatie afgedwongen hernieuwde bevestiging door de IdP via OIDC prompt=login. Het rondje wordt dan een echte, door de IdP bevestigde authenticatie voor die organisatie: de IdP MOET opnieuw om inloggegevens en MFA vragen, en onze callback controleert dat auth_time binnen de laatste 5 minuten ligt. Je koppelt het door in je IdP naast de Forgejo-client een tweede OIDC-client te registreren (zelfde issuer, aparte client_id + client_secret) en de inloggegevens in Organisatiebeheer → SSO te plakken.

Beide niveaus behouden de SSO-noodtoegang: eigenaren van organisaties met een lokaal wachtwoord + 2FA kunnen elke storing bij de IdP opvangen. Harde binding dwingt alleen een verse authenticatie bij de IdP af zolang de IdP van je organisatie bereikbaar is. Wordt je IdP onbereikbaar, dan werkt je bestaande noodprocedure nog steeds.

SSO over meerdere organisaties

Elke organisatie koppelt haar eigen IdP onder Organisatiebeheer → SSO. Gebruikers melden zich bij een specifieke organisatie aan via de knop <auth-source-name> van die organisatie op frem.sh/user/login?redirect_to=/<slug> (of via de herkenning op frem.sh/_app/login, die je op basis van het domein van je e-mailadres naar de juiste aanmeldpagina stuurt).

Ben je lid van twee organisaties met verschillende IdP’s, dan authenticeer je via de IdP waarlangs je binnenkomt; zodra je Forgejo-sessie bestaat, werkt het navigeren tussen organisaties zoals hierboven. Gebruiken beide organisaties dezelfde IdP (bijv. twee bedrijfsonderdelen op dezelfde Authentik-tenant), dan brengt één authenticatie je in beide.

De eerste toegang tot een andere organisatie stuurt je één keer om. Waar die omweg heen gaat, hangt ervan af of de organisatie harde binding heeft gekoppeld (een OIDC-client voor step-up):

  • Organisatie met harde binding: de omweg gaat naar frem.sh/<slug>/_admin/-/stepup, dat een OIDC-AuthN-verzoek met prompt=login start tegen de step-up-client van de organisatie. Je IdP vraagt opnieuw om inloggegevens en MFA, de callback controleert het ID-token en hoe vers auth_time is, en je komt terug op de oorspronkelijke URL met een nieuwe sessieregistratie voor die organisatie.
  • Organisatie met zachte binding: de omweg gaat naar frem.sh/user/login. De universele aanmelding van Forgejo toont de beschikbare auth-bronnen: altijd een lokaal wachtwoord + 2FA, plus de SSO-knop van je organisatie als die is gekoppeld. Is je bestaande Forgejo-sessie vers, dan volgt de pagina gewoon redirect_to zonder opnieuw te vragen.

Beide niveaus laten de noodtoegang met lokale inloggegevens intact. Een eigenaar van een organisatie met een lokaal wachtwoord + 2FA op de universele aanmelding van Forgejo kan elke storing bij de IdP opvangen; de binding per organisatie verandert niets aan die afspraak.

Gegevens op accountniveau en op organisatieniveau

Dit is de scheidslijn die bepaalt wie onder de AVG waarover beslist en waar je welke instelling vindt.

GegevensStaan opVerwerkingsverantwoordelijkeWaar te beheren
E-mailadres, weergavenaam, wachtwoordhashAccountfremverk ApSGebruikersinstellingen → Beveiliging en inloggen
SSH-sleutels, GPG-sleutelsAccountfremverk ApSGebruikersinstellingen → SSH / GPG sleutels
Persoonlijke toegangstokensAccountfremverk ApSGebruikersinstellingen → Git-toegangstokens
2FA-registratie + herstelcodesAccountfremverk ApSGebruikersinstellingen → Beveiliging en inloggen
Lokaal wachtwoord (als SSO ook is ingericht)Accountfremverk ApSGebruikersinstellingen → Beveiliging en inloggen
OIDC-koppelingAccount, per organisatieEigenaar van de organisatie + IdPOrganisatiebeheer → SSO
Repository’s, issues, PR’s, wikiOrganisatieDe organisatie (klant)Organisatiebeheer / repository-instellingen
Secrets, runners en beleid op organisatieniveauOrganisatieDe organisatie (klant)Organisatiebeheer
AuditlogOrganisatieDe organisatie (klant)Auditlog
Facturatie, facturen, betaalmethodeOrganisatieDe organisatie (klant)Organisatiebeheer → Facturatie

Gegevens op accountniveau vallen onder de privacyverklaring voor het product; fremverk ApS is de verwerkingsverantwoordelijke. Inhoud op organisatieniveau valt onder de verwerkersovereenkomst; je organisatie is de verwerkingsverantwoordelijke en fremverk is de verwerker namens haar.

Naslag accountinstellingen

frem.sh/user/settings is de pagina met persoonlijke instellingen, weergegeven door Forgejo. De relevante subpagina’s:

  • Profiel: naam, e-mailadres, avatar, taalvoorkeur.
  • Beveiliging en inloggen: lokaal wachtwoord, 2FA, herstelcodes, account verwijderen. Zie Tweefactorauthenticatie.
  • SSH-sleutels en GPG keys: publieke sleutels voor Git-bewerkingen en het ondertekenen van commits.
  • Git-toegangstokens: persoonlijke toegangstokens (PAT’s). OAuth-applicaties die je hebt geautoriseerd, zie je en trek je in op frem.sh/user/settings/applications; die pagina staat niet in het instellingenmenu.
  • Meldingen: voorkeuren voor meldingen per e-mail en in de app.

Via de REST-API

Een handvol bewerkingen op accountniveau is ook beschikbaar via de openbare REST-API. Handig bij het scripten van een CI-bootstrap, om te controleren voor welke organisaties een token kan handelen, of om PAT’s vanuit een automatisering te roteren.

  • Je profiel + lidmaatschappen van organisaties lezen GET /_app/api/v1/users/me
  • Een persoonlijk toegangstoken uitgeven POST /_app/api/v1/auth/tokens
  • Je actieve tokens opvragen GET /_app/api/v1/auth/tokens
  • Een token intrekken DELETE /_app/api/v1/auth/tokens/:tokenId

Authenticeer met een persoonlijk toegangstoken (PAT) als Authorization: Bearer ${FREMFORGE_PAT}. Voor het uitgeven van een nieuw PAT is een actieve aanmeldsessie in de beheer-UI nodig; de scope van het uitgegeven token kan niet verder gaan dan je rol.

curl -H "Authorization: Bearer ${FREMFORGE_PAT}" \
  https://frem.sh/_app/api/v1/users/me

Zie de naslag van de openbare REST-API voor de volledige OpenAPI-specificatie.

De bovengenoemde onderdelen van het persoonlijke account (SSH-sleutels, GPG-sleutels, 2FA-registratie, account verwijderen) zijn bewust niet beschikbaar via de openbare REST-API: het zijn acties op persoonlijke inloggegevens die om veiligheidsredenen een aangemelde browsersessie vereisen.

Je fremforge-account verwijderen (AVG-recht op vergetelheid)

Volgens AVG art. 17 heb je het recht om je persoonsgegevens te laten wissen, met beperkte uitzonderingen voor wettelijke bewaarplichten. fremverk ApS ondersteunt dat recht als verwerkingsverantwoordelijke voor je accountgegevens.

Wat je zelf kunt verwijderen

User settings → Security & sign-in → Delete account. Verwijderen in selfservice:

  1. Verwijdert je uit elke organisatie waarvan je op dat moment lid bent. Het aantal gebruikers van elke betrokken organisatie gaat bij de volgende factuurcyclus omlaag.
  2. Reserveert je gebruikersnaam permanent (tombstone), zodat die niet opnieuw kan worden geregistreerd (dat voorkomt dat iemand zich voordoet als jou in historische commits en auditlogregels).
  3. Wist je persoonlijke accountgegevens definitief: profiel, SSH-sleutels, GPG-sleutels, PAT’s, 2FA-secret, hashes van herstelcodes, meldingsvoorkeuren. Binnen 30 dagen; het wissen uit back-ups volgt binnen nog eens 30 dagen volgens DPA §9.
  4. Behoudt je historische bijdragen: auteurschap van commits, issues en PR’s, opmerkingen, auditlogregels die je noemen. Die verwijderen zou elke organisatie beschadigen die op deze gegevens rekent als bewijs van wie wat deed. In de live UI wordt je gebruikersnaam getoond als <deleted-account>, terwijl de onderliggende verwijzing naar het gebruikers-id (een vast geheel getal) audit- en Git-geschiedenis intact houdt.

Wat via support moet

Twee gevallen vragen om actie via compliance@frem.sh:

  • Je bent de enige eigenaar van een organisatie. Verwijderen in selfservice is dan geblokkeerd. Wijs via Organisatiebeheer → Leden een andere eigenaar aan en verwijder daarna je account, of schrijf naar compliance@frem.sh met het verzoek organisatie en account samen te verwijderen.
  • Je wilt historische bijdragen actief laten herschrijven. Standaard blijft de toeschrijving behouden onder een gereserveerde gebruikersnaam. Heb je een gedocumenteerde juridische grond voor een verdergaand wissen (bijvoorbeeld een definitieve wijziging van je wettelijke naam die in gerechtelijke documenten staat), mail dan compliance@frem.sh met die grond. Elk verzoek wordt afzonderlijk beoordeeld tegen de beperkingen van AVG art. 17, lid 3.

Wat we niet op verzoek verwijderen

Volgens AVG art. 17, lid 3 mag het volgende na het verwijderen van een account worden bewaard:

  • Factuur- en betalingsgegevens van organisaties waarmee je verbonden was, 5 jaar bewaard volgens de Deense boekhoudwet (Bogføringsloven).
  • Auditlogregels over beveiliging en misbruik waar bewaring nodig is voor het vaststellen, uitoefenen of verdedigen van rechtsvorderingen, of om aan een wettelijke verplichting te voldoen (bijv. meldingen van misbruik onder DSA art. 16, 5 jaar bewaard volgens privacyverklaring §6).
  • Geaggregeerde, geanonimiseerde operationele statistieken, die je niet kunnen identificeren en buiten het AVG-begrip persoonsgegevens vallen.

Verificatie voor het verwijderen

Een account verwijderen is destructief en onomkeerbaar. Het selfserviceproces vraagt je opnieuw te authenticeren (lokaal wachtwoord, of een step-up bij de IdP als je alleen SSO gebruikt) en te bevestigen door je gebruikersnaam te typen, hetzelfde Forgejo-patroon als bij het verwijderen van een repository. Bij het indienen wordt een bevestigingsmail verstuurd, en nog een keer zodra het wissen uit de back-ups is afgerond.

Opnieuw activeren

Is het verwijderen afgerond, dan kan het account niet opnieuw worden geactiveerd. De gebruikersnaam blijft gereserveerd voor het verwijderde gebruikers-id om de historische toeschrijving te beschermen, dus je kunt dezelfde gebruikersnaam niet opnieuw registreren bij een nieuwe aanmelding. Wil je fremforge weer gebruiken, meld je dan aan met een nieuw e-mailadres en een andere gebruikersnaam.

Kruisverwijzingen