Mappa eID-anspråk till Auth0 med Actions och Rules

Av Natalia Moskaleva den 23 januari 2026

7 min lästid

Från användare till auth0 till eID:er

Genom vårt partnerskap med Auth0 erbjuder Idura en rad eID-tjänster som hjälper Auth0-kunder att effektivisera identitetsverifiering och förbättra användarupplevelsen genom att låta användare logga in med sitt nationella eID.
I ett tidigare blogginlägg visade vi hur enkelt det är att koppla ihop en Auth0-applikation med norskt BankID via Idura. Men det är lika enkelt att lägga till alla andra eID som vi stöder i en befintlig Auth0-applikation. Allt som krävs är att lägga till en ny Enterprise Connection med lite varierande konfigurationer.

Låt oss titta närmare på mappningen av Idura-anspråk till Auth0. Detta kan göras med hjälp av två olika metoder: Auth0-regler eller Auth0-åtgärder.

Den första, mer okomplicerade metoden, innebär att man lägger till ett anpassat anspråk med hjälp av en regel.

Att använda Actions, å andra sidan, kräver några fler konfigurationer och användning av Auth0 Management API.

I slutet av den här guiden kommer du att ha en bättre förståelse för hur du konfigurerar integrationen mellan Idura och Auth0 för att uppfylla dina behov och få tillgång till all nödvändig användardata.

För att följa med behöver du en Auth0-applikation med en OpenID Connect Enterprise Connection för det eID du väljer. (Den här guiden hjälper dig om du vill komma igång).

1. Lägga till ett anpassat anspråk med Auth0 Rules

Lägga till en ny regel

Den här metoden innebär att du lägger till en regel i inloggningsflödet i din Auth0-applikation.

I regeln definierar vi logiken som lägger till ett anpassat anspråk till ID-token som genereras av Auth0 vid en lyckad användarinloggning. När en användare loggar in med sitt eID kommer informationen från Identity Provider att inkluderas i deras Auth0-användarprofil.

Vi visar kodexempel för att inkludera personnummer från olika europeiska eID:n, samt CVR-nummer för det danska MitID Erhverv (MitID Business), i ett anpassat anspråk. Du kan lägga till andra anpassade krav från externa Identity Providers på samma sätt.

I Idura-implementationen har varje nationellt eID en unik JWT-nyckel för ett personnummer, sammanfattat i tabellen nedan:

eID

SSN

Danska MitID &
MitID Erhverv
(MitID Business)

cprNumberIdentifier

Svenskt BankID

ssn

Norskt BankID

socialno

Finskt förtroendenätverk

hetu

För mer information om varje eID, inklusive fullständigt JWT-innehåll, se vår dokumentation.

Lägga till en ny Auth0-regel

  1. I Auth0 väljer du Auth Pipeline och sedan Regler på huvudmenyn.
  2. Skapa en ny regel med hjälp av regelmallen Empty.
  3. Välj ett namn för regeln (t.ex. "Add SSN to ID Token") och lägg sedan till ett skript för den eID du väljer. Se kodsnuttarna nedan ("https://example.com" är en platshållare för ditt eget namnområde).
  4. När du har lagt till skriptet klickar du på Spara ändringar.
  5. Kontrollera att regeln är aktiverad för ditt inloggningsflöde. Du kan kontrollera detta i Åtgärder > Flöden > Inloggning eller genom att kontrollera att regeln är aktiverad.

Kodsnuttar

Danskt MitID

Detta exempel kartlägger endast användarens SSN. Du kan se hela listan över danska MitID-anspråk här.

function (user, context, callback) {
  context.idToken['https://example.com/cprNumberIdentifier'] = user.cprNumberIdentifier;
  return callback(null, user, context);
 }


Danska MitID Erhverv (MitID Business)

Det här exemplet kartlägger användarens SSN och CVR-numret för det företag som användaren är ansluten till. Du kan se den fullständiga listan över danska MitID Erhverv-anspråk här.

function (user, context, callback) {
 context.idToken['https://example.com/cprNumberIdentifier'] = user.cprNumberIdentifier;
 context.idToken['https://example.com/cvrNumberIdentifier'] = user.cvrNumberIdentifier;
 return callback(null, user, context);
}


Svenskt BankID

Detta exempel kartlägger endast användarens SSN. Du kan se den fullständiga listan över svenska BankID-anspråk här.

function (user, context, callback) {
 context.idToken['https://example.com/ssn'] = user.ssn;
 return callback(null, user, context);
}

 

Norskt BankID

Detta exempel kartlägger endast användarens SSN. Du kan se hela listan över norska BankID-krav här. (Observera att för norskt BankID kräverytterligare användardata uttryckligt samtycke från användaren).

function (user, context, callback) {
 context.idToken['https://example.com/socialno'] = user.socialno;
 return callback(null, user, context);
}

 

Finnish Trust Network

I det här exemplet kartläggs endast användarens SSN. Du kan se den fullständiga listan över Finnish Trust Network-anspråk här.

function (user, context, callback) {
 context.idToken['https://example.com/hetu'] = user.hetu;
 return callback(null, user, context);
}

Det är allt som krävs. När socialförsäkringsnumret (eller ett företags CVR-nummer) är tillgängligt via ett nationellt eID via Idura, kommer det att läggas till i Auth0 ID-token (så länge regeln är aktiverad).

image3

2. Lägga till ett anpassat anspråk med Auth0-åtgärder

Åtgärder erbjuder mer flexibilitet än regler och är det rekommenderade sättet att lägga till anpassade anspråk till åtkomst- och ID-tokens.

Men för närvarande har Auth0 Actions en begränsning som innebär att de inte exponerar användardata från externa Identity Providers. Du kan för närvarande inte komma åt de anspråk som läggs till av Identity Providers i Actions-koden, så du måste arbeta runt denna begränsning.

Den enda lösningen vi hittade är att integrera en anpassad åtgärd med Management API för att leta upp användarprofilen. Vi förklarar stegen nedan, så att du kan välja den implementering som fungerar bäst för dig. Tänk på att Auth0 Management API har hastighetsbegränsningar vid hög användning (se ovanstående länk till åtgärdsbegränsningar).

Konfigurera Management API och skapa en anpassad åtgärd

Vi kommer att använda denna genomgång för att lägga till Management API i vår åtgärdskod. Vi kommer att använda Management API-klienten för att komma åt användarprofilen och hämta nödvändiga data. (I vårt fall användarens personnummer som finns tillgängligt i JWT-krav som tillhandahålls av Idura).

1.För att konfigurera Management API, skapa och auktorisera en Machine to Machine Application för åtgärden.
2.Auktorisera den för att använda Management API med nödvändiga scopes. Vi behöver Read:users och update:users.

image4

3. På fliken Actions skapar du en ny anpassad Action med triggern Login / Post Login.

image2

4. Lagra applikationens autentiseringsuppgifter i åtgärdens event.secrets-objekt. Du hittar domänen, klient-ID:t och klienthemligheten på fliken Settings i Machine to Machine Application som skapades i steg 1.

image5

5. Lägg till npm-modulen auth0.

image1

6. Lägg till din Action-kod. Initiera och använd Management API-klienten i åtgärden för att komma åt användarprofilen. Lägg sedan till ett anpassat anspråk.

Precis som med Rules kan din Action-kod skilja sig något beroende på vilken eID du hämtar data från. Kodsnuttarna nedan visar hur du lägger till ett anpassat Social Security Number-krav som är tillgängligt via ett nationellt eID genom Idura. För danska MitID och norska BankID lägger vi också till ett anpassat anspråk som innehåller användarens adress.

 

Danskt MitID

const ManagementClient = require('auth0').ManagementClient;

exports.onExecutePostLogin = async (event, api) => {
  const namespace = 'https://example.com';
  const management = new ManagementClient({
    domain: event.secrets.AUTH0_DOMAIN,
    clientId: event.secrets.AUTH0_MANAGEMENT_CLIENT_ID,
    clientSecret: event.secrets.AUTH0_MANAGEMENT_CLIENT_SECRET,
    scope: 'read:users update:users',
  });
  const user = await management.getUser({ id: event.user.user_id });

  api.idToken.setCustomClaim(`${namespace}/address`, user.address);
  api.idToken.setCustomClaim(`${namespace}/cprNumberIdentifier`, user.cprNumberIdentifier);
};

* För danska MitID är det möjligt att köpa ett tillägg för att söka upp lagliga, verifierade adresser för danska medborgare.

 

Danskt MitID Erhverv (MitID Business)

const ManagementClient = require('auth0').ManagementClient;

exports.onExecutePostLogin = async (event, api) => {
  const namespace = 'https://example.com';
  const management = new ManagementClient({
    domain: event.secrets.AUTH0_DOMAIN,
    clientId: event.secrets.AUTH0_MANAGEMENT_CLIENT_ID,
    clientSecret: event.secrets.AUTH0_MANAGEMENT_CLIENT_SECRET,
    scope: 'read:users update:users',
  });
  const user = await management.getUser({ id: event.user.user_id });

  api.idToken.setCustomClaim(`${namespace}/cprNumberIdentifier`, user.cprNumberIdentifier);
  // Danish Business Registry Number (CVR Nummer)
  api.idToken.setCustomClaim(`${namespace}/cvrNumberIdentifier`, user.cvrNumberIdentifier);
};

* För danska MitID Erhverv kommer företagets CVR-nummer att finnas tillgängligt i JWT-kraven.


Svenskt BankID

const ManagementClient = require('auth0').ManagementClient;

exports.onExecutePostLogin = async (event, api) => {
  const namespace = 'https://example.com';
  const management = new ManagementClient({
    domain: event.secrets.AUTH0_DOMAIN,
    clientId: event.secrets.AUTH0_MANAGEMENT_CLIENT_ID,
    clientSecret: event.secrets.AUTH0_MANAGEMENT_CLIENT_SECRET,
    scope: 'read:users update:users',
  });
  const user = await management.getUser({ id: event.user.user_id });

  api.idToken.setCustomClaim(`${namespace}/ssn`, user.ssn);
};

Norskt BankID

const ManagementClient = require('auth0').ManagementClient;

exports.onExecutePostLogin = async (event, api) => {
  const namespace = 'https://example.com/';
  const management = new ManagementClient({
    domain: event.secrets.AUTH0_DOMAIN,
    clientId: event.secrets.AUTH0_MANAGEMENT_CLIENT_ID,
    clientSecret: event.secrets.AUTH0_MANAGEMENT_CLIENT_SECRET,
    scope: 'read:users update:users',
  });
  const user = await management.getUser({ id: event.user.user_id });

  api.idToken.setCustomClaim(`${namespace}/address`, user.address);
  api.idToken.setCustomClaim(`${namespace}/socialno`, user.socialno);
};

* För norska BankID är obekräftad adressinformation tillgänglig på begäran så länge användaren har gett uttryckligt samtycke.

Finnish Trust Network

const ManagementClient = require('auth0').ManagementClient;

exports.onExecutePostLogin = async (event, api) => {
  const namespace = 'https://example.com/';
  const management = new ManagementClient({
    domain: event.secrets.AUTH0_DOMAIN,
    clientId: event.secrets.AUTH0_MANAGEMENT_CLIENT_ID,
    clientSecret: event.secrets.AUTH0_MANAGEMENT_CLIENT_SECRET,
    scope: 'read:users update:users',
  });
  const user = await management.getUser({ id: event.user.user_id });

  api.idToken.setCustomClaim(`${namespace}/hetu`, user.hetu);
};

 

Flera e-legitimationer i en åtgärd

const ManagementClient = require('auth0').ManagementClient;

exports.onExecutePostLogin = async (event, api) => {
  const namespace = 'https://example.com/';
  const management = new ManagementClient({
    domain: event.secrets.AUTH0_DOMAIN,
    clientId: event.secrets.AUTH0_MANAGEMENT_CLIENT_ID,
    clientSecret: event.secrets.AUTH0_MANAGEMENT_CLIENT_SECRET,
    scope: 'read:users update:users',
  });
  const user = await management.getUser({ id: event.user.user_id });

  // Danish MitID
  api.idToken.setCustomClaim(`${namespace}/cprNumberIdentifier`, user.cprNumberIdentifier);
  // Swedish BankID
  api.idToken.setCustomClaim(`${namespace}/ssn`, user.ssn);
  // Finnish Trust Network
  api.idToken.setCustomClaim(`${namespace}/hetu`, user.hetu);
};

När du har sparat och distribuerat åtgärden lägger du till den i inloggningsflödet. Användarens personnummer kommer nu att finnas tillgängligt i den ID-token som genereras av Auth0 vid lyckad autentisering.

{
 "https://example.com/cprNumberIdentifier": "2511221865",
 "nickname": "Severin Poulsen",
 "name": "Severin Poulsen",
 "birthdate": "1922-11-25",
 "iat": 1682322427,
 "exp": 1682358427
}

Sammanfattning

Vi har nu utforskat två tillvägagångssätt för att lägga till ett anpassat eID-krav i Auth0.

Vi hoppas att den här guiden är användbar för utvecklare som implementerar externa identitetsleverantörers kravmappning i Auth0.

Har du några frågor eller behöver du mer vägledning om mappning av Idura-anspråk till Auth0 och åtkomst till användardata utöver standardprofilinformation? Tveka inte att kontakta oss via e-post! Vi ser fram emot att stödja dig i din utvecklingsresa.