mDevCamp 2016 - Zingly, or how to design multi-banking app
-
Upload
petr-dvorak -
Category
Economy & Finance
-
view
317 -
download
0
Transcript of mDevCamp 2016 - Zingly, or how to design multi-banking app
![Page 1: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/1.jpg)
Zingly, or how to design a multi-banking app
Petr Dvorak joshis@tweets Lime
![Page 2: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/2.jpg)
![Page 3: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/3.jpg)
A big change is comming …
![Page 4: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/4.jpg)
PSD2 Legislation
![Page 5: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/5.jpg)
Access to account information and
payment service initiation
![Page 6: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/6.jpg)
Banking API Server
Multi-Banking Hub Services
Bank A
Ban
ksU
sers
Inte
grat
ors
Banking API Server
Bank B
Banking API Server
Bank C
![Page 7: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/7.jpg)
Zingly
![Page 8: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/8.jpg)
Simple, faster and more secure
mobile banking for your bank
![Page 9: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/9.jpg)
Extra fast login with
PIN or Touch ID
![Page 10: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/10.jpg)
Quick account
overview
![Page 11: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/11.jpg)
Comprehensive
transaction list
![Page 12: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/12.jpg)
Pay your friends
and family
![Page 13: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/13.jpg)
Mobile e-commerce
payments (with SDK)
![Page 14: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/14.jpg)
Design
![Page 15: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/15.jpg)
There is only one chance
to do your app right…
![Page 16: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/16.jpg)
![Page 17: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/17.jpg)
![Page 18: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/18.jpg)
Showing only the nice things
("dictator rule")
![Page 19: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/19.jpg)
Architecture
![Page 20: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/20.jpg)
Open-source
![Page 21: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/21.jpg)
Architecture
• PowerAuth 2.0 Server
• Zingly API Server
• Zingly Multi-banking Hub
• Zingly Mobile App
![Page 22: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/22.jpg)
• Native iOS app (Android later)
• Written in Swift 2.0
• Native PowerAuth 2.0 core (C/C++)
• Cocoapods for library management
![Page 23: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/23.jpg)
Zingly server components play nice
with existing banking systems
![Page 24: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/24.jpg)
PowerAuth 2.0 Server
Zingly API Server
Zingly Multi-Banking Hub
Bank A
Internet bankingB
anks
Use
rsZ
ingl
y
CoreServices
Custom API
Bank B
Custom Security and Core Services
SOAP SOAP
REST
REST + WebSockets
![Page 25: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/25.jpg)
PowerAuth 2.0
![Page 26: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/26.jpg)
Security
![Page 27: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/27.jpg)
What is so hard on mobile banking apps?
![Page 28: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/28.jpg)
Multi-banking
• Storing data from multiple banks
• Authentication to multiple banks
• Data transport security
![Page 29: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/29.jpg)
3rd parties
• People don’t trust them
• Cannot provide huge guarantees
• Can play no, positive or negative role
![Page 30: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/30.jpg)
… back to PowerAuth
![Page 31: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/31.jpg)
![Page 32: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/32.jpg)
![Page 33: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/33.jpg)
![Page 34: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/34.jpg)
Mobile libraries soon But I will show you today !
![Page 35: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/35.jpg)
Authentication Secure Storage E2E Encryption
![Page 36: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/36.jpg)
Authentication
• Secure app activation
• Activation life-cycle
• Multi-factor data signature
![Page 37: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/37.jpg)
Authentication How to …
![Page 38: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/38.jpg)
![Page 39: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/39.jpg)
![Page 40: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/40.jpg)
Step 1: Set up your app
![Page 41: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/41.jpg)
• Application key
• Application secret
• Master Public Key
![Page 42: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/42.jpg)
#define APP_KEY "QvTX+lSRTNNJ9zAT8bC8iw=="
#define APP_SECRET "1zNNJNgP0RBGCJWuoHwKqw=="
#define APP_MASTER_KEY "BKltWgFa0U0qlef0c9ll3y3E4lGWrFPTBvrB+gv9tQ3wIwI aEeBnonH9HuSo/6eJKhCJcse6wHXQl8bQ="
![Page 43: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/43.jpg)
class SecurityContext { let session = PA2Session() static let sharedInstance = SecurityContext() func initSecurityContext() { let setup = PA2SessionSetup() setup.applicationKey = APP_KEY setup.applicationSecret = APP_SECRET setup.masterServerPublicKey = APP_MASTER_KEY self.session.initializeSessionWithSetup(setup) } }
![Page 44: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/44.jpg)
Step 2: Read the "activation code"
![Page 45: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/45.jpg)
XC651-AB231-13891-DE123
Short activation ID Activation OTP
![Page 46: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/46.jpg)
Step 3: Securely exchange public keys
![Page 47: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/47.jpg)
Request - POST: /pa/activation/create
{ "requestObject": { "activationName": "My iPhone", "applicationKey": "UNfS0VZX3JhbmRvbQ==", "activationIdShort": "XDA57-24TBC", "activationNonce": "hbmRvbQRUNESF9QVUJMSUNfS0VZX3J==", "applicationSignature": "SF9QRUNEVUJMSUNfS0VZX3JhbmRvbQ==", "encryptedDevicePublicKey": "RUNESF9QVUJMSUNfS0VZX3JhbmRvbQ==", "extras": "Any custom data in any format (XML, JSON, ...)" } }
![Page 48: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/48.jpg)
let session = SecurityContext.sharedInstance.session
let step1Param = PA2ActivationStep1Param() step1Param.activationIdShort = activationIdShort step1Param.activationOtp = activationOtp let step1Result = session.startActivation(step1Param)! // if (session.lastErrorCode == PA2ErrorCode.Ok) { let activationNonce = step1Result.activationNonce let applicationSignature = step1Result.applicationSignature let encryptedDevicePublicKey = step1Result.cDevicePublicKey
![Page 49: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/49.jpg)
Response - HTTP 200 - OK
{ "status": "OK", "responseObject": { "activationId": "c564e700-7e86-4a87-b6c8-a5a0cc89683f", "activationNonce": "vbQRUNESF9hbmRQVUJMSUNfS0VZX3J==", "ephemeralPublicKey": "MSUNfS0VZX3JhbmRvbQNESF9QVUJMSUNfS0VZX3JhbmRvbQNESF9QVUJ==", "encryptedServerPublicKey": "NESF9QVUJMSUNfS0VZX3JhbmRvbQNESF9QVUJMSUNfS0VZX3JhbmRvbQ==", "serverDataSignature": "QNESF9QVUJMSUNfS0VZX3JhbmRvbQ==" } }
![Page 50: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/50.jpg)
let step2Param = PA2ActivationStep2Param() let response = entity.responseObject step2Param.activationId = response.activationId step2Param.ephemeralNonce = response.activationNonce step2Param.encryptedServerPublicKey = response.encryptedServerPublicKey step2Param.ephemeralPublicKey = response.ephemeralPublicKey step2Param.serverDataSignature = response.serverDataSignature let step2Result = session.validateActivationResponse(step2Param)
if (session.lastErrorCode == PA2ErrorCode.Ok) { // ... continue to next step }
![Page 51: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/51.jpg)
Step 4: Ask user for a PIN code
![Page 52: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/52.jpg)
• Short PIN code (4 digits) can be used
• Check for simple combinations
• Ask user to use Touch ID
![Page 53: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/53.jpg)
Step 5: Generate keys and get session state
![Page 54: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/54.jpg)
// we need keys for three authentication factors ... let possessionKey = session.generateSignatureUnlockKey() let biometryKey = session.generateSignatureUnlockKey()
let unlockKeys = PA2SignatureUnlockKeys() unlockKeys.biometryUnlockKey = biometryKey unlockKeys.possessionUnlockKey = possessionKey unlockKeys.userPassword = PA2Password(string: "1234") session.completeActivation(unlockKeys)
let sessionState = session.serializedState()
![Page 55: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/55.jpg)
Step 6: Store session and keys to keychain
![Page 56: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/56.jpg)
// KeychainAccess for Swift // created by Kishikawa Katsumi // see https://github.com/kishikawakatsumi/KeychainAccess
let keychain = Keychain(service: "com.example.myServiceId")
keychain[data: "PA_SESSION_STATE"] = sessionState keychain[data: "PA_KEY_POSSESSION"] = possessionKey do { try keychain .accessibility( .WhenPasscodeSetThisDeviceOnly, authenticationPolicy: .TouchIDAny ) .set(biometryKey, key: "PA_KEY_BIOMETRY") } catch _ { // Error handling... } }
![Page 57: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/57.jpg)
Step 6: Complete activation on web
![Page 58: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/58.jpg)
12345 67890
![Page 59: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/59.jpg)
Step 8: Sign data, make payments, heureka!
!
![Page 60: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/60.jpg)
// Initialize session after app launch let sessionState = keychain[data: "PA_SESSION_STATE"] if (sessionState != nil) { self.session.deserializeState(sessionState!) }
PA2SignatureUnlockKeys keys; keys.possessionUnlockKey = keychain[data: "PA_KEY_POSSESSION"]
// ... ask for PIN code keys.userPassword = cc7::MakeRange("1234")
// ... or use TouchID instead of PIN like so // keys.biometryUnlockKey = keychain[data: "PA_KEY_BIOMETRY"];
![Page 61: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/61.jpg)
// send data on server with the correct HTTP header let paHeaderName = session.httpAuthHeaderName let paHeaderValue = session.httpAuthHeaderValueForBody( data, httpMethod: "POST", uri: "/account/payment/commit", keys: keys, factor: PA2SignatureFactor_Possession_Knowledge )
![Page 62: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/62.jpg)
X-PowerAuth-Authorization: PowerAuth pa_activation_id="7a24c6e9-48e9-43c2-ab4a-aed6270e924d", pa_application_key="Z19gyYaW5kb521fYWN0aXZ==", pa_nonce="kYjzVBB8Y0ZFabxSWbWovY==", pa_signature_type="possession_knowledge" pa_signature="46782479-37298320", pa_version="2.0"
![Page 63: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/63.jpg)
That wasn't that hard, right?
![Page 64: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/64.jpg)
How about multi-banking?
![Page 65: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/65.jpg)
Many banks, one PIN code
![Page 66: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/66.jpg)
activation id
PIN(x)
knowledge
Bank A Bank B
activation id
knowledge
![Page 67: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/67.jpg)
activation id
PIN(x)
activation id
PIN(x)
knowledge knowledge
Bank A Bank B
![Page 68: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/68.jpg)
Authentication Secure Storage E2E Encryption
![Page 69: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/69.jpg)
Secure Storage
• Data encrypted with remote key
• Authentication needed
• Enables secure mobile multi-banking
![Page 70: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/70.jpg)
PowerAuth 2.0 Server
Zingly API Server
Zingly Multi-Banking Hub
Bank A
Internet bankingB
anks
Use
rsZ
ingl
y
CoreServices
SOAP SOAP
REST
REST + WebSockets
PowerAuth 2.0 Server
Zingly API Server
Bank B
Internet banking
CoreServices
SOAP SOAP
REST
![Page 71: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/71.jpg)
PowerAuth 2.0 Server
Zingly API Server
Zingly Multi-Banking Hub
Bank A
Internet bankingB
anks
Use
rsZ
ingl
y
CoreServices
SOAP SOAP
REST
REST + WebSockets
PowerAuth 2.0 Server
Zingly API Server
Bank B
Internet banking
CoreServices
SOAP SOAP
REST
PowerAuth 2.0 Server
![Page 72: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/72.jpg)
PowerAuth 2.0 Server
Zingly API Server
Zingly Multi-Banking Hub
Bank A
Internet bankingB
anks
Use
rsZ
ingl
y
CoreServices
SOAP SOAP
REST
REST + WebSockets
PowerAuth 2.0 Server
Zingly API Server
Bank B
Internet banking
CoreServices
SOAP SOAP
REST
PowerAuth 2.0 Server
PowerAuth 2.0 Client
activation id
PIN(x)
activation id
PIN(x)
knowledge knowledge
![Page 73: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/73.jpg)
PowerAuth 2.0 Server
Zingly API Server
Zingly Multi-Banking Hub
Bank A
Internet bankingB
anks
Use
rsZ
ingl
y
CoreServices
SOAP SOAP
REST
REST + WebSockets
PowerAuth 2.0 Server
Zingly API Server
Bank B
Internet banking
CoreServices
SOAP SOAP
REST
PowerAuth 2.0 Server
PowerAuth 2.0 Client
knowledge
activation id
PIN(x)
activation id
PIN(x)
activation id
PIN(x)
knowledge knowledge
![Page 74: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/74.jpg)
PowerAuth 2.0 Server
Zingly API Server
Zingly Multi-Banking Hub
Bank A
Internet bankingB
anks
Use
rsZ
ingl
y
CoreServices
SOAP SOAP
REST
REST + WebSockets
PowerAuth 2.0 Server
Zingly API Server
Bank B
Internet banking
CoreServices
SOAP SOAP
REST
PowerAuth 2.0 Server
PowerAuth 2.0 Client SECURE VAULT
knowledge
activation id
PIN(x)
activation id
PIN(x)
activation id
PIN(x)
knowledge knowledge
![Page 75: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/75.jpg)
Authentication Secure Storage E2E Encryption
![Page 76: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/76.jpg)
That was nice… What's in it for me?
![Page 77: mDevCamp 2016 - Zingly, or how to design multi-banking app](https://reader031.fdocuments.net/reader031/viewer/2022030305/5870d9801a28ab64768b74fd/html5/thumbnails/77.jpg)
• Build secure apps with PowerAuth 2.0
• Mobile e-commerce with Zingly payments
• Use banking API to access banking services
• Steal code, contribute, comment, live! !