Välkommen till Bankgiro Link BGC-forum för utvecklare på programföretagen
Syftet Att ge den senaste informationen om Bankgiro Link-projektet Informera om och diskutera kring aktuella tekniska frågor Bankgiro Link
Presentation Mikael Rendahl – BGC Partners Mathias Engan – Produktchef Kommunikationstjänster Per Skärström – Projektledare Christian Lindkvist – Konstruktionsansvarig webb Ricky Lundstål – Konstruktionsansvarig API Hans Sterby – Designansvarig Bankgiro Link Michael Strömberg – Javaintegration Bankgiro Link
Projektstatus Per Skärström Bankgiro Link Projektstatus Per Skärström Bankgiro Link
Projektet Totalt 19 500 timmar. Vi har 27 st medarbetare i projektet. Denna fas av projektet har pågått från december -04 och avslutas 15/9. Vi har en pilot av Bankgiro Link i drift sen sommaren -04. Bankgiro Link
Status Konstruktion avslutades 25/4. Integrationstest avslutades 20/5 Systemtest planeras avslutas 17/6. Acceptanstest planeras avslutas 9/9. Bankgiro Link driftsätts den 15/9. Redan idag finns möjligheten att testa en beta-version av Bankgiro Link:s API. Bankgiro Link
Marknadsorientering Mathias Engan Bankgiro Link Marknadsorientering Mathias Engan Bankgiro Link
Bankgiro Link – nytt kommunikationssätt Kommunikation över Internet med säkerhetslösning baserad på PKI Fler möjligheter för bankkunden Bättre kontroll för bankkunden Flexiblare säkerhetslösning Nästa utvecklingssteg bortom BgCom. Bankgiro Link
Inledning Huvudmålet med utvecklingen av Bankgiro Link är att ta fram en ersättare till Telebankgiro Telebankgiro måste vara avvecklat senast 2007-03-31 Planerad produktionssättning tillsammans med R1 (hösten 2005) Bankgiro Link
Bankgiro Link: Funktionalitet Filkommunikation LB, KI, AG LM, OC, GP, AG m fl Grundläggande funktioner Inloggning Lista filer att hämta Hämta fil Skicka fil Lista inskickade filer Godkänna fil Utloggning Behörighetskontroller Individnivå Fullmaktskontroller För de banker som vill Tredjepartsklienter Integration med affärssystem Fristående Bankgiro Link
Tre bra saker med Bankgiro Link Säkerhetslösning baserad på certifikat, behörigheter och (för vissa banker) elektroniska fullmaktskontroller Bättre för kunden Mer information om och därigenom bättre kontroll över kundens produkter (filbaserade) Lättare att bygga väl integrerade lösningar i kundens affärssystem Bankgiro Link
Möjlighet för programvaruföretag Kunderna vill ha smidig och enkel kommunikation med BGC för att leverera betalningsuppdrag hämta redovisning kontrollera betalningsöverföringen överföra annan affärsinformation Krav på ny funktionalitet i affärssystem Möjlighet för programvaruföretag att förenkla och förbättra Bankgiro Link
Arbetsflöde webbklient/Internetbank 4. Logga in 2. Skapa betalfil 1. Fakturor i leverantörsreskontra 5. Skicka in betalfil 3. Spara betalfil 8. Automatisk avstämning kundreskontra 7. Ladda redovisning 6. Hämta redovisning Affärssystem Browser Bankgiro Link Lagring Bankgiro Link
Klientprogramvara Automatisera överföringen av filer till och från BGC Integrera med affärssystemet Inbetalningar rakt in i reskontra Utbetalningar direkt från reskontra Förenkla, förbättra kundens vardag Fler och bättre funktioner för handläggare Viewer, utskriftsfunktioner, arkivfunktionalitet, etc Hantera ”pappersbetalningar” (bildfiler) Bankgiro Link
Integrerad kommunikation 2. Logga in 1. Fakturor i leverantörsreskontra 3. Skicka in betalfil 5. Automatisk avstämning kundreskontra 4. Hämta redovisning Affärssystem Browser Bankgiro Link Lagring Bankgiro Link
Ett tillfälle! Utveckling och försäljning av programvara tillhör inte BGCs kärnaffär. Telebankgiro avvecklas Cirka 70000 (ca 40000 aktiva) kunder påverkas Skapar behov av ersättningsfunktionalitet Ny eller uppgraderad mjukvara behövs BGC skapar och öppnar ett gränssnitt mot Bankgiro Link Underlätta utvecklingen av effektiva betalningsverktyg Bankgiro Link
Teknisk orientering Ricky Lundstål, Hans Sterby, Christian Lindkvist Bankgiro Link Teknisk orientering Ricky Lundstål, Hans Sterby, Christian Lindkvist Bankgiro Link
BGC:s teknikval Plattform: Windows 2003 Server Webbserver: Microsoft IIS 6 Utvecklingsmiljö: Microsoft.NET Språk: C# & ASP.NET Dataintegration: XML & Web Services Öppen standard Interoperabilitet över plattformar Klientutvecklares val av teknik är fritt Bankgiro Link
Säkerhet - standarder SSL WS-Security http://www.oasis-open.org/specs/ Skydd mot avlyssning WS-Security http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf Meddelandeintegritet Meddelandekonfidentialitet Autentisering på meddelandenivå Approved OASIS Standard (April 2004) http://www.oasis-open.org/specs/ Bankgiro Link
Säkerhet - standarder WS-Trust WS-Secure Conversation http://specs.xmlsoap.org/ws/2005/02/trust/WS-Trust.pdf Bygger på WS-Security förmedla tillit och delade nycklar mellan olika parter ett ramverk för ”security tokens” ”Published Specification” (maj 2004) WS-Secure Conversation http://www-106.ibm.com/developerworks/library/specification/ws-secon/ Baseras på WS-Security och WS-Trust säker kommunikation för meddelanden Hantera s.k. ”security contexts” derivera meddelandenycklar från etablerade ”security contexts” Bankgiro Link
Säkerhet i Bankgiro Link Anrop via SSL Challenge/Response enligt standard (WS-Trust). Applikationsspecifik kryptering Certifikat och signeringsklienter (CSP) BankID (hårda & mjuka) Nexus 4.2 (hösten 2005) Telia/Posten e-ID NetID Nordea e-ID SmartTrust/Nexus Bankgiro Link
Säkerhet i Bankgiro Link – Inloggning Bygger på WS-Trust och WS-SecureConversation Challenge/Response enligt standard (WS-Trust). Klienter behöver inget BGC-specifikt certifikat Bankgiro Link
Säkerhet i Bankgiro Link – Inloggning Signerings-klient Signera slumptalet Klient BankGiro Link - CustomSecurity ContextTokenHandler Begär ett Challenge (slumptal) Slumptalet returneras Skicka signerat slumptal Token (SCT) samt hemlig nyckel returneras Inloggad Bankgiro Link
Säkerhet i Bankgiro Link – Inloggning Signerings-klient Signera slumptalet Klient BankGiro Link - CustomSecurity ContextTokenHandler Begär ett Challenge (slumptal) Slumptalet returneras Skicka signerat slumptal Token (SCT) samt hemlig nyckel returneras Inloggad Bankgiro Link
Demo – Bankgiro Link Webb Inloggning Signeringsklienterna som stöds NetiD – ActiveX-komponent SmartTrust – ActiveX-komponent Certifikaten Posten eID (PKCS7) Nordea eID (PKCS7) Praktiskt hur det går till i webbapplikationen. Visa upp förstasidan på webben. Bankgiro Link stödjer för närvarande tre olika typer av signeringsklienter, BIDT som är BankID´s applet, NetID som är en active X komponent som signerar hårda kort och Smarttrust som också är en active x-komponent men som stödjer både hårda kort (Posten) och mjuka certifikat (exempelvis Nordea). När man så klickar på en av länkarna till respektive signeringsklient så sker ett anrop mot API:et som ber om data att signera, tillbaka ges då ett slumptal i HEX-format. <Demo med BankID – vänta tills appleten visas> Signeringsklienten har fått data att signera och användaren väljer sitt certifikat, i detta fallet Nina Greger, sedan skriver hon in sitt lösenord och signeringsklienten signerar slumptalet och postar tillbaka till webbapplikationen. Webbapplikationen anropar då API:et och skickar med både slumptalet och det signerade slumptalet så att man på andra sidan ska kunna verifiera signaturen. Om allting går som det ska så returneras en sk. SecurityContextToken. Den SCT:n används sedan för att signera alla påföljande meddelanden till API:et. Vad som sedan sker är att applikationen gör ett sådant anrop i och med att den hämtar användarens behörighetsstruktur, som innehåller information om vad (uppdelat på de olika roller som finns i systemet) användaren kan göra – skicka, hämta och attestera filer och under detta finns de produkter som användaren är behörig till och ytterligare under detta vilka enskilda kundnummer och bankgironummer som hör till respektive produktbehörighet. Vad som sker vid inloggningen är dessutom att användaren hamnar inne i applikationen på den definierade startsidan som styrs av vilken behörighet användaren har, i många fall är detta listan över alla inskickade filer. För att kunna visa upp den sidan anropas API:ets metod för att hämta alla inskickade filer också. Inloggningen sker alltså av 4 steg Hämta slumptal att signera. Signera slumptalet. Skicka tillbaka slumptalet och få tillbaka en SecurityContextToken. Eventuellt hämta användarens behörighetsstruktur (görs i Bankgiro Links webbapplikation). Webbapplikationen gör ytterligare anrop beroende på att man ska visa upp en sida som kräver information om inskickade filer också. DEMO SLUT Bankgiro Link
Så här loggar du in Hämta slumptal CustomSecurity ContextTokenHandler Klient CustomSecurity ContextTokenHandler RequestSecurityToken RequestSecurityTokenResponse Hämta slumptal <wsa:To>…</wsa:Action> CustomSecurityContextTokenHandler.ashx Challenge <wst:SignChallenge><wst:Challenge>0CIVnrRepvNSvlkgUgrF8BWBXFk4Icjoob1HPtnoEj4=</wst:Challenge></wst:SignChallenge> Bankgiro Link
fortsättning … CustomSecurity ContextTokenHandler Klient RequestSecurityTokenResponse RequestSecurityTokenResponse <wst:BinaryExchange> , Attributen ”ValueType” och ”EncodingType” <wssc:SecurityContextToken wsu:Id="SecurityToken-9b51475a-d2c3-4730-87d3-8677bb543d18" xmlns:wssc="http://schemas.xmlsoap.org/ws/2004/04/sc"><wssc:Identifier>uuid:f707ed89-a2fd-4b6a-8eee-2fef7bf29ca3</wssc:Identifier> <wst:BinarySecret wst:Type="http://schemas.xmlsoap.org/ws/2004/04/security/trust/ SymmetricKey">/LZb2VamALfV0cBgltdUMQ==</wst:BinarySecret> Bankgiro Link
Paus Bankgiro Link
Grundläggande för anropen Returnerar alltid status med: StatusId: ”0” || ”-1” Meddelandekod: 0-999 Meddelande: ”Ok” || Felmeddelande Datumtidsstämpel Bankgiro Link
Status-objektet Bankgiro Link
Felmeddelanden Appendix A Xml-dokument Bankgiro Link
Krav för varje anrop Användaren är inloggad Krypterat Signerat Inaktivitet tillåts i 20 minuter Maximal tid 60 minuter Krypterat Signerat Argumentet ProgramID (tilldelas av BGC) Argumentet SequenceNumber UUID/GUID (ISO/IEC 11578:1996) Bankgiro Link
Kryptering och signering av anrop Den delade nyckeln bör ej användas i meddelanden Istället genereras ”sessionsnycklar” (Derived Keys) DerivedKeyToken genereras utifrån SecurityContextToken & den symmetriska nyckel som erhölls vid inloggningen Anropet krypteras och signeras med två DerivedKeyTokens Bankgiro Link
Kryptering och signering av anrop <wsa:Action> anger den metod som anropas. <wsa:To> anger url’en till webbtjänsten som anropas. <wssc:SecurityContextToken><wssc:Identifier> <wssc:DerivedKeyToken> En är för signaturen och den andra för krypteringen av datat. <xenc:CipherValue> innehåller det krypterade datat. Bankgiro Link
Anrop Hämta behörighet – GetUserRights Skicka in fil med betalningsuppdrag – SendFile Attestera Fil – AttestFile Makulera fil som ännu inte attesterats – DeleteFile Hämta lista över inskickade filer – GetUploadedFileList Hämta lista över redovisningsfiler – GetResultFileList Ladda ner fil – GetFile Logga ut – LogOut Bankgiro Link
Anrop Hämta behörighet – GetUserRights Skicka in fil med betalningsuppdrag – SendFile Attestera Fil – AttestFile Makulera fil som ännu inte attesterats – DeleteFile Hämta lista över inskickade filer – GetUploadedFileList Hämta lista över redovisningsfiler – GetResultFileList Ladda ner fil – GetFile Logga ut – LogOut Bankgiro Link
GetUserRights Hämtar användarens behörighetsstruktur Medger kontroll av behörigheten på klienterna Inga argument utöver SequenceNumber & ProgramID Tre roller: Uploader Downloader Signer Bankgiro Link
Behörighetsstrukturen Roll Produkt Kundnummer Bankgironummer Signer KI 123453 123-1234 123454 123-1235 123-1236 LB 123455 123-1237 Bankgiro Link
Behörigheter för anrop Användaren måste alltid inneha minst en roll Krav på behörighet: GetUserRights, LogOut – valfri roll SendFile – Uploader AttestFile – Signer DeleteFile – Uploader/Signer GetUploadedFileList – Uploader/Signer GetResultFileList – Downloader GetFile (inskickade & oattesterade) – Uploader/Signer GetFile (redovisningsfiler) – Downloader Bankgiro Link
GetUserRights Bankgiro Link
Anrop Hämta behörighet – GetUserRights Skicka in fil med betalningsuppdrag – SendFile Attestera Fil – AttestFile Makulera fil som ännu inte attesterats – DeleteFile Hämta lista över inskickade filer – GetUploadedFileList Hämta lista över redovisningsfiler – GetResultFileList Ladda ner fil – GetFile Logga ut – LogOut Bankgiro Link
SendFile Skickar in betalningsuppdrag till BGC Filen ska signeras av användaren Viktiga argument fileSignature – Signatur över kondensat (SHA1) av hela filen samt summering av filens betalningsuppdrag (base64) fileData – filinnehållet (base64) attestFlag – möjliggör en direkt attestering product – anger den produkt som filen innehåller customerNumber – kundnummer under vilket filen skickas in Returnerar filidentifikation Bankgiro Link
Anrop Hämta behörighet – GetUserRights Skicka in fil med betalningsuppdrag – SendFile Attestera Fil – AttestFile Makulera fil som ännu inte attesterats – DeleteFile Hämta lista över inskickade filer – GetUploadedFileList Hämta lista över redovisningsfiler – GetResultFileList Ladda ner fil – GetFile Logga ut – LogOut Bankgiro Link
GetUploadedFileList Hämtar lista över inskickade filer (oattesterade, bearbetade, stoppade, …) Styrs av användarens behörighet Inga argument utöver SequenceNumber & ProgramID Bankgiro Link
Demo – Bankgiro Link Webb Skicka fil Hämta fillistan inskickade filer. Hela listan returneras i anropet från WS:en. Attestera fil. Vid attest hämtar vi först filen och sedan gör vi motsvarande signering som vid skicka fil. Makulera / ta bort fil. Skicka in filens ID till WS:en som tar bort filen. Hämta fil. Skicka in filens ID och hämta filens innehåll. Visa applikationen, se till att vara inloggad i den redan. När användaren ska skicka en fil till BGC med hjälp av Bankgiro Links webbapplikation gör han/hon på följande sätt. Välj skicka fil i menyn (förutsatt att användaren har rätt att skicka en fil). På sidan med första steget i skicka fil väljer så användaren den produkt/tjänst som filen innehåller poster för, de som listas är de som användaren enligt mottagen behörighetsstruktur har behörighet att skicka filer på. När man valt en produkt populeras listan med kundnummer för val av vilket kundnummer som användarens poster ska skickas för, även denna lista beror på behörighetsstrukturen, under rollen ”skicka fil” finns ett antal kundnummer som användaren är behörig att skicka filer på och dessa listas alltså här. Efter val av produkt och kundnummer väljer användaren en fil med innehåll som stämmer med ovan angivna uppgifter och den behörighet som användaren har. Om det skulle vara så att användaren antingen valt en produkt som inte överensstämmer med produkten som anges i filen, eller att användaren inte är behörig till något av bankgironumren i filen så kommer vi att berätta det efter att användaren valt att skicka eller skicka och attestera filen. <Välj alla tre och klicka på skicka fil> Nästa steg i processen är att användaren ska signera filen som skickats upp, i signeringsrutan kan man se ett filsammandrag och andra sammanställande uppgifter om filen. Man kan välja att skriva ut detta filsammandrag genom att klicka på utskriftsikonen uppe till höger. När så användaren känner att det är rätt det han ser så skriver han in lösenordet och webbapplikationen anropar API:ets metod för uppskick av fil. Om nu det är något ytterligare som inte stämmer med användarens fil vad gäller behörighet och innehåll så ska detta returneras för användaren i en popup. Går däremot allting bra och filen accepterats så skickas man vidare till sidan med listorna på inskickade filer. <Skriv in lösenord och klicka på OK> Eftersom vi inte valde att attestera filen på samma gång så kommer filen upp i listan över ”oattesterade filer” och man kan få sammanfattande information om filen om man väljer att expandera raden. <Klicka på raden för inskickad fil> Expanderar man raden kan man även se att det går att hämta filen genom en länk till den, detta är i bakgrunden ett anrop till API:et som tar emot ett filID och returnerar filen som en byte-array. På de filer som användaren har rätt att attestera visas även en ”Attestera”-knapp upp och för oattesterade filer kan man även välja att ta bort filen genom knappen ”Ta bort” – även borttagningsmetoden mot API:et är relativt simpel, den tar också emot ett filID och utför sedan borttag ifall inte behörighet för detta saknas. <Klicka på ”Attestera”-knappen för inskickad fil> Om man väljer att attestera filen, kommer man tillbaka till steg två i skicka fil-scenariot och användaren får se ett filsammandrag precis på samma sätt. Användaren signerar filen med sitt lösenord och ett anrop med filen och signaturen görs mot API:et. När man så kommer tillbaka så har filen hamnat i listan över ”filer under bearbetning”. DEMO SLUT Bankgiro Link
Java-interoperabilitet Michael Strömberg Bankgiro Link Java-interoperabilitet Michael Strömberg Bankgiro Link
Bankgiro Link – krav SSL-kryptering WS-Security WS-Trust WS-SecureConversation Certifikat BankID Telia Elektroniskt ID-kort SIS-godkänt Bankgiro Link
Web service-lösningar Har slumpmässigt valt tre av de mest använda web service Java API:er. Sun JWSDP webMethods Glue Apache Axis wsdl2java används för att översätta wsdl-specen till java stubbar. Bankgiro Link
SSL-kryptering Använd Java Secure Sockets Extension 1.4 (JSSE) Inbyggt i webMethods Glue Java SSL är väldigt känslig mot latens i nätet SSL skyddar bara mellan två ändpunkter och erbjuder inte samma meddelandeskydd som ws-security erbjuder. Bankgiro Link
ws-security stöd Standardiserar hur säkerhetsinformation hanteras i SOAP-meddelanden. Sun JWSDP Använd XWS-Security API webMethods Glue Inbyggt Apache AXIS Använd WSS4J API Bankgiro Link
ws-trust & ws-secureconversation stöd Beskrivning ws-trust adresserar problematiken kring olika säkerhetsformat, tillit, och säkerhetsdomäner ws-secureconversation beskriver hur två aktörer kan authentisera en följd av meddelanden Inga Java implementationer verkar stödja ws-trust eller ws-secureconversation I dagsläget är det standard praxis att hacka ihop de funktioner som saknas från ws-trust och ws-secureconversation Bankgiro Link
.NET Interop JNI (COM Interop) Corba Bygg en .NET COM-komponent som exponerar web service-metoderna (.NET) Java Container Control (Java) Bygg native funktioner (C) Corba Bygg en .NET Corba applikation som exponerar web service-metoderna (.NET) Använd Corba i ert J2EE-system Bankgiro Link
Web services och Java-klienter Referenser Microsofts ”Web Services Interoperability Guidance” http://msdn.microsoft.com/webservices/building/interop/ Microsoft .NET and Java/J2EE Interoperability http://msdn.microsoft.com/vstudio/java/interop/default.aspx Bankgiro Link
Tack! Frågor? Bankgiro Link