• Stars
    star
    251
  • Rank 161,862 (Top 4 %)
  • Language
    Java
  • License
    GNU Affero Genera...
  • Created about 5 years ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Provides RESTful API, tools, adapters, and connectors for transparent access to open banking API's (for banks that support PSD2 and XS2A as well as HBCI/FinTS)

Build Status

Heavy tests status

Gitter

Code coverage

  • Backend: codecov-backend
  • Frontend: codecov-frontend
  • Example code: codecov-examples

This is the try-out version of adorsys Open Banking Gateway: an open source (AGPL v3) solution to get acquainted with the adorsys-developed gateway and test its AIS and PIS flows and the respective connectivity to the largest retail banks in Germany (see our XS2A Adapter project).

If you are looking for a strong base framework to build up your own gateway capabilities, we would be thrilled to cooperate with you and share our know-how of the framework and overall open finance and development expertise.

If you are an organisation that would like to commercially use our solutions beyond AGPL v3 requirements, we are open to discuss alternative individual licensing options. If you are interested in working with us or have any other inquiries, please contact us under [email protected].

Open Banking Gateway

Provides tools, adapters and connectors for transparent access to open banking apis. The initial effort focuses on the connectivity to banks that implement the European PSD2 directive either through one of the common market initiatives like : The Berlin Group NextGenPSD2, The Open Banking UK, The Polish PSD2 API or even through proprietary bank api like the ING’s PSD2 API.

What this Project is about

Tackle the Key Challenge for Third Party Providers of Payment Services

The European PSD2 as the first regulator driven Open Banking initiative offers many opportunities for both banks, known as traditional provider of payment services (called ASPSPs in this context) and other Third Party Providers of payment services (TPPs). TPPs can use account information and payment services provided by banks to offer new innovative services to bank account holders. The more banks and TPPs can interact with each other, the more payment account holders can be provided with reacher banking solutions, which in turn simplifies and leverage commercial value chains.

Being able to interact with different banking APIs can be a time and cost consuming challenge. Even though the PSD2 requires European banks to provide APIs and despite the effort of market initiatives to provide common standard interfaces, there is still a multitude of divergent authorization schemes involved and a lot of space for implementation options. A bank can even decide not to join one of the known market initiatives and define it's own PSD2 compliant API.

The purpose of this open banking gateway is to provide the community with a common and simple interface for accessing major Open Banking APIs.

Introducing the FinTech as a Major Role

Being a regulator driven initiative, PSD2 mandates the regulation of TPPs. With this additional detail, the market is experiencing a distinction between regulated TPPs and non regulated FinTechs. This framework is therefore designed taking in consideration the existence of the category of payment service providers called FinTech that used APIs exposed by a regulated TPP to access payment services exposed by banks.

Address Security Issues associated with PSU Access to Multiple Interfaces

In the Open Banking Context, a payment service user (PSU or banking account holder) might have to deal with up to 3 different user interface to initiate, authorize and get the requested banking service executed. There being redirected back and forth from one UserAgent (resp. device) to another. This intensive use of redirection in Open Banking bearing a lot of risk of impersonating the PSU, we set a goal of this Framework to dissect the complexity involved with those redirection processes and open forums for discussion of possible solutions and sample implementations. Following papers are the first attempt to capture the problem (UserAgent Redirection, PSU Access Security Design).

Project Demo

Big Picture

The following picture displays the overall architecture of this banking gateway: High level architecture

Security concept

The following picture displays the overall security concept of this banking gateway: Security concept

Security concept has 2 kinds of flows:

  • authenticated (for consent sharing)
  • anonymous (for payments, but can be authenticated too).

Here are detailed diagrams of each flow:

Technical architecture

The following picture displays the overall technical architecture concept of this banking gateway: Technical architecture

Key components as shown on diagram:

APIs:

Facade:

Protocol:

Running the project locally

  • docker-compose-dev.yml - docker-compose file in the project root for Development (requires building docker images)
  • docker-compose.yml - docker-compose file in the project root for Demo (Images will be pulled from DockerHub)

Postman scripts to play with API

Postman collection details

  • postman-ais-collection Xs2a-embedded or HBCI AIS (account information services) example - getting users' account and transactions list

Note: Postman requires disabled request signing functionality - for that use Spring-profile no-signature-filter. You can use our DEV environment (without signature check) if you import this Postman environment

Information for developers:

  • Working with BPMN: As most protocols use BPMN, we have developed the plugin 'Flowable BPMN visualizer' that directly integrates into IntelliJ with code navigation, refactoring and other stuff for Flowable BPMN engine. It will make your work a lot easier as you don't need to leave IntelliJ to change diagram or to see what class is used at which step.

  • Running local tests faster. To avoid Postgres TestContainer slow initialization one can use following environment variables: TESTCONTAINERS_REUSE_ENABLE=true;TESTCONTAINERS_RYUK_DISABLED=true;SPRING_DATASOURCE_URL=jdbc:tc:postgresql:12:////open_banking?TC_DAEMON=true&?TC_TMPFS=/testtmpfs:rw&TC_INITSCRIPT=init.sql&TC_REUSABLE=true this will keep Postgres TestContainer started and migrated after 1st run, significantly reducing next tests startup time. Note, that it will introduce shared state across tests, which is mostly OK but for some tests may cause failures.

  • Starting with project: How to start with project

  • Populating database with bank data: How to fill database with bank data

Documentation

Please take a look into our documentation to know more about:

Planned and released versions

Architecture

Third Parties Contribution

This project is designed to enable contribution from different sources, as the open banking challenge will start with a magnitude of discrepancies in individual bank implementations, even for banks implementing a common standards.

How to contribute

Authors & Contact

See also the list of contributors who participated in this project.

For commercial support please contact adorsys Team.

License

This project is licensed under Affero GNU General Public License v.3 (AGPL v.3) - see the LICENSE file for details.

For alternative individual licensing options please contact us at [email protected].

More Repositories

1

keycloak-config-cli

Import YAML/JSON-formatted configuration files into Keycloak - Configuration as Code for Keycloak.
Java
728
star
2

secure-storage-android

Store strings & credentials securely encrypted on your device
Java
366
star
3

xs2a

Open Source NextGenPSD2 XS2A Implementation from adorsys.
Java
134
star
4

YesWeScan

A library with a ready to use view controller for document scanning
Swift
100
star
5

sms-parser-android

Intercept a sms in your application
Kotlin
99
star
6

p2p-lending

A decentralized, smart contract based platform for p2p-lending on the Ethereum Blockchain
JavaScript
82
star
7

XS2A-Sandbox

Open Source PSD2-compatible banking system emulator solution from adorsys
TypeScript
62
star
8

fingerprint-android

Simple fingerprint integration into your Android app
Kotlin
60
star
9

ledgers

Simple Open Source implementation of a deposit account application (ASPSP core-banking) from adorsys
Java
56
star
10

datasafe

Secure, Encrypted and Versioned Data Storage Library
Java
51
star
11

xs2a-adapter

Java
38
star
12

multibanking

Java
27
star
13

psd2-accelerator

PSD2 Compliant Sandbox Implementing the XS2A API
Java
27
star
14

secure-token-service

Secure Token Service. Java implementation of OAuth 2.0 Token Exchange IETF draft
Java
25
star
15

keystore-management

Generate keys and keystores using fluent-like API instead of dealing with JCA intricacies
Java
20
star
16

encrypt-down

An abstract-leveldown implementation that wraps another store to encrypt the stored values.
JavaScript
18
star
17

xs2a-connector-examples

Open Source implementation of XS2A connector
Java
14
star
18

golang-chi-rest-db-oauth-sample

REST sample with all the stuff we use
Go
14
star
19

raml-springboot-example

RAML Spring Boot Example
Java
13
star
20

oauth2-pkce

Libraries for OAUTH2 PKCE
Java
11
star
21

oauth

oauth components for ee-server (currently only JBoss)
Java
7
star
22

keycloak-password-encryption

Java
6
star
23

SecureKeyStorage

Secure Key Storage for iOS
Swift
6
star
24

notification-service

notification-service
JavaScript
6
star
25

keycloak-ssi-deployment

Shell
6
star
26

beanval2json

Converts beanvalidation-annotations to JSON
Java
5
star
27

keycloak-oracle

Configuring keycloak-3.3.0.Final for oracle-xe
Shell
4
star
28

xs2a-client-adapter

Java
3
star
29

company-commute-flutter

This is a project demonstrating the power of Flutter taken a simple use case
Dart
3
star
30

summerparty-android

Android App for Summerparty adorsys
Kotlin
3
star
31

didcomm-mediator-rs

Simple mediator for DIDComm Messaging v2
Rust
3
star
32

hbci4java-adorsys

Java
2
star
33

aspsp-registry-manager

Java
2
star
34

sqrl-api

Java
2
star
35

forge-errai-plugin

JavaScript
2
star
36

bg-monitoring

Java
2
star
37

company-commute-backend

This is a prototype for using a dart backend given a simple use case
Dart
2
star
38

xlseasy

Java
2
star
39

secure-storage2-android

SecureStorage2 - Store strings & credentials securely encrypted on your device
Kotlin
2
star
40

tan-server

A generic TAN Server with support for SMS and Mobile Push TAN
Java
2
star
41

keycloak-registration-userlist

Keycloak registration form, to limit user registrations based on a pre-defined email list.
Java
2
star
42

psd2-oauth-service

Java
2
star
43

npm-jwk-generator

JavaScript
1
star
44

pushit

this library is a normalized wrapper over GCM and APNs
Java
1
star
45

amp

Adorsys Message Push CDI Component
Java
1
star
46

cryptoutils

Java
1
star
47

envutils

Java
1
star
48

keycloak-user-secret-adapter

Keycloak Plugins for injecting user secrets into access token
Java
1
star
49

ops-adorsys-kubernetes-platform

Infrastructure Setup of adorsys Test/Poc projects
HCL
1
star
50

multibanking-docusafe

Java
1
star
51

csi-coding-guidelines

This is a project to collect useful code snippets and sample configurations for mobile projects.
1
star
52

multibanking-lib-android

This is the android library which connects to the multibanking service of adorsys
Kotlin
1
star
53

secure-banking

Java
1
star