530 likes | 673 Views
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. Presentation. Mikael Rendahl – BGC Partners
E N D
Välkommen till Bankgiro Link BGC-forum för utvecklare på programföretagen Bankgiro Link
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
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
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
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: Funktionalitet 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) • Bättre för kunden • Lättare att bygga väl integrerade lösningar i kundens affärssystem • Bättre för kunden 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
Affärssystem Browser Bankgiro Link Lagring Arbetsflöde webbklient/Internetbank 4. Logga in 1. Fakturor i leverantörsreskontra 2. Skapa betalfil 5. Skicka in betalfil 3. Spara betalfil 8. Automatisk avstämning kundreskontra 7. Ladda redovisning 6. Hämta redovisning 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
Affärssystem Browser Bankgiro Link Lagring Integrerad kommunikation 2. Logga in 1. Fakturor i leverantörsreskontra 3. Skicka in betalfil 5. Automatisk avstämning kundreskontra 4. Hämta redovisning 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
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 • 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 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” • ”Published Specification” (maj 2004) 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
Signerings-klient Klient BankGiro Link - CustomSecurityContextTokenHandler Säkerhet i Bankgiro Link – Inloggning Signera slumptalet Begär ett Challenge (slumptal) Slumptalet returneras Skicka signerat slumptal Token (SCT) samt hemlig nyckel returneras Inloggad Bankgiro Link
Signerings-klient Klient BankGiro Link - CustomSecurityContextTokenHandler Säkerhet i Bankgiro Link – Inloggning Signera slumptalet 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. Bankgiro Link
Klient CustomSecurityContextTokenHandler Så här loggar du in • Hämta slumptal • <wsa:To>…</wsa:Action> • CustomSecurityContextTokenHandler.ashx • Challenge • <wst:SignChallenge><wst:Challenge>0CIVnrRepvNSvlkgUgrF8BWBXFk4Icjoob1HPtnoEj4=</wst:Challenge></wst:SignChallenge> RequestSecurityToken RequestSecurityTokenResponse Bankgiro Link
Klient CustomSecurityContextTokenHandler fortsättning … • <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> RequestSecurityTokenResponse RequestSecurityTokenResponse 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 • 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
Signer KI LB 123453 123454 123455 123-1234 123-1235 123-1236 123-1237 Behörighetsstrukturen Produkt Kundnummer Bankgironummer Roll 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. Bankgiro Link
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