Blogginlägg

Active Login 3.0 - Implementera Mobilt BankID i .NET

Av Peter Örneholm | Blogg | 24 november 2019

För drygt 9 månader sedan, i februari 2019, lanserade vi Active Login 1.0 - En samling bibliotek som drastiskt minskar tiden det tar att implementera BankID / Mobilt BankID i .NET/ASP.NET.

9 månader går fort och vi har på den tiden nått nästan 30 000 nedladdningar på NuGet, fått över 100 stjärnmarkeringar på GitHub och sett projektet växa till vad som idag ser ut att vara det största open source-projektet kring BankID i hela Sverige!

I sitt enklaste utförande krävs det nu alltså endats ett fåtal rader kod för att komma igång med BankID i ASP.NET, något som förut kunde ta veckor för att få till på ett korrekt sätt:

services
    .AddAuthentication()
    .AddBankId(builder =>
    {
        builder
            .AddOtherDevice()
            .AddSameDevice();
    });

Projektet i sig är helt kostnadsfritt att använda och tillgängligt under MIT-licensen. Tack vare vår gedigna kunskap på området har vi sett en stor efterfrågan att på konsultbasis hjälpa företag kring utbildning, implementering och verifiering. Vi vet att Active Login idag används i branscher så som finans, säkerhet, fastighet, kommuner och utbildning.

Fler och fler använder Active Login för att möjliggöra BankID i Identity Server, Azure AD B2C eller i kombination med andra lösningar och det är kul att få assistera på dessa områden. Hör av dig om du eller ditt företag vill ha hjälp att komma igång med säker bankinloggning.

Active Login 3.0 (Alpha)

Vi är glada att en alphaversion av Active Login 3.0.0 nu finns att ladda ner på NuGet!

Självklart finns all källkod på GitHub.

Active Login Screenshots

Nyheter i 3.0

I version 3 har vi gjort tusentals både mindre och större förändringar i kod, texter, byggpipeline, texter m.m. I stora drag är det följande nyheter:

  • Stöd för att autentisera användaren med BankIDs QR-kod. Detta är nu standardkonfigurationen.
  • Stöd för att avbryta en påbärjad inloggning. Användaren kan då välja en alternativ inloggningsmetod och sessionen gentemot BankID avbryts.
  • Uppdaterade texter för knappar, status m.m. enligt BankIDs nya riktlinjer.
  • Uppdaterad dokumentation som ska vara tydligare och lättare att följa.
  • Uppdaterade exempel för ASP.NET Core 3.

Vi har även gjort en del tekniska uppdateringar:

  • Våra API-wrappers (*.Api) kräver nu .NET Standard 2.0. Vi dubbelkompilerar inte längre mot .NET Framework. Notera att .NET Framework >= 4.6.1 stödjer .NET Standard 2.0 så du kan fortfarande använda .NET Framework om du kör en någorlunda modern version.
  • Våra UI-paket (*.AspNetCore) kräver nu ASP.NET Core 3.1. Dessa paket har därmed inte något “strong naming” längre då detta endast ska vara relevant för .NET Framwork.
  • Byggena i Azure DevOps defineras nu i kod med hjälp av Azure Pipeline YAML.

En mer detaljerad genomgång hittar ni på GitHub.

Nyhet: QR kod

Den största synliga nyheten i 3.0 är stödet för att låta användaren initiera inloggningen med hjälp av BankIDs QR-kod. I och med detta försvinner behovet av att ange sitt personnummer. Stödet för personnummer finns kvar, men bör endast användas om speciella skäl finns.

QR-kodsstödet är aktiverat som standard, men du behöver välja en QR-kodsimplementation. Vi har byggt ett paket som använder tredjepartsbiblioteket QRCoder och du aktiverar det genom att anropa .UseQrCoderQrCodeGenerator(), t.ex. såhär:

services
    .AddAuthentication()
    .AddBankId(builder =>
    {
        builder
            .UseSimulatedEnvironment()
            .AddSameDevice()
            .AddOtherDevice()
            .UseQrCoderQrCodeGenerator();
    });

Active Login Screenshots

Nyhet: Avbryt

Användarna kan nu avbryta en påbörjad inloggning. När detta sker så kontaktas BankID och sessionen avbryts. Användaren skickas sedan tillbaka till startsidan.

Om Active Login används i t.ex. Identity Server måste cancelReturnUrl överridas för att ta hänsyn till den returnUrl som klienten angett.

Du gör detta som en del av AuthenticationProperties, t.ex. såhär:

public IActionResult ExternalLogin(string provider, string returnUrl)
{
    var props = new AuthenticationProperties
    {
        RedirectUri = Url.Action(nameof(ExternalLoginCallback)),
        Items =
        {
            { "returnUrl", returnUrl },
            { "scheme", provider },
            { "cancelReturnUrl", Url.Action("Login", "Account", new { returnUrl }) }
        }
    };

    return Challenge(props, provider);
}

Exempel: Azure AD B2C

Vi har sett en stor efterfrågan på att använda Active Login för att möjliggöra BankID i Azure AD B2C. Tack vare Identity Server + Active Login kan Azure AD B2C prata med BankID.

Active Login with Azure AD B2C

Hör av dig om du vill ha assistans i att sätta upp detta.

Tack

Ett stort tack till de personer som bidragit med kod, dokumentation, tester och diskussion. Tack vare er blir Active Login en bättre produkt.

Följande personer har på ett eller annat sätt varit involverade i senaste releasen:

Ett speciellt tack till Daniel Kvist som gjort en hjälteinsats för att få till QR-kodstöd samt stöd för avbryt!

Testa, diskutera och kom med feedback

Vi är väldigt tacksamma för all feedback vi kan få. Om du hittar eventuella buggar, rapportera in dem på GitHub som en GitHub Issue.

Vi är numera aktiva på Slack och Twitter, följ oss gärna där och gå med i diskussionen!

Slack Twitter Follow

Plan framåt

Vi planerar att lansera den skarpa versionen (redo för produktion) av 3.0 senare under året. Har du ideér eller behov för framtiden, lägg upp en issue på GitHub så vi vet vad vi ska planera inför nästa version.

Till inlägget