Ny underskriftstjänst - Webcert

 

Bakgrund

Webcert använder idag en funktion för att signera intyg med SITHS-kort via NetID från Secmaker men som tyvärr bara fungerar med Internet Explorer. Därför har en nytt underskriftsflöde introducerats i Webcert, som erbjuder signering genom fristående underskriftstjänst, med huvudsyfte att möjliggöra för underskrifter i andra webbläsare än Internet Explorer.

En stor skillnad gentemot signering med NetID är att underskriften inte sker med det signerings-certifikat, PIN-kod för underskrift (PIN2), som användaren har på sitt SITHS-kort. Istället legitimerar sig användaren, PIN-kod för legitimering (PIN1), via en IdP, och det är sedan Underskriftstjänsten som använder uppgifter från denna legitimering för att skapa upp ett engångs-signerings-certifikat som sedan ligger till grund för underskriften.

Notera dock att det nya underskriftsflödet är ett komplement till den underskrift som idag kan göras i Internet Explorer via NetID. Åtgärder som anges nedan är därmed enbart krav för de som ämnar nyttja detta nya underskriftsflöde för att tillgängliggöra Webcert i fler webbläsare.

Förutsättningar

För att en användare ska kunna nyttja det nya underskriftsflödet krävs att vissa förutsättningar är uppfyllda:

  • SITHS-kort: Behöver innehålla certifikat med rätt LoA-nivå.

  • Programvaror: Användarens dator behöver ha rätt programvaror.

  • Nätverksåtkomst: Användarens dator behöver ha nätverksåtkomst till de ingående komponenterna (servrarna) i flödet.

  • App-växling: Användare av Webcert via en så kallad inbäddad webbläsare (via ett journalsystem), behöver kontrollera att deras lösning kan hantera app-växling via protokollet siths://.

SITHS-kort

Nedanstående tabell anger de krav som finns kring SITHS-kort.

Level of Assurence (LoA)

Den nya underskriftstjänsten stödjer SITHS-kort med certifikat som har tillitsnivåerna LoA 2 och LoA 3.

 

Programvaror

Nedanstående tabell anger de programvaror som behöver vara tillgängliga för användaren.

Chrome

Genom att använda Chrome så erhålls det nya underskriftsflödet per automatik. Detta medför att journalsystemens nuvarande inbäddade webbläsare, Internet Explorer, behöver bytas ut.

I dagsläget är flödet testat med Chrome men bör även fungera med andra Chromium-baserade webbläsare.

NetID Enterprise

Krävs för inloggning till tjänsten, samt för SITHS eID Autentiseringsklient.

SITHS eID Autentiseringsklient

Ny autentiseringsklient som används vid legitimering vid underskrift i nya flödet. Används vid app-växlingen. OBS! För att köra mot Test behövs en testklient installeras. Det går endast att installera en klient (Test, Prod) åt gången. Länk för nedladdning av autentiseringsklient

 

Första gången ett SITHS-kort används med SITHS eID Autentiseringsklient behöver det registreras innan användning. När SITHS eID Autentiseringsklienten startas första gången tas användaren automatiskt vid behov till registreringsflödet. Där kommer användarens legitimeringskod efterfrågas.

För mer information se avsnitt 2.1 Registrera i Användarhandbok – SITHS eID Windowsklient

Nätverksåtkomst

I flödet för signering med fristående underskriftstjänst kommer användarens dator att kommunicera med fyra (4) olika tjänster/servrar. För att flödet ska fungera krävs det således att dessa tjänster går att nå från användarens dator.

Tjänst/Server

Beskrivning

Adress

Tjänst/Server

Beskrivning

Adress

Webcert

Användaren loggar in i Webcert med sin webbläsare.

  • Produktion: https://webcert.intygstjanster.se

  • Test: Flera miljöer finns tillgängliga beroende på aktör, syfte och version.

Fristående underskriftstjänst

Användarens webbläsare kommer ansluta till denna tjänst i flödet.

  • Produktion: https://esign.v2.signatureservice.se

  • Test: https://esign.v2.st.signatureservice.se

IdP för legitimering vid underskrift

Användarens webbläsare kommer ansluta till denna tjänst i flödet.

  • Produktion: https://idp.inera.se

  • Test: https://idp.ineratest.org

Server för autentiseringsklient

SITHS eID Autentiseringsklient kommer ansluta till denna server i flödet

  • Produktion: https://mobiltsiths.inera.se

  • Test: https://mobiltsiths.ineratest.org

App-växling

Den nya underskriftfunktionen som kommer bli tillgänglig i Webcert kommer använda s.k. app-växling för att öppna det program där användaren anger sin PIN-kod för legitimering (PIN1). Detta är en ny autentiseringsklient som tagits fram inom SITHS. Vidare i texten kommer denna benämnas SITHS eID Autentiseringsklient

Om man ser till användarflödet så är de flesta redan vana vid denna typ av app-växling, då det vanligtvis sker på samma sätt när man använder BankID eller Mobilt BankID. Dvs användarens webbläsare är ansvarig för att öppna det program där PIN-koden skall anges.

För att detta skall fungera ur ett tekniskt perspektiv är det således ett krav att webbläsaren har rätt behörighet för att utföra denna åtgärd, dvs öppna ett annat program.

För de som använder Webcert fristående är detta inte ett problem, utan det är de som integrerar genom att öppna Webcert i en inbäddad webbläsare som måste kontrollera funktionalitet och rättigheter.

Nya underskriftsflödet

Ur ett användarperspektiv så är det följande som sker.

 

1:

Användaren har loggat in i Webcert med SITHS-kort och har skrivit ett intyg som är klart att signera.

Användaren klickar på Signera intyget

 

2:

Webcert dirigerar användarens webbläsare till Underskriftstjänsten med information om den data som ska signeras.

Ingen dialog visas för användaren (webbläsaren visar vit bakgrund).

 

3:

Underskriftstjänsten dirigerar användarens webbläsare till Ineras IdP med begäran om att legitimera användaren för underskrift.

IdP’n visar en dialog och försöker samtidigt starta SITHS eID Autentiseringsklientpå användarens dator.

Det är i detta steg som den s.k. app-växlingen sker och där användarens webbläsare behöver ha rättigheter för att öppna program via protokollet siths://.

Om SITHS eID Autentiseringsklient inte startar automatiskt kan användaren klicka Starta SITHS eID på denna enhetför att försöka starta den manuellt.

Notera att kravet gällande app-växling gäller oavsett om programmet öppnas per automatik eller genom att manuellt klicka på länken.

 

 

 

4:

SITHS eID Autentiseringsklientstartas och ansluter till autentiseringsservern.

En dialog visas för användaren med information om vad som ska signeras.

Användaren anger sin PIN-kod för legitimering (PIN1) och klickar Skriv under.

SITHS eID Autentiseringsklient slutför legitimeringen av användaren och skickar informationen till autentiseringsservern.

 

 

 

5:

Användarens webbläsare dirigeras tillbaka till Webcert via Underskriftstjänsten.

Webcert visar dialog med signerat intyg, eller felmeddelande om signering misslyckades.

 

Teknisk beskrivning

För att steg 3 och 4 i ovan flöde skall fungera så krävs det som sagt att webbläsaren har rättighet att starta det aktuella programmet.

Programmet startas genom att webbläsaren försöker öppna en länk som börjar på siths://. Detta är ett eget protokoll som är unikt för SITHS eID Autentiseringsklient. Vid installation så registrerar programmet att när någon försöker öppna en länk som börjar med siths://så är det just detta program som skall startas.

Om man använder Devtools i webbläsaren så kan man se hur länken anropas:

Det är i detta steg som det kan ta stopp i en inbäddad webbläsare. Dessa kan ha begränsade rättigheter vilka hindrar de från att öppna externa program. På grund av detta behöver de som använder inbäddade webbläsare och som tänker använda det nya underskriftsflödet, kontrollera med sina leverantörer att detta steg kommer att fungera.

Exempelkod för inbäddad webbläsare

Följande ger en proof-of-concept på hur man kan tillåta SITHS-protokollet att exekvera/app-växla vid användning av CefSharp (CefSharp är baserat på Chromium Embedded Framework och kan användas för att integrera en webbläsare i en C#-applikation).

Givetvis skiljer sig implementationen mellan alla olika journalsystem, så nedan exempel är enbart tänkt som en fingervisning på hur det kan göras i just denna implementationen av inbäddad webbläsare.

Det viktigaste i exemplet är den anpassade ResourceRequestHandler som tillåter protokollet siths men inget annat protokoll. Denna funktion anropas för alla protokoll som är okända, innan de tillåts.

1 2 3 4 5 6 7 8 9 10 11 12 class CustomResourceRequestHandler : ResourceRequestHandler { protected override bool OnProtocolExecution(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request) { Uri uri = new Uri(request.Url); if (uri.Scheme == "siths") { return true; } return false; } }
1 2 3 4 5 6 7 8 9 // Här skapas en factory-klass som returnerar en custom implementation av ResourceRequestHandlerFactory public class CustomResourceRequestHandlerFactory : IResourceRequestHandlerFactory { public bool HasHandlers => true; public IResourceRequestHandler GetResourceRequestHandler(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, bool isNavigation, bool isDownload, string requestInitiator, ref bool disableDefaultHandling) { return new CustomResourceRequestHandler(); } }
1 2 3 4 5 6 // och slutligen pekas denna factory-klass ut för browser-instansen var browser = new ChromiumWebBrowser(<url till den sida som webbläsaren ska inbädda>) { ResourceRequestHandlerFactory = new CustomResourceRequestHandlerFactory() }; panel.Controls.Add(browser);

 Test

SITHS eID Autentiseringsklient kan testas på följande sidor.

Miljö

Länk