Skip to content

jveselka/openbank

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OpenBank

Digital Services in Banking Space

Before we delve into the specifics of the Solution it may be worthwhile to note the transformation happening currently in the banking space. Digital is positing itself in many facets and interactions that a consumer has with the Bank.

enter image description here

Overview

Apigee OpenBank Solution enables banks to accelerate development of digital services. OpenBank is built on Apigee Edge API Management Platform, and features:

  • Account Information Access APIs.
  • Payment Transfer APIs
  • Open Data APIs
  • OAuth APIs

It also provides an implementation of OpenID and oAuth based authentication, consent and two-factor authentication using SMS.

These APIs play a critical role in the digital transformation of banking services as represented below:

enter image description here

Repository Overview

This repository contains the necessary artifacts that will allow one to pull up a complete set of Banking APIs that comply with Openbanking and PSD2 regulations. In addition this will also allow one to build a sandbox complete with a Developer Portal, mock backend and a sample app.

Prerequisite

  • Apigee API Management Developer Account
  • Apigee API BaaS Account
  • Apigee Developer Portal

Setup

To deploy the APIs and its dependencies on your own org please run the following script

$ cd src/gateway
$ sh setup/setup.sh

This will interactively prompt you for your Edge and BaaS credentials, and will then create / deploy all relevants bundles and artifacts and will provision the OpenBank Sandbox on your own Org.

Design

The APIs provided are configurable to connect to your own Banking backend and / or provide your own consent apps. The following sections will help you understand this solution so that you can go about this on your own.

Architecture

API Architecture

The Banking APIs are designed as Northbound + Southbound APIs.

The Northbound API provides a fixed set of interfaces that can be relyed on by the external consumers. In order to minimize changes to the contract, this API will not need to be changed once deployed.

The Southbound API connects to the actual backend of the bank (or the mock backend) and provides the data that is exposed by the Northbound APIs When the API Developer has to make any changes to the APIs (specifically to connect to a different backend), then these are the APIs that need to be modified.

All Southbound APIs end with the suffix '-connector'

In addition, there are some internal APIs which are not exposed outside, but which are used internally from the other APIs and provide common service such as sending out SMS, storing and fetching session data etc.

Sequence Diagram

OAuth API Flow

OAuth API Interaction

Transfers API Flow

Consent App

The consent app is a key part in helping the user securely authenticate with the bank. The consent app is a trusted app of the bank will allow the user to login and subsequently provide consent information.

In this sandbox, the consent app will talk to the following APIs in order to fulfill its functionality

  • Session API
  • SMS API
  • Accounts-connector API
  • Authention-connector API

In order to customize the consent app, or in case one or more components delivered along with the sandbox is changed, then the configuration of the consent app needs to be updated.

The consent app has a config.json file available in the src/gateway/consent-app/apiproxy/resources/node/ folder. This json file has to be customized so that the right API endpoints are provided to the consent app.

APIs

External APIs

Accounts API
Transfers API
Locations API

Supporting APIs

SMS Token API
Session API

Internal APIs

Accounts Connector
Transfer Connector
Authentication Connector
Locations Connector

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 42.8%
  • PHP 33.3%
  • CSS 20.1%
  • Shell 2.0%
  • HTML 1.8%