Blogginlägg

Introducerar ActiveLogin.Authentication

Av Elin Fokine | Blogg | 6 februari 2019

Idag introducerar vi ActiveLogin.Authentication 1.0.0, en samling bibliotek för att förenkla integrationen av svenskt BankID i en ASP.NET Core-applikation. Enkelt att installera från NuGet och all källkod tillgänlig på GitHub.


BankID är idag en vida utbredd och snabbt växande autentiseringsmetod för såväl offentliga som privata tjänster. Under 2018 uppgick det totala antalet användningstillfällen (autentisering och signering) till 3,3 miljarder. En ökning med 0,8 miljarder jämfört med året innan. Men tröskeln för att implementera inloggning med BankID på ett korrekt sett i en modern ASP.NET-miljö är relativt hög. Den tekniska dokumentationen innehåller inga kodexempel och ingen teknisk support tillhandahålls.

Vi såg en ökande efterfrågan från våra kunder att integrera BankID i deras applikationer samtidigt som många hade problem att få till en fungerande lösning. Vår ambition var att en BankID-integration skulle vara så enkelt som att installera ett NuGet paket.

Kom igång med Active Login

Active Login kommer i två varianter, BankID och GrandID. Där den första är en direktintegration mot det API som förses av BankID, medan GrandID går via en extern tjänst med samma namn som tillhandahålls av Svensk e-identitiet. Direktintegrationen erbjuder större flexibilitet och möjligheter att anpassa användargränssnittet genom användning av Razor Class Libraries. Direktintegrationen kräver dock ett certifikat utfärdat av någon av de fem storbanker som är återförsäljare av BankID. Med GrandID behöver du inget certifikat, utan kan komma igång betydligt snabbare med de API nycklar som du beställer från Svensk e-identitiet.

Active Login Screenshots

Den fullständiga dokumentationen hur man använder Active Login återfinns på GitHub, men en kort intro följer nedan för att ge dig en känsla för hur det används.

BankID

  1. Installera NuGet paketet

Installera NuGet paketet ActiveLogin.Authentication.BankId.AspNetCore med valfritt verktyg, exempelvis dotnet cli.

dotnet add package ActiveLogin.Authentication.BankId.AspNetCore
  1. Kom igång med utvecklingsmiljön

Active Login registreras i ConfigureServices(…) i Startup.cs. Slå på .UseSimulatedEnvironment() för att köra mot en in-memory implementation av API:et som inte kräver att du har ett certifikat på plats.

using ActiveLogin.Authentication.BankId.AspNetCore;

services
    .AddAuthentication()
    .AddBankId(builder =>
    {
        builder
            .UseSimulatedEnvironment()
            .AddSameDevice()
            .AddOtherDevice();
    });
  1. Gå vidare till test- och produktionsmiljön

Fullständig beskrivning av hur du använder test eller produktionsmiljön, samt hur du anpassar paketet, hittar du i den fullständiga dokumentationen på GitHub.

BankID via GrandID

  1. Installera NuGet paketet

Installera NuGet-paketet ActiveLogin.Authentication.GrandId.AspNetCore med valfritt verktyg, exempelvis dotnet cli.

dotnet add package ActiveLogin.Authentication.GrandId.AspNetCore
  1. Kom igång med utvecklingsmiljön

Active Login registreras i ConfigureServices(…) i Startup.cs. Slå på UseSimulatedEnvironment() för att köra mot en in-memory implementation av API:et som inte kräver att du har API nycklar på plats.

using ActiveLogin.Authentication.GrandId.AspNetCore;

services
    .AddAuthentication()
    .AddGrandId(builder =>
    {
        builder
            .UseSimulatedEnvironment()
            .AddBankIdSameDevice(options => { })
            .AddBankIdOtherDevice(options => { });
    });
  1. Gå vidare till test och produktionsmiljön

Fullständig beskrivning av hur du använder test eller produktionsmiljön, samt hur du anpassar paketet, hittar du i den fullständiga dokumentationen på GitHub.

Anpassa Active Login

Förutom att komma igång väldigt snabbt med en grunduppsättning finns även möjlighet till anpassningar. Kanske vill du endast tillåta Mobilt BankID, lägga till fler språk än de inbyggda (Svenska / Engelska) eller helt anpassa det grafiska utseendet. Allt detta är tekniskt möjligt och finns dokumenterat på GitHub.

Som exempel kan du begränsa vilka typer av BankID som tillåts samt styra om hurvida användaren kan nyttja biometrisk inloggning.

.AddBankId(builder =>
{
    builder.UseProductionEnvironment()
           .AddSameDevice(options =>
           {
               // Only allow Mobile BankID
               options.BankIdCertificatePolicies = BankIdCertificatePolicies.GetPoliciesForProductionEnvironment(
                   BankIdCertificatePolicy.MobileBankId
               );

               // Don't allow biometric login options such as fingerprint or face id
               options.BankIdAllowBiometric = false;
           });
});

Azure

Majoriteten av de projekt vi på Active Solution arbetar med tas fram för att driftas i Microsoft Azure. Active Login i sig har inget direkt beroende på Azure, men vi har byggt extra bibliotek för att göra det enklare att använda Azure som plattform.

Som exempel kan du med biblioteket ActiveLogin.Authentication.BankId.AspNetCore.Azure enkelt lagra det certifikat du får ifrån BankID i Microsoft Azure KeyVault, så att det hanteras på ett säkert sätt.

builder.UseProductionEnvironment()
       .UseClientCertificateFromAzureKeyVault(Configuration.GetSection("ActiveLogin:BankId:ClientCertificate"))

Det finns även en mall, en Azure ARM Template, som du kan utgå ifrån när du vill spinna upp en miljö att drifta din inloggningslösning i.

Deploy to Azure

Personnummer

För att möjliggöra för användaren att mata in sitt personnummer på olika sätt (10 siffror, 12 siffror, med eller utan - etc.) byggde vi som en del av Active ett separat paket för att validera och normalisera svenska personnummer. Läs mer om det i följande blogginlägg.

Vill du vara med och bidra till utvecklingen av Active Login?

Active Login är ett Open Source projekt och vi ser gärna att fler är med och bidrar. All källkod finns tillgänglig på GitHub under MIT-licensen. Grundläggande kunskap om Git och GitHub krävs för att komma igång. Skicka in dina kodändringar som en Pull request. Glöm inte att skriva en utförlig beskrivning och att tillhandahålla tester som täcker de ändringar du har gjort. Har du idéer om ny funktionalitet eller stött på problem? Skapa en ny Issue för att starta en diskussion om ämnet.

Sist men inte minst, ge gärna vårt repo en stjärna om du gillar projektet :)

Författare

Det här blogginlägget är komponerat av Elin Fokine, en av huvudutvecklarna bakom ActiveLogin.Authentication, till vardags IT-konsult och systemutvecklare på Active Solution.

Till inlägget