Top Banner
Co musí banka udělat pro zapojení do Zingly?
90

Co musí banka udělat pro zapojení do Zingly?

Apr 12, 2017

Download

Technology

Petr Dvořák
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Co musí banka udělat pro zapojení do Zingly?

Co musí banka udělat pro zapojení do Zingly?

Page 2: Co musí banka udělat pro zapojení do Zingly?

Petr Dvořák CEO at Lime

E-mail: [email protected]

Twitter: @joshis_tweets

Page 3: Co musí banka udělat pro zapojení do Zingly?

Sdílejte přátelům a známým

Otázky lze klást v Q&A boxu

Odkaz na Slideshare v popisu videa

Záznam bude dostupný on-line

Page 4: Co musí banka udělat pro zapojení do Zingly?

Infrastruktura Zingly

Page 5: Co musí banka udělat pro zapojení do Zingly?

PowerAuth Server PowerAuth Server

Zingly API Server Zingly API Server

Zingly Multi-Banking Hub Server

Banka A Banka B

Ban

kyUži

vate

PowerAuth Server

Zin

gly

Internetové bankovnictví

Internetové bankovnictví

Page 6: Co musí banka udělat pro zapojení do Zingly?

PowerAuth Server PowerAuth Server

Zingly API Server Zingly API Server

Zingly Multi-Banking Hub Server

Banka A Banka B

Ban

kyUži

vate

PowerAuth Server

Zin

gly

Internetové bankovnictví

Internetové bankovnictví

Page 7: Co musí banka udělat pro zapojení do Zingly?

PowerAuth Server PowerAuth Server

Zingly API Server Zingly API Server

Zingly Multi-Banking Hub Server

Banka A Banka B

Ban

kyUži

vate

PowerAuth Server

Zin

gly

Internetové bankovnictví

Internetové bankovnictví

Page 8: Co musí banka udělat pro zapojení do Zingly?

PowerAuth Server

Zingly API ServerInternetové bankovnictví

SOAP REST-ish

SOAP REST-ish

PowerAuth 2.0 Standard API Zingly Banking API

Page 9: Co musí banka udělat pro zapojení do Zingly?

PowerAuth Server

Zingly API ServerInternetové bankovnictví

Internal Banking Infrastructure

Plugin / Adapter Plugin / Adapter

Connector

Page 10: Co musí banka udělat pro zapojení do Zingly?

Použité technologie

Page 11: Co musí banka udělat pro zapojení do Zingly?

Spring Boot

JPA + Hibernate

Aplikace - Java EE 7

Page 12: Co musí banka udělat pro zapojení do Zingly?

OracleDB, IBM DB2,

MySQL, PostgreSQL

Databáze - JPA2.0

Page 13: Co musí banka udělat pro zapojení do Zingly?

Github

Maven

Development

*

* komerční support

Page 14: Co musí banka udělat pro zapojení do Zingly?

SOAP

REST

Service API

Page 15: Co musí banka udělat pro zapojení do Zingly?

Postup nasazování

Page 16: Co musí banka udělat pro zapojení do Zingly?

PowerAuth Server

Zingly API ServerInternetové bankovnictví

1. Nasazení PowerAuth 2.0 Serveru

Page 17: Co musí banka udělat pro zapojení do Zingly?

PowerAuth Server

Zingly API ServerInternetové bankovnictví

2. Integrace s IB

Page 18: Co musí banka udělat pro zapojení do Zingly?

PowerAuth Server

Zingly API ServerInternetové bankovnictví

3. Nasazení Zingly API Serveru

Page 19: Co musí banka udělat pro zapojení do Zingly?

Nasazení PowerAuth 2.0 Serveru

https://github.com/lime-company/lime-security-powerauth/blob/master/powerauth-docs/source/tutorial/deployment.md

Page 20: Co musí banka udělat pro zapojení do Zingly?

1. Stáhněte si PowerAuth 2.0 Serverhttps://github.com/lime-company/lime-security-powerauth/releases/tag/0.8

Page 21: Co musí banka udělat pro zapojení do Zingly?

2. Přidejte DB connector na classpathmysql-connector-java-${VERSION}.jar

Page 22: Co musí banka udělat pro zapojení do Zingly?

3. Vytvořte databázové schéma

Page 23: Co musí banka udělat pro zapojení do Zingly?
Page 24: Co musí banka udělat pro zapojení do Zingly?

4. Nastavte parametry pro připojení PowerAuth serveru do DB

Page 25: Co musí banka udělat pro zapojení do Zingly?

spring.datasource.url=jdbc:mysql://localhost:3306/powerauth spring.datasource.username=powerauth spring.datasource.password= spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.jpa.hibernate.ddl-auto=none

Page 26: Co musí banka udělat pro zapojení do Zingly?

5. Nasaďte WAR soubor do Java EE aplikačního containeru

Nebo spusťte ”java -jar powerauth-java-server.war”

Page 27: Co musí banka udělat pro zapojení do Zingly?

Demo

Page 28: Co musí banka udělat pro zapojení do Zingly?

PowerAuth Server

Zingly API ServerInternetové bankovnictví

SOAP REST-ish

PowerAuth 2.0 Standard API Zingly Banking API

SOAP REST-ish

Page 29: Co musí banka udělat pro zapojení do Zingly?

PowerAuth 2.0 Admin

Page 30: Co musí banka udělat pro zapojení do Zingly?

Správa aplikací

Page 31: Co musí banka udělat pro zapojení do Zingly?

Přehled aktivací uživatele

Page 32: Co musí banka udělat pro zapojení do Zingly?

Nová aktivace

Page 33: Co musí banka udělat pro zapojení do Zingly?

Detail a správa aktivace

Page 34: Co musí banka udělat pro zapojení do Zingly?

1. Stáhněte si PowerAuth 2.0 Adminhttps://github.com/lime-company/lime-security-powerauth/releases/tag/0.8

Page 35: Co musí banka udělat pro zapojení do Zingly?

2. Nastavte cestu k PowerAuth Serveru

Page 36: Co musí banka udělat pro zapojení do Zingly?

powerauth.service.url=http://localhost:8080/powerauth/soap

Page 37: Co musí banka udělat pro zapojení do Zingly?

3. Nasaďte WAR soubor do Java EE aplikačního containeru

Nebo spusťte ”java -jar powerauth-admin.war”

Page 38: Co musí banka udělat pro zapojení do Zingly?

Demo

Page 39: Co musí banka udělat pro zapojení do Zingly?

PowerAuth Server

Zingly API ServerInternetové bankovnictví

SOAP REST-ish

PowerAuth 2.0 Standard API Zingly Banking API

SOAP REST-ish

PowerAuth Admin

Page 40: Co musí banka udělat pro zapojení do Zingly?

Integrace PowerAuth 2.0 a Internetbankingu

https://github.com/lime-company/lime-security-powerauth/blob/master/powerauth-docs/source/tutorial/internet-banking.md

Page 41: Co musí banka udělat pro zapojení do Zingly?

Admin ~ Internetbanking

Page 42: Co musí banka udělat pro zapojení do Zingly?

1. Přidejte do projektu Maven závislost

Page 43: Co musí banka udělat pro zapojení do Zingly?

<dependency> <groupId>io.getlime.security</groupId> <artifactId>powerauth-java-client</artifactId> <version>0.0.8</version> </dependency>

Page 44: Co musí banka udělat pro zapojení do Zingly?

<dependency> <groupId>io.getlime.security</groupId> <artifactId>powerauth-java-client</artifactId> <version>0.0.8</version> </dependency>

Page 45: Co musí banka udělat pro zapojení do Zingly?

<dependency> <groupId>io.getlime.security</groupId> <artifactId>powerauth-java-client</artifactId> <version>0.0.8</version> </dependency>

Page 46: Co musí banka udělat pro zapojení do Zingly?

<dependency> <groupId>io.getlime.security</groupId> <artifactId>powerauth-java-client</artifactId> <version>0.0.8</version> </dependency>

Page 47: Co musí banka udělat pro zapojení do Zingly?

2. Napojte se na PowerAuth Server

Page 48: Co musí banka udělat pro zapojení do Zingly?

@Configuration @ComponentScan(basePackages = {"io.getlime"}) public class PowerAuthWebServiceConfiguration {

@Bean public Jaxb2Marshaller marshaller() { Jaxb2Marshaller marshaller = new Jaxb2Marshaller(); marshaller.setContextPath("io.getlime.powerauth.soap"); return marshaller; }

@Bean public PowerAuthServiceClient powerAuthClient(Jaxb2Marshaller m) { PowerAuthServiceClient client = new PowerAuthServiceClient(); client.setDefaultUri("http://localhost:8080/powerauth/soap"); client.setMarshaller(marshaller); client.setUnmarshaller(marshaller); return client; }

}

Page 49: Co musí banka udělat pro zapojení do Zingly?

@Configuration @ComponentScan(basePackages = {"io.getlime"}) public class PowerAuthWebServiceConfiguration {

@Bean public Jaxb2Marshaller marshaller() { Jaxb2Marshaller marshaller = new Jaxb2Marshaller(); marshaller.setContextPath("io.getlime.powerauth.soap"); return marshaller; }

@Bean public PowerAuthServiceClient powerAuthClient(Jaxb2Marshaller m) { PowerAuthServiceClient client = new PowerAuthServiceClient(); client.setDefaultUri("http://localhost:8080/powerauth/soap"); client.setMarshaller(marshaller); client.setUnmarshaller(marshaller); return client; }

}

Page 50: Co musí banka udělat pro zapojení do Zingly?

@Configuration @ComponentScan(basePackages = {"io.getlime"}) public class PowerAuthWebServiceConfiguration {

@Bean public Jaxb2Marshaller marshaller() { Jaxb2Marshaller marshaller = new Jaxb2Marshaller(); marshaller.setContextPath("io.getlime.powerauth.soap"); return marshaller; }

@Bean public PowerAuthServiceClient powerAuthClient(Jaxb2Marshaller m) { PowerAuthServiceClient client = new PowerAuthServiceClient(); client.setDefaultUri("http://localhost:8080/powerauth/soap"); client.setMarshaller(marshaller); client.setUnmarshaller(marshaller); return client; }

}

Page 51: Co musí banka udělat pro zapojení do Zingly?

@Configuration @ComponentScan(basePackages = {"io.getlime"}) public class PowerAuthWebServiceConfiguration {

@Bean public Jaxb2Marshaller marshaller() { Jaxb2Marshaller marshaller = new Jaxb2Marshaller(); marshaller.setContextPath("io.getlime.powerauth.soap"); return marshaller; }

@Bean public PowerAuthServiceClient powerAuthClient(Jaxb2Marshaller m) { PowerAuthServiceClient client = new PowerAuthServiceClient(); client.setDefaultUri("http://localhost:8080/powerauth/soap"); client.setMarshaller(marshaller); client.setUnmarshaller(marshaller); return client; }

}

Page 52: Co musí banka udělat pro zapojení do Zingly?

3. Používejte PowerAuthServiceClient ve vaší aplikaci

Page 53: Co musí banka udělat pro zapojení do Zingly?

@Controller @RequestMapping(value = "/ib/settings") public class AuthenticationController {

@Autowired private PowerAuthServiceClient client;

// ... Controller code

List<Activations> aL = client.getActivationListForUser(uid);

}

Page 54: Co musí banka udělat pro zapojení do Zingly?

@Controller @RequestMapping(value = "/ib/settings") public class AuthenticationController {

@Autowired private PowerAuthServiceClient client;

// ... Controller code

List<Activations> aL = client.getActivationListForUser(uid);

}

Page 55: Co musí banka udělat pro zapojení do Zingly?

Blokace / odblokování aktivace

Odstranění aktivace

Nová aktivace a “commit” aktivace

Přehled aktivací

Page 56: Co musí banka udělat pro zapojení do Zingly?

PowerAuth Server

Zingly API ServerInternetové bankovnictví

SOAP REST-ish

PowerAuth 2.0 Standard API Zingly Banking API

SOAP REST-ish

PowerAuth Admin

Page 57: Co musí banka udělat pro zapojení do Zingly?

Nasazení Zingly API Serveru

Page 58: Co musí banka udělat pro zapojení do Zingly?

Open-source *

* již brzy

Page 59: Co musí banka udělat pro zapojení do Zingly?

PowerAuth Server

Zingly API ServerInternetové bankovnictví

SOAP REST-ish

PowerAuth 2.0 Standard API Zingly Banking API

SOAP REST-ish

PowerAuth Admin

Page 60: Co musí banka udělat pro zapojení do Zingly?

PowerAuth Server

Zingly API ServerInternetové bankovnictví

SOAP REST-ish

SOAP REST-ish

PowerAuth 2.0 Standard API Zingly Banking API

Bankovní službyPowerAuth

Admin

Page 61: Co musí banka udělat pro zapojení do Zingly?

Orchestruje obchodní logiku

Služby pro přehledy účtů a transakcí

Vystavuje PowerAuth 2.0 Standard API

Integrace s PowerAuth 2.0 Serverem

Služby pro realizaci platby

Page 62: Co musí banka udělat pro zapojení do Zingly?

Orchestruje obchodní logiku

Služby pro přehledy účtů a transakcí

Vystavuje PowerAuth 2.0 Standard API

Integrace s PowerAuth 2.0 Serverem

Služby pro realizaci platby

Page 63: Co musí banka udělat pro zapojení do Zingly?

1. Stáhněte si Zingly API ServerTBD - TODO - SOON

Page 64: Co musí banka udělat pro zapojení do Zingly?

2. Nastavte cestu k PowerAuth Serveru

Page 65: Co musí banka udělat pro zapojení do Zingly?

powerauth.service.url=http://localhost:8080/powerauth/soap

Page 66: Co musí banka udělat pro zapojení do Zingly?

3. Rozšiřte projekt o vaše specifické technologie a knihovny

Page 67: Co musí banka udělat pro zapojení do Zingly?

4. Naimplementujte bankovní službu

Page 68: Co musí banka udělat pro zapojení do Zingly?

public interface ZinglyService { public List<AccountModel> getAccountsForUser(String userId); public boolean canGetTransactions(String userId, String iban); public List<TransactionModel> getTransactionsForAccount( String iban, Date dateFrom, Date dateTo, BigInteger offset, BigInteger itemCount ); public boolean canExecutePayment(String userId, String iban); public List<ErrorModel> validatePayment(PaymentModel payment); public PaymentModel executePayment(PaymentModel payment);

// ...

}

Page 69: Co musí banka udělat pro zapojení do Zingly?

public interface ZinglyService { public List<AccountModel> getAccountsForUser(String userId); public boolean canGetTransactions(String userId, String iban); public List<TransactionModel> getTransactionsForAccount( String iban, Date dateFrom, Date dateTo, BigInteger offset, BigInteger itemCount ); public boolean canExecutePayment(String userId, String iban); public List<ErrorModel> validatePayment(PaymentModel payment); public PaymentModel executePayment(PaymentModel payment);

// ...

}

Page 70: Co musí banka udělat pro zapojení do Zingly?

Ukázka kódu

Page 71: Co musí banka udělat pro zapojení do Zingly?

PowerAuth Server

Zingly API ServerInternetové bankovnictví

SOAP REST-ish

SOAP REST-ish

PowerAuth 2.0 Standard API Zingly Banking API

Bankovní službyPowerAuth

Admin

Page 72: Co musí banka udělat pro zapojení do Zingly?

Testování integrace

https://github.com/lime-company/lime-security-powerauth/blob/master/powerauth-docs/source/tutorial/console-client-app.md

Page 73: Co musí banka udělat pro zapojení do Zingly?
Page 74: Co musí banka udělat pro zapojení do Zingly?

1. Stáhněte si PowerAuth 2.0 CMDhttps://github.com/lime-company/lime-security-powerauth/releases

Page 75: Co musí banka udělat pro zapojení do Zingly?

2. Připravte si konfigurační soubor

Page 76: Co musí banka udělat pro zapojení do Zingly?

$ cat /tmp/pamk.json { "applicationName": "PowerAuth 2.0 Reference Client", "applicationId": "Xg2sNup4wH7UQdchEld10w==", "applicationSecret": "+k9EBCszvcDOalMK9FZYiQ==", "masterPublicKey": "BByU43YKRNkzB+1/rahhaJC4kiGNiciYrcTBrL8=" }

Page 77: Co musí banka udělat pro zapojení do Zingly?

3. Testujte integraci :-)

Page 78: Co musí banka udělat pro zapojení do Zingly?

$ java -jar powerauth-java-cmd.jar --url "http://localhost:8080/zingly-api" --config-file "/tmp/pamk.json" --status-file "/tmp/pa_status.json" --method "prepare" --password "1234" --activation-code "F3CCT-FNOUS-GEVJF-O3HMV"

Page 79: Co musí banka udělat pro zapojení do Zingly?

$ cat /tmp/pa_status.json { "activationId" : "24ac43a6-375e-4428-843a-84a2faa87e8e" "counter" : 4, "signaturePossessionKey" : "CwCviJR/wGqm8wNrNe4JGA==", "signatureKnowledgeKeyEncrypted" : "WFKHFrezmYuFAUToAQ==", "signatureKnowledgeKeySalt" : "RmDQ8hwsy0V/Gi1GHDKjWw==", "signatureBiometryKey" : "K2ZrnBP/AU2dWheFJOQKvw==", "transportMasterKey" : "kp2sNKVGepV9xtTwLXs/5g==", "encryptedDevicePrivateKey" : "17LLl/C8pYo/YA+w4Z6z1LLZa2U", "serverPublicKey" : "BEWx7a6LnkW7ckbJKUz2IINY5VSL0U6INwM=" }

Page 80: Co musí banka udělat pro zapojení do Zingly?

$ cat /tmp/pa_status.json { "activationId" : "24ac43a6-375e-4428-843a-84a2faa87e8e" "counter" : 4, "signaturePossessionKey" : "CwCviJR/wGqm8wNrNe4JGA==", "signatureKnowledgeKeyEncrypted" : “WFKHFrezmYuFAUToAQ==", "signatureKnowledgeKeySalt" : "RmDQ8hwsy0V/Gi1GHDKjWw==", "signatureBiometryKey" : "K2ZrnBP/AU2dWheFJOQKvw==", "transportMasterKey" : "kp2sNKVGepV9xtTwLXs/5g==", "encryptedDevicePrivateKey" : "17LLl/C8pYo/YA+w4Z6z1LLZa2U", "serverPublicKey" : "BEWx7a6LnkW7ckbJKUz2IINY5VSL0U6INwM=" }

Page 81: Co musí banka udělat pro zapojení do Zingly?

$ cat /tmp/pa_status.json { "activationId" : "24ac43a6-375e-4428-843a-84a2faa87e8e" "counter" : 4, "signaturePossessionKey" : "CwCviJR/wGqm8wNrNe4JGA==", "signatureKnowledgeKeyEncrypted" : "WFKHFrezmYuFAUToAQ==", "signatureKnowledgeKeySalt" : "RmDQ8hwsy0V/Gi1GHDKjWw==", "signatureBiometryKey" : "K2ZrnBP/AU2dWheFJOQKvw==", "transportMasterKey" : "kp2sNKVGepV9xtTwLXs/5g==", "encryptedDevicePrivateKey" : "17LLl/C8pYo/YA+w4Z6z1LLZa2U", "serverPublicKey" : "BEWx7a6LnkW7ckbJKUz2IINY5VSL0U6INwM=" }

Page 82: Co musí banka udělat pro zapojení do Zingly?

$ cat /tmp/pa_status.json { "activationId" : "24ac43a6-375e-4428-843a-84a2faa87e8e" "counter" : 4, "signaturePossessionKey" : "CwCviJR/wGqm8wNrNe4JGA==", "signatureKnowledgeKeyEncrypted" : "WFKHFrezmYuFAUToAQ==", "signatureKnowledgeKeySalt" : "RmDQ8hwsy0V/Gi1GHDKjWw==", "signatureBiometryKey" : "K2ZrnBP/AU2dWheFJOQKvw==", "transportMasterKey" : "kp2sNKVGepV9xtTwLXs/5g==", "encryptedDevicePrivateKey" : "17LLl/C8pYo/YA+w4Z6z1LLZa2U", "serverPublicKey" : "BEWx7a6LnkW7ckbJKUz2IINY5VSL0U6INwM=" }

Page 83: Co musí banka udělat pro zapojení do Zingly?

$ cat /tmp/pa_status.json { "activationId" : "24ac43a6-375e-4428-843a-84a2faa87e8e" "counter" : 4, "signaturePossessionKey" : "CwCviJR/wGqm8wNrNe4JGA==", "signatureKnowledgeKeyEncrypted" : "WFKHFrezmYuFAUToAQ==", "signatureKnowledgeKeySalt" : "RmDQ8hwsy0V/Gi1GHDKjWw==", "signatureBiometryKey" : "K2ZrnBP/AU2dWheFJOQKvw==", "transportMasterKey" : "kp2sNKVGepV9xtTwLXs/5g==", "encryptedDevicePrivateKey" : "17LLl/C8pYo/YA+w4Z6z1LLZa2U", "serverPublicKey" : "BEWx7a6LnkW7ckbJKUz2IINY5VSL0U6INwM=" }

Page 84: Co musí banka udělat pro zapojení do Zingly?

$ cat /tmp/pa_status.json { "activationId" : "24ac43a6-375e-4428-843a-84a2faa87e8e" "counter" : 4, "signaturePossessionKey" : "CwCviJR/wGqm8wNrNe4JGA==", "signatureKnowledgeKeyEncrypted" : "WFKHFrezmYuFAUToAQ==", "signatureKnowledgeKeySalt" : "RmDQ8hwsy0V/Gi1GHDKjWw==", "signatureBiometryKey" : "K2ZrnBP/AU2dWheFJOQKvw==", "transportMasterKey" : "kp2sNKVGepV9xtTwLXs/5g==", "encryptedDevicePrivateKey" : "17LLl/C8pYo/YA+w4Z6z1LLZa2U", "serverPublicKey" : "BEWx7a6LnkW7ckbJKUz2IINY5VSL0U6INwM=" }

Page 85: Co musí banka udělat pro zapojení do Zingly?

$ cat /tmp/pa_status.json { "activationId" : "24ac43a6-375e-4428-843a-84a2faa87e8e" "counter" : 4, "signaturePossessionKey" : "CwCviJR/wGqm8wNrNe4JGA==", "signatureKnowledgeKeyEncrypted" : "WFKHFrezmYuFAUToAQ==", "signatureKnowledgeKeySalt" : "RmDQ8hwsy0V/Gi1GHDKjWw==", "signatureBiometryKey" : "K2ZrnBP/AU2dWheFJOQKvw==", "transportMasterKey" : "kp2sNKVGepV9xtTwLXs/5g==", "encryptedDevicePrivateKey" : "17LLl/C8pYo/YA+w4Z6z1LLZa2U", "serverPublicKey" : "BEWx7a6LnkW7ckbJKUz2IINY5VSL0U6INwM=" }

Page 86: Co musí banka udělat pro zapojení do Zingly?

PowerAuth Server

Zingly API ServerInternetové bankovnictví

SOAP REST-ish

SOAP REST-ish

PowerAuth 2.0 Standard API Zingly Banking API

Bankovní službyPowerAuth

Admin

Page 87: Co musí banka udělat pro zapojení do Zingly?

PowerAuth Server PowerAuth Server

Zingly API Server Zingly API Server

Zingly Multi-Banking Hub Server

Banka A Banka B

Ban

kyUži

vate

PowerAuth Server

Zin

gly

Internetové bankovnictví

Internetové bankovnictví

Page 88: Co musí banka udělat pro zapojení do Zingly?

Děkuji

Petr Dvořák e-mail: [email protected] twitter: @zinglyapp

http://zingly.cz/

Page 89: Co musí banka udělat pro zapojení do Zingly?

31.3., 15:00 - 16:00 Dopad multi-bankingu a otevřených bankovních API do obchodního fungování bank

Page 90: Co musí banka udělat pro zapojení do Zingly?

Otázky? :-)

Petr Dvořák e-mail: [email protected] twitter: @zinglyapp

http://zingly.cz/