Giter Club home page Giter Club logo

xs2a-sandbox's Introduction

ModelBank: A dynamic PSD2 Sandbox environment for realistic TPP integration testing

This is adorsys ModelBank: a dynamic sandbox environment that fully meets the PSD2 requirements for providing APIs for Third-Party Providers (TPP). Based on the Berlin Group’s NextGen PSD2 specification for access to accounts (XS2A), ModelBank meets all the regulatory requirements and is NISP compliant.

ModelBank is an open source (AGPL v3) try out solution. It is delivered as-is and comes without any warranty, to the extent permitted by applicable law.

Caveat: This repository is not the latest version of Modelbank as it runs with our enterprise clients. Do not use it for commercial purposes! This public repository will only be updated every 6 months or so. It may contain security related issues that are already fixed with our customers but did not make it to the public repository, yet.

Enterprise Version: There is an enterprise version of Model Bank that we proudly manage, adapt, extend, improve and operate for our enterprise clients, mostly European banks and open banking aggregators. This version consists of latest Berlin Group implementation of XS2A Core.

Partnerships: If you are an organization that would like to commercially use our solutions beyond AGPL v3 requirements, please get in contact. We currently focus on collaborative projects with our customers where our frameworks can be used as a basis for building new individual PSD2 solutions.

Upcoming Regulation: If you are interested in this project's further developments in the context of Berlin Group, Open Banking UK, PSD3, PSR, DORA and FIDA, please get in contact.

For any inquiries please write to [email protected].

What is it

With PSD2 Directive (EU) 2015/2366 of the European Parliament and of the Council on Payment Services in the Internal Market, published 25 November 2016 the European Union has forced Banking Market to open the Banking Services to Third Party Service Providers (TPP). These services are accessible by TPP on behalf of a Payment Service User (PSU).

The 'Berlin Group' is a pan-European payments interoperability standards and harmonisation initiative. Based on the PSD2 and EBA RTS requirements, Berlin Group NextGenPSD2 has worked on a detailed Access to Account (XS2A) Framework with data model (at conceptual, logical and physical data levels) and associated messaging.

ModelBank is a dynamic sandbox environment that allows to emulate and test ASPSP's OpenAPI PSD2 services. Modelbank functionality supports all mandatory services of XS2A. Optional services are partially supported via UI interfaces, but fully supported and can be tested through XS2A interface.

ModelBank is based on XS2A Service, XS2A-connector-examples and Ledgers. ModelBank also uses Keycloak identity provider (IDP) for the security/token issues and for handling the system users.

With ModelBank TPP UI, you as a testing TPP can access banking APIs directly, get TPP certificates and manage testing accounts. Administrators cannot login to TPP UI.

The ModelBank Admin UI provides a user interface to manage administrators of the ModelBank, its users and TPPs. Please note, that TPPs cannot login to this application.

Developer Portal contains testing instructions and all the necessary documentation. Also, there is a possibility to send requests to XS2A system to proceed basic Payment and Consent flows available in test cases inside Developer Portal.

All four SCA approaches are supported: REDIRECT, OAUTH, EMBEDDED, DECOUPLED. Two of them (REDIRECT, EMBEDDED) are directly testable on Developer portal. For the Redirect SCA Approach an Online Banking UI is used for authorisation and SCA.

Project documentation

How to try it

Version policy

In general ModelBank Team follows SemVer for versioning. This means our versions follow the model A.B.C, where:

  • A - is the major version, pointing out mainline.

  • B - is the minor version, pointing out the next release in the mainline.

  • C - is the hotfix version, used to deliver patches between releases when needed. If omitted, version 4.5 will be considered equal to 4.5.0.

We support one release version at the moment.

New version is released on a regular basis every 3 to 6 months.

Development and contributing

Any person is free to join us by implementing some parts of code or fixing some bugs and making a merge requests for them.

Contribution Guidelines describe internal development process and how to contribute to the ModelBank.

Contact

For commercial support please contact [email protected]. Visit our Website at: adorsys

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 adorsys

xs2a-sandbox's People

Contributors

andriimurashkin avatar borelli-7 avatar christiannoubi avatar clovisgakam avatar dashkok avatar dg0lden avatar dmitrymishchuk avatar francis-pouatcha avatar hoxi96 avatar hryhoriihevorkian avatar jfractalus avatar lenny-optiopay avatar nicolewesemeyer avatar olazak avatar ram-ism avatar semyonich avatar spetrychenko avatar tidusio avatar vlad-nechai avatar wandi34 avatar yavers avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xs2a-sandbox's Issues

Various errors while trying to run in docker

Hello,

I came across your project today and wanted to give it a go. I want to deploy it locally without having to install all of the dependencies.
According to the readme, I should make run to Run services from Docker Hub registry without build. I tried but it gives me the following output:

➜  XS2A-Sandbox git:(master) make run
docker-compose pull && docker-compose up
Pulling xs2a-aspsp-profile         ... done
Pulling xs2a-consent-management-db ... done
Pulling xs2a-consent-management    ... done
Pulling certificate-generator      ... error
Pulling fakesmtp                   ... done
Pulling ledgers                    ... done
Pulling xs2a-tpp-rest-server       ... error
Pulling xs2a-tpp-ui                ... error
Pulling xs2a-connector-examples    ... done
Pulling developer-portal-ui        ... error
Pulling xs2a-online-banking        ... error
Pulling xs2a-online-banking-ui     ... error

ERROR: for xs2a-online-banking  manifest for adorsys/xs2a-online-banking:3.6-RC1 not found: manifest unknown: manifest unknown

ERROR: for xs2a-tpp-ui  manifest for adorsys/xs2a-bank-tpp-ui:3.6-RC1 not found: manifest unknown: manifest unknown

ERROR: for xs2a-online-banking-ui  manifest for adorsys/xs2a-online-banking-ui:3.6-RC1 not found: manifest unknown: manifest unknown

ERROR: for xs2a-tpp-rest-server  manifest for adorsys/xs2a-tpp-rest-server:3.6-RC1 not found: manifest unknown: manifest unknown

ERROR: for developer-portal-ui  manifest for adorsys/xs2a-bank-devportal:3.6-RC1 not found: manifest unknown: manifest unknown

ERROR: for certificate-generator  manifest for adorsys/xs2a-certificate-generator:3.6-RC1 not found: manifest unknown: manifest unknown
ERROR: manifest for adorsys/xs2a-online-banking:3.6-RC1 not found: manifest unknown: manifest unknown
manifest for adorsys/xs2a-bank-tpp-ui:3.6-RC1 not found: manifest unknown: manifest unknown
manifest for adorsys/xs2a-online-banking-ui:3.6-RC1 not found: manifest unknown: manifest unknown
manifest for adorsys/xs2a-tpp-rest-server:3.6-RC1 not found: manifest unknown: manifest unknown
manifest for adorsys/xs2a-bank-devportal:3.6-RC1 not found: manifest unknown: manifest unknown
manifest for adorsys/xs2a-certificate-generator:3.6-RC1 not found: manifest unknown: manifest unknown
make: *** [run] Error 1

I then tried make start to Make docker images and run services without build but it gives me the following error:

➜  XS2A-Sandbox git:(master) make start
docker-compose -f docker-compose.yml -f docker-compose-build-template.yml up
ERROR: .FileNotFoundError: [Errno 2] No such file or directory: './docker-compose-build-template.yml'
make: *** [start] Error 1

Indeed this file does not exist in the repo.

I am on OSX 10.14.6. Docker 19.03.8. Docker-compose version 1.25.4.

Do you need more information to debug the issue ?

Thanks a lot.
Matthieu

max.musterman wrong account balance for initial transactions

When one launches vanilla Sandbox in DEV mode, user max.musterman is created.
He gets following transactions:
Selection_142

Calculated balance (10.120,00 visible on screenshot) does not seem to be correct, because:
Correct balance flow seem to be (operations done in order on screenshot)

  1. debtor DE38760700240320465700 -> creditor DE69760700240340283600, amount -1280. Expected balance is (swap debtor, creditor as is negative, DE38760700240320465700 becomes creditor) -1280 on DE38760700240320465700
  2. debtor DE38760700240320465700 -> creditor DE80760700240271232400, amount -2300. Expected balance is (swap debtor, creditor as is negative, DE38760700240320465700 becomes creditor) -1280-2300 on DE38760700240320465700
  3. debtor DE80760700240271232400 -> creditor DE38760700240320465700, amount 700. Expected balance is -1280-2300-700 on DE38760700240320465700
  4. debtor DE69760700240340283600 -> creditor DE38760700240320465700, amount 3000. Expected balance is -1280-2300-700-3000 on DE38760700240320465700
  5. cash deposit (debtor/creditor DE38760700240320465700) Expected balance is -1280-2300-700-3000+10000 on DE38760700240320465700
    This way displayed balance should be: 2720 instead of 10.120,00

Can someone clarify displayed balance logic?

challengeData object contains `data` field with array of null

If there is no data information in Challenge Data object, the corresponding field returns an array of null, e.g.
Screenshot 2020-06-09 at 16 48 19

In such cases, additional checking for null is required for avoiding NPE.

It would be nice to have this field not present in the response if no data is available.

TPP UI app problem

Hi,
In the TPP UI app when the user is registered or there is a failure during the registration process, the message is not shown properly (see screenshot attached-top right corner)

image

A Vagrantfile would be 1A

I'm struggeling to install the sandbox on CentOS

  • Do you have a recommmended OS?
  • Do you have automated provision scripts?

A "one-stopp" Vagrant file would be great.

angular docker images in development mode by default

Hello everyone,

it seems that the docker images for the tpp-ui and also the online-banking-ui provided here:

are running in development mode by default (see attached screenshot). I couldn't find any straight forward solution to this (e.g. ENV var, etc.) beside changing the build commands and building the image on my own. Are you currently planning to also provide production-ready images, at least for the v5.14 on dockerhub?

Thank's a lot in advance!

image

Internal Server Error bei Null Values

Hallo, ich habe einen Internal Server Error bei Null Values erhalten. Anbei der Request, Response sowie der StackTrace.

Request:
Request method: POST
Request URI: http://localhost:8089/v1/consents
Proxy:
Request params:
Query params:
Form params:
Path params:
Headers: X-Request-ID=2f77a125-aa7a-45c0-b414-c3a25a116136
PSU-ID=kamysek
psu-ip-address=1.1.1.1
accept=application/json
Content-Type=application/json; charset=UTF-8
Cookies:
Multiparts:
Body:
{
"access": {
"accounts": [
{
"iban": "DE17123456780000000001"
}
]
},
"combinedServiceIndicator": "false",
"validUntil": "2020-10-10",
"recurringIndicator": "true",
"frequencyPerDay": "15"
}

Response:
HTTP/1.1 500
Content-Type: application/json;charset=UTF-8
Content-Length: 100
Date: Thu, 30 Jan 2020 16:04:52 GMT
Connection: close

{
"tppMessages": [
{
"category": "ERROR",
"code": "INTERNAL_SERVER_ERROR",
"text": "Internal Server Error"
}
]
}

StackTrace:
2020-01-29 18:23:41.996 WARN 1 --- [nio-8089-exec-4] a.p.x.e.GlobalExceptionHandlerController : Uncatched exception handled in Controller: ConsentApi, message: status 400 reading UserMgmtRestClient#multilevelAccounts(String,List), stackTrace: {}
xs2a-connector-examples |
xs2a-connector-examples | feign.FeignException: status 400 reading UserMgmtRestClient#multilevelAccounts(String,List)
xs2a-connector-examples | at feign.FeignException.errorStatus(FeignException.java:78)
xs2a-connector-examples | at feign.codec.ErrorDecoder$Default.decode(ErrorDecoder.java:93)
xs2a-connector-examples | at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:149)
xs2a-connector-examples | at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:78)
xs2a-connector-examples | at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:103)
xs2a-connector-examples | at com.sun.proxy.$Proxy128.multilevelAccounts(Unknown Source)
xs2a-connector-examples | at de.adorsys.aspsp.xs2a.connector.spi.impl.MultilevelScaServiceImpl.isMultilevelScaRequired(MultilevelScaServiceImpl.java:51)
xs2a-connector-examples | at de.adorsys.aspsp.xs2a.connector.spi.impl.authorisation.AisConsentSpiImpl.isMultilevelScaRequired(AisConsentSpiImpl.java:287)
xs2a-connector-examples | at de.adorsys.aspsp.xs2a.connector.spi.impl.authorisation.AisConsentSpiImpl.firstCallInstantiatingConsent(AisConsentSpiImpl.java:265)
xs2a-connector-examples | at de.adorsys.aspsp.xs2a.connector.spi.impl.authorisation.AisConsentSpiImpl.initiateAisConsent(AisConsentSpiImpl.java:124)
xs2a-connector-examples | at de.adorsys.psd2.xs2a.service.ConsentService.createAccountConsentsWithResponse(ConsentService.java:128)
xs2a-connector-examples | at de.adorsys.psd2.xs2a.service.ConsentService$$FastClassBySpringCGLIB$$11a1f2af.invoke()
xs2a-connector-examples | at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
xs2a-connector-examples | at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749)
xs2a-connector-examples | at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
xs2a-connector-examples | at org.springframework.aop.framework.adapter.AfterReturningAdviceInterceptor.invoke(AfterReturningAdviceInterceptor.java:55)
xs2a-connector-examples | at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)
xs2a-connector-examples | at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93)
xs2a-connector-examples | at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
xs2a-connector-examples | at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688)
xs2a-connector-examples | at de.adorsys.psd2.xs2a.service.ConsentService$$EnhancerBySpringCGLIB$$8b1b48d1.createAccountConsentsWithResponse()
xs2a-connector-examples | at de.adorsys.psd2.xs2a.web.controller.ConsentController.createConsent(ConsentController.java:85)
xs2a-connector-examples | at de.adorsys.psd2.api.ConsentApi._createConsent(ConsentApi.java:63)
xs2a-connector-examples | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
xs2a-connector-examples | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
xs2a-connector-examples | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
xs2a-connector-examples | at java.lang.reflect.Method.invoke(Method.java:498)
xs2a-connector-examples | at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:189)
xs2a-connector-examples | at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
xs2a-connector-examples | at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
xs2a-connector-examples | at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:892)
xs2a-connector-examples | at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797)
xs2a-connector-examples | at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
xs2a-connector-examples | at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1038)
xs2a-connector-examples | at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)
xs2a-connector-examples | at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)
xs2a-connector-examples | at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:908)
xs2a-connector-examples | at javax.servlet.http.HttpServlet.service(HttpServlet.java:665)
xs2a-connector-examples | at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)
xs2a-connector-examples | at javax.servlet.http.HttpServlet.service(HttpServlet.java:750)
xs2a-connector-examples | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
xs2a-connector-examples | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
xs2a-connector-examples | at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
xs2a-connector-examples | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
xs2a-connector-examples | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
xs2a-connector-examples | at de.adorsys.psd2.xs2a.web.filter.SignatureFilter.doFilterInternalCustom(SignatureFilter.java:70)
xs2a-connector-examples | at de.adorsys.psd2.xs2a.web.filter.GlobalAbstractExceptionFilter.doFilterInternal(GlobalAbstractExceptionFilter.java:40)
xs2a-connector-examples | at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
xs2a-connector-examples | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
xs2a-connector-examples | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
xs2a-connector-examples | at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)
xs2a-connector-examples | at de.adorsys.psd2.xs2a.web.filter.ContentCachingWrappingFilter.doFilterInternalCustom(ContentCachingWrappingFilter.java:43)
xs2a-connector-examples | at de.adorsys.psd2.xs2a.web.filter.GlobalAbstractExceptionFilter.doFilterInternal(GlobalAbstractExceptionFilter.java:40)
xs2a-connector-examples | at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
xs2a-connector-examples | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
xs2a-connector-examples | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
xs2a-connector-examples | at de.adorsys.psd2.xs2a.web.filter.QwacCertificateFilter.doFilterInternalCustom(QwacCertificateFilter.java:125)
xs2a-connector-examples | at de.adorsys.psd2.xs2a.web.filter.GlobalAbstractExceptionFilter.doFilterInternal(GlobalAbstractExceptionFilter.java:40)
xs2a-connector-examples | at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
xs2a-connector-examples | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
xs2a-connector-examples | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
xs2a-connector-examples | at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)
xs2a-connector-examples | at de.adorsys.psd2.xs2a.web.filter.LoggingContextClearingFilter.doFilterInternalCustom(LoggingContextClearingFilter.java:45)
xs2a-connector-examples | at de.adorsys.psd2.xs2a.web.filter.GlobalAbstractExceptionFilter.doFilterInternal(GlobalAbstractExceptionFilter.java:40)
xs2a-connector-examples | at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
xs2a-connector-examples | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
xs2a-connector-examples | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
xs2a-connector-examples | at de.adorsys.psd2.xs2a.web.filter.OauthModeFilter.doFilterInternalCustom(OauthModeFilter.java:99)
xs2a-connector-examples | at de.adorsys.psd2.xs2a.web.filter.GlobalAbstractExceptionFilter.doFilterInternal(GlobalAbstractExceptionFilter.java:40)
xs2a-connector-examples | at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
xs2a-connector-examples | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
xs2a-connector-examples | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
xs2a-connector-examples | at org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(HttpTraceFilter.java:90)
xs2a-connector-examples | at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
xs2a-connector-examples | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
xs2a-connector-examples | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
xs2a-connector-examples | at de.adorsys.aspsp.xs2a.connector.oauth.TokenAuthenticationFilter.doFilterInternalCustom(TokenAuthenticationFilter.java:86)
xs2a-connector-examples | at de.adorsys.psd2.xs2a.web.filter.GlobalAbstractExceptionFilter.doFilterInternal(GlobalAbstractExceptionFilter.java:40)
xs2a-connector-examples | at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
xs2a-connector-examples | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
xs2a-connector-examples | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
xs2a-connector-examples | at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
xs2a-connector-examples | at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
xs2a-connector-examples | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
xs2a-connector-examples | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
xs2a-connector-examples | at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92)
xs2a-connector-examples | at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
xs2a-connector-examples | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
xs2a-connector-examples | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
xs2a-connector-examples | at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)
xs2a-connector-examples | at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
xs2a-connector-examples | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
xs2a-connector-examples | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
xs2a-connector-examples | at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:117)
xs2a-connector-examples | at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:106)
xs2a-connector-examples | at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
xs2a-connector-examples | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
xs2a-connector-examples | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
xs2a-connector-examples | at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
xs2a-connector-examples | at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
xs2a-connector-examples | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
xs2a-connector-examples | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
xs2a-connector-examples | at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)
xs2a-connector-examples | at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
xs2a-connector-examples | at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
xs2a-connector-examples | at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
xs2a-connector-examples | at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
xs2a-connector-examples | at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
xs2a-connector-examples | at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:679)
xs2a-connector-examples | at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
xs2a-connector-examples | at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
xs2a-connector-examples | at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
xs2a-connector-examples | at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834)
xs2a-connector-examples | at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415)
xs2a-connector-examples | at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
xs2a-connector-examples | at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
xs2a-connector-examples | at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
xs2a-connector-examples | at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
xs2a-connector-examples | at java.lang.Thread.run(Thread.java:748)

Pending Transaction not visible in List of Transaction

After a new payment is done, LoT does not show this transaction. Client (e.g. fintech) is explicitly asking for bookingStatus "both". The answer is just a list of booked transactions. No pending transactions are returned but expected to see pending transactions as well.
After PaymentExecutionScheduler has run, new payment is visible with status booked.

How to get access to adorsys docker registry?

Dear Adrosys,

I would like to try your XS2A-Sandbox but faced a problem accessing docker images. How can I acquire it?

docker-compose -f /Users/mac/IdeaProjects/github/adorsys/XS2A-Sandbox/docker-compose.yml -p xs2a-sandbox up -d
[+] Running 13/13
 ✘ xs2a-connector-examples Error                                                                                                                                                                                                                        2.2s 
 ✘ xs2a-tpp-rest-server Error                                                                                                                                                                                                                           2.2s 
 ✘ xs2a-tpp-ui Error                                                                                                                                                                                                                                    2.2s 
 ✘ certificate-generator Error                                                                                                                                                                                                                          2.2s 
 ✘ xs2a-consent-management Error                                                                                                                                                                                                                        2.2s 
 ✘ xs2a-online-banking-ui Error                                                                                                                                                                                                                         2.2s 
 ✘ xs2a-aspsp-profile Error                                                                                                                                                                                                                             2.2s 
 ✘ ledgers Error                                                                                                                                                                                                                                        2.2s 
 ✘ xs2a-admin-ui Error                                                                                                                                                                                                                                  2.2s 
 ✘ xs2a-online-banking Error                                                                                                                                                                                                                            2.2s 
 ✘ xs2a-admin-rest-server Error                                                                                                                                                                                                                         2.2s 
 ✘ developer-portal-ui Error                                                                                                                                                                                                                            2.2s 
 ✘ ledgers-keycloak Error                                                                                                                                                                                                                               2.2s 
Error response from daemon: Head "https://gitlab-registry.adorsys.de/v2/adorsys/xs2a/psd2-dynamic-sandbox/xs2a-bank-admin-ui/manifests/6.5": denied: access forbidden
`docker-compose` process finished with exit code 18

Same consent ID returns different users' accounts under concurrent load

This is the random error that occurs under concurrent conditions.
When getting user accounts under concurrent conditions (> 2 users active in parallel), same consent ID returns different user accounts:
I.e. request for getting account list using consent ID
p19QK8BlxLNsnnoag_qR6VtGo2PGWC4JX6OcQ3mIf0zjngEE6YMMTOCnUTRId2y66SWecYw6yBQe384Ykanddcz9MpaJIQIH3NJX8IHgetw=_=_psGLvQpt9Q
and PSU-ID 0d0241806848434cb0b2e5d61832de3e returns IBAN DE56299553367764337291 in the account list that is associated to different user. This is part of the log that shows the issue:

2022-02-11 19:10:29.357  INFO 1 --- [nio-8089-exec-7] access-log                               : InR-ID: [8e76f6c3-9dda-493c-9310-1f6ff086e1d7], X-Request-ID: [d6dd485e-c6e9-4e51-97e4-39eb23e21de0], REQUEST - TPP ID: [PSDDE-FAKENCA-ID12345], TPP IP Address: [172.28.0.1], TPP Roles: [AISP,PISP,PIISP], URI: [/v1/accounts], Account ID: [Not exist in URI], Consent ID: [p19QK8BlxLNsnnoag_qR6VtGo2PGWC4JX6OcQ3mIf0zjngEE6YMMTOCnUTRId2y66SWecYw6yBQe384Ykanddcz9MpaJIQIH3NJX8IHgetw=_=_psGLvQpt9Q] 
2022-02-11 19:10:29.371  INFO 1 --- [nio-8089-exec-7] d.a.p.x.s.ais.AccountHelperService       : InR-ID: [8e76f6c3-9dda-493c-9310-1f6ff086e1d7], X-Request-ID: [d6dd485e-c6e9-4e51-97e4-39eb23e21de0], Corresponding PSU-ID PsuIdData(psuId=0d0241806848434cb0b2e5d61832de3e, psuIdType=null, psuCorporateId=null, psuCorporateIdType=null, psuIpAddress=null, additionalPsuIdData=null) was provided from request. 
2022-02-11 19:10:29.375  INFO 1 --- [nio-8089-exec-7] d.a.a.x.c.spi.impl.AccountSpiImpl        : InR-ID: [8e76f6c3-9dda-493c-9310-1f6ff086e1d7], X-Request-ID: [d6dd485e-c6e9-4e51-97e4-39eb23e21de0], Requested account list for consent with ID: 17602c35-8d2d-477f-8a8f-4ef52a324ee7 and withBalance: false 
2022-02-11 19:10:29.376  INFO 1 --- [nio-8089-exec-7] d.a.a.x.c.spi.impl.AccountSpiImpl        : InR-ID: [8e76f6c3-9dda-493c-9310-1f6ff086e1d7], X-Request-ID: [d6dd485e-c6e9-4e51-97e4-39eb23e21de0], Consent with ID: 17602c35-8d2d-477f-8a8f-4ef52a324ee7 is a global or available account Consent 
2022-02-11 19:10:29.405  INFO 1 --- [nio-8089-exec-7] request-log                              : InR-ID: [8e76f6c3-9dda-493c-9310-1f6ff086e1d7], X-Request-ID: [d6dd485e-c6e9-4e51-97e4-39eb23e21de0], uri: [/v1/accounts], requestHeaders: [x-gtw-aspsp-id: aa750320-2958-455e-9926-e9fca5ddfa92, consent-id: p19QK8BlxLNsnnoag_qR6VtGo2PGWC4JX6OcQ3mIf0zjngEE6YMMTOCnUTRId2y66SWecYw6yBQe384Ykanddcz9MpaJIQIH3NJX8IHgetw=_=_psGLvQpt9Q, psu-id: 0d0241806848434cb0b2e5d61832de3e, accept: application/json, x-request-id: d6dd485e-c6e9-4e51-97e4-39eb23e21de0, host: localhost:20014, connection: Keep-Alive, accept-encoding: gzip,deflate], requestPayload: [], responseStatus: [200], responseHeaders: [Vary: Origin, Vary: Origin, Vary: Origin, X-Request-Id: d6dd485e-c6e9-4e51-97e4-39eb23e21de0], responseBody: [{"accounts":[{"resourceId":"qaTu8mWARHghCGyqEDtYpg","iban":"DE56299553367764337291","currency":"EUR","name":"7c792a18607e466baa20457a5eb34351","displayName":"mock display name","cashAccountType":"CASH","status":"enabled","linkedAccounts":"s0BEDlKjQrkmFNAGNLR95A","usage":"PRIV"}]}] 
2022-02-11 19:10:29.405  INFO 1 --- [nio-8089-exec-7] access-log                               : InR-ID: [8e76f6c3-9dda-493c-9310-1f6ff086e1d7], X-Request-ID: [d6dd485e-c6e9-4e51-97e4-39eb23e21de0], RESPONSE - TPP ID: [PSDDE-FAKENCA-ID12345], Status: [200], consentStatus: [valid] 

This is part of the log that shows correctly processed request:

2022-02-11 19:10:25.675  INFO 1 --- [nio-8089-exec-4] access-log                               : InR-ID: [fd34f8be-308a-4c7f-9f3d-f1d292cb4898], X-Request-ID: [f9317bee-90e9-4359-b66e-4a099837bd3a], REQUEST - TPP ID: [PSDDE-FAKENCA-ID12345], TPP IP Address: [172.28.0.1], TPP Roles: [AISP,PISP,PIISP], URI: [/v1/accounts], Account ID: [Not exist in URI], Consent ID: [p19QK8BlxLNsnnoag_qR6VtGo2PGWC4JX6OcQ3mIf0zjngEE6YMMTOCnUTRId2y66SWecYw6yBQe384Ykanddcz9MpaJIQIH3NJX8IHgetw=_=_psGLvQpt9Q] 
2022-02-11 19:10:25.690  INFO 1 --- [nio-8089-exec-4] d.a.p.x.s.ais.AccountHelperService       : InR-ID: [fd34f8be-308a-4c7f-9f3d-f1d292cb4898], X-Request-ID: [f9317bee-90e9-4359-b66e-4a099837bd3a], Corresponding PSU-ID PsuIdData(psuId=0d0241806848434cb0b2e5d61832de3e, psuIdType=null, psuCorporateId=null, psuCorporateIdType=null, psuIpAddress=null, additionalPsuIdData=null) was provided from request. 
2022-02-11 19:10:25.697  INFO 1 --- [nio-8089-exec-4] d.a.a.x.c.spi.impl.AccountSpiImpl        : InR-ID: [fd34f8be-308a-4c7f-9f3d-f1d292cb4898], X-Request-ID: [f9317bee-90e9-4359-b66e-4a099837bd3a], Requested account list for consent with ID: 17602c35-8d2d-477f-8a8f-4ef52a324ee7 and withBalance: false 
2022-02-11 19:10:25.697  INFO 1 --- [nio-8089-exec-4] d.a.a.x.c.spi.impl.AccountSpiImpl        : InR-ID: [fd34f8be-308a-4c7f-9f3d-f1d292cb4898], X-Request-ID: [f9317bee-90e9-4359-b66e-4a099837bd3a], Consent with ID: 17602c35-8d2d-477f-8a8f-4ef52a324ee7 is a global or available account Consent 
2022-02-11 19:10:25.730  INFO 1 --- [nio-8089-exec-4] request-log                              : InR-ID: [fd34f8be-308a-4c7f-9f3d-f1d292cb4898], X-Request-ID: [f9317bee-90e9-4359-b66e-4a099837bd3a], uri: [/v1/accounts], requestHeaders: [x-gtw-aspsp-id: aa750320-2958-455e-9926-e9fca5ddfa92, consent-id: p19QK8BlxLNsnnoag_qR6VtGo2PGWC4JX6OcQ3mIf0zjngEE6YMMTOCnUTRId2y66SWecYw6yBQe384Ykanddcz9MpaJIQIH3NJX8IHgetw=_=_psGLvQpt9Q, psu-id: 0d0241806848434cb0b2e5d61832de3e, accept: application/json, x-request-id: f9317bee-90e9-4359-b66e-4a099837bd3a, host: localhost:20014, connection: Keep-Alive, accept-encoding: gzip,deflate], requestPayload: [], responseStatus: [200], responseHeaders: [Vary: Origin, Vary: Origin, Vary: Origin, X-Request-Id: f9317bee-90e9-4359-b66e-4a099837bd3a], responseBody: [{"accounts":[{"resourceId":"GQ9EVw1ARKMplU102fNzK8","iban":"DE18941046462456993786","currency":"EUR","name":"0d0241806848434cb0b2e5d61832de3e","displayName":"mock display name","cashAccountType":"CASH","status":"enabled","linkedAccounts":"7v_vskAtQlgscQox-otN60","usage":"PRIV"}]}] 
2022-02-11 19:10:25.730  INFO 1 --- [nio-8089-exec-4] access-log                               : InR-ID: [fd34f8be-308a-4c7f-9f3d-f1d292cb4898], X-Request-ID: [f9317bee-90e9-4359-b66e-4a099837bd3a], RESPONSE - TPP ID: [PSDDE-FAKENCA-ID12345], Status: [200], consentStatus: [valid] 

Version list used:
https://github.com/adorsys/open-banking-gateway/blob/04fb5f87245f942166f220b225c490a83e817f90/how-to-start-with-project/xs2a-sandbox-only/docker-compose.yml

Documentation (arc42) has some broken image links

When generating the documentation (arc42) the following links to images are wrong:

  • ../images/deployment-view.svg
    -../images/cpu_memory_load.png
    -../images/oauth2_pre-authentication.png

References should be ./images insteadof ../images

make run - ERROR @angular-devkit/build-angular

Running all steps as described, I get this error:

nodejs: v10.16.0
npm: 6.9.0

cd tpp-ui && npm install
npm WARN [email protected] requires a peer of [email protected] - 3 but none is installed. You must install peer dependencies yourself.
npm WARN [email protected] requires a peer of popper.js@^1.14.3 but none is installed. You must install peer dependencies yourself.
npm WARN [email protected] requires a peer of @angular/compiler@>=2.3.1 <7.0.0 || >6.0.0-beta <7.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN [email protected] requires a peer of @angular/core@>=2.3.1 <7.0.0 || >6.0.0-beta <7.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN [email protected] requires a peer of @angular/platform-browser-dynamic@>=2.3.1 <7.0.0 || >6.0.0-beta <7.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN [email protected] requires a peer of @angular/platform-browser@>=2.3.1 <7.0.0 || >6.0.0-beta <7.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN [email protected] requires a peer of @angular/common@>=2.3.1 <7.0.0 || >6.0.0-beta <7.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

npm ERR! path /vagrant/tpp-ui/node_modules/@angular-devkit/build-angular/node_modules/rxjs
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall rename
npm ERR! enoent ENOENT: no such file or directory, rename '/vagrant/tpp-ui/node_modules/@angular-devkit/build-angular/node_modules/rxjs' -> '/vagrant/tpp-ui/node_modules/@angular-devkit/build-angular/node_modules/.rxjs.DELETE'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/vagrant/.npm/_logs/2019-06-22T07_28_55_763Z-debug.log
Makefile:27: recipe for target 'npm-install-tpp-ui' failed
make: *** [npm-install-tpp-ui] Error 254

tpp-rest-server: SPRING_TPP_DATASOURCE(_TTP)_USERNAME not respected

Hey,
I'm trying to run the sandbox, however when the tpp-rest-server tries to start it tries to use the default cms user, not the custom one that was provided with the SPRING_DATASOURCE_PASSWORD and SPRING_TPP_DATASOURCE_USERNAME env vars.
Is this user hardcoded somehow? Do I need to use a different env var?

2020-10-26 16:44:15.788 INFO 1 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2020-10-26 16:44:17.441 ERROR 1 --- [ main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception during pool initialization.
org.postgresql.util.PSQLException: FATAL: password authentication failed for user "cms"

NPE during Periodic Payment PSU Authentication

Hi all,

I'm getting Internal Server Error with the NPE exception in the periodic-payments process during execution of the following call

PUT /v1/{payment-service}/{payment-product}/{paymentId}/authorisations/{authorisationId}
Update PSU data for payment initiation with PSU Authentication

Please find attached stack trace
periodic_payment_auth_exception.txt

Best Regards,
Đorđe

OAuth2 pre-step - How?

Hi Team,
I have just installed XS2A on a local VM. It seems to run.
I need to use OAuth2 pre-step and token refresh.
I can't find any swagger spec that matches the Berlin Group spec for this:

"This specification supports two ways of integrating OAuth2. The first support is an
authentication of a PSU in a pre-step, translating this authentication into an access token to
be used at the XS2A interface afterwards"

The initial step is supposed to return HTTP 302 and a "location" header. Example from the spec:

GET /authorise?responseType=code&clientId="PSDES-BDE-3DFD21" &
scope=ais%3A1234-wertiq-983+offline_access&
state= S8NJ7uqk5fY4EjNvP_G_FtyJu6pUsvH9jsYni9dMAJw&
redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb&
code_challenge_method="S256"
code_challenge=5c305578f8f19b2dcdb6c3c955c0aa709782590b4642eb890b97e43917cd
0f36 HTTP/1.1
 Host: api.testbank.com

Thanx,
Anders

Error on TPP-Redirect-URI header length

Hello,

It seems like the header TPP-Redirect-URI (and I guess TPP-Nok-Redirect-URI too) have a limit of 255 characters because of the error Header 'tpp-redirect-uri' should not be more than 255 symbols.
Where does this limit come from? It doesn't come from Berlin Group specification as they don't impose any limit there.
I know that in our case it will be an issue. Some state that we add to the redirect URIs makes the whole header more than 255 symbols.
Would it be possible to increase this limit?

Thanks a lot,
Matthieu

Unable to register a new TPP user on release 3.4 via TPP UI

Hello,

I'm trying to start using the sandbox and register a TPP user via the UI but I can't get past this screen because of a call that's fetching the country code list to populate the form is returning 502 error

xs2a-tpp-ui_1 | 172.20.0.1 - - [07/Apr/2020:15:03:12 +0000] "GET /tpp/codes HTTP/1.1" 502 157 "http://localhost:4205/register" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Safari/605.1.15"

Screenshot 2020-04-07 at 18 03 14

Any ideas on how to fix this?

Thanks!

OAuth2 Integrated - `Back To Tpp` button wrong link

Back To Tpp button at the end of OAuth2-integrated flow has the wrong link that leads to OAuth2 code not being returned to TPP (to exchange to token).

Steps:

  1. Assuming one has set the correct ASPSP profile to be used with OAUTH:
server:
  port: ${common.apps.local.aspspprofile.port}

spring:
  profiles:
    # debug_mode allows to change bank profiles for test purposes
    active: debug_mode

# This file is for ASPSP-Profile application

# Forcing `fixed` bank profile for redirect approach in local configuration
# Points to this file, section 'setting'
xs2a:
  bank_profile:
    path: ${primary.profile}

# Sandbox environment has very different URLS compared to what is declared in bank_profile.yaml,
# setting to sandbox alike
# Assuming OBA-UI from XS2A-Sandbox runs on port 4400
setting:
  ais:
    consentTypes:
      bankOfferedConsentSupported: TRUE
      globalConsentSupported: TRUE
      availableAccountsConsentSupported: TRUE
      accountAccessFrequencyPerDay: 100
      notConfirmedConsentExpirationTimeMs: 86400000
      maxConsentValidityDays: 0
      accountOwnerInformationSupported: false
      trustedBeneficiariesSupported: false
    redirectLinkToOnlineBanking:
      aisRedirectUrlToAspsp: http://localhost:4400/account-information/login?encryptedConsentId={encrypted-consent-id}&redirectId={redirect-id}
    transactionParameters:
      availableBookingStatuses:
        - BOTH
        - BOOKED
        - PENDING
      transactionsWithoutBalancesSupported: FALSE
      supportedTransactionApplicationTypes:
        - application/json
    deltaReportSettings:
      entryReferenceFromSupported: FALSE
      deltaListSupported: FALSE
    scaRequirementsForOneTimeConsents:
      scaByOneTimeAvailableAccountsConsentRequired: TRUE
      scaByOneTimeGlobalConsentRequired: TRUE
  pis:
    supportedPaymentTypeAndProductMatrix:
      SINGLE:
        - sepa-credit-transfers
        - instant-sepa-credit-transfers
    maxTransactionValidityDays: 0
    notConfirmedPaymentExpirationTimeMs: 86400000
    paymentCancellationAuthorisationMandated: FALSE
    redirectLinkToOnlineBanking:
      pisRedirectUrlToAspsp: http://localhost:4400/payment-initiation/login?paymentId={encrypted-payment-id}&redirectId={redirect-id}
      pisPaymentCancellationRedirectUrlToAspsp: http://localhost:4400/payment-cancellation/login?paymentId={encrypted-payment-id}&redirectId={redirect-id}
      paymentCancellationRedirectUrlExpirationTimeMs: 600000
    countryValidationSupported: DE
    supportedTransactionStatusFormats:
      - application/json
  piis:
    piisConsentSupported: NOT_SUPPORTED
  common:
    scaApproachesSupported:
      - REDIRECT
      - EMBEDDED
      - OAUTH
    scaRedirectFlow: REDIRECT
    oauthConfigurationUrl: http://localhost:20015/oauth/authorization-server
    startAuthorisationMode: auto
    # TODO https://github.com/adorsys/open-banking-gateway/issues/980
    tppSignatureRequired: FALSE
    psuInInitialRequestMandated: FALSE
    redirectUrlExpirationTimeMs: 600000
    authorisationExpirationTimeMs: 86400000
    forceXs2aBaseLinksUrl: FALSE
    xs2aBaseLinksUrl: http://myhost.com/
    supportedAccountReferenceFields:
      - IBAN
    multicurrencyAccountLevelSupported: SUBACCOUNT
    aisPisSessionsSupported: FALSE
    signingBasketSupported: FALSE
    checkTppRolesFromCertificateSupported: TRUE
    aspspNotificationsSupported:
      - NONE
    authorisationConfirmationRequestMandated: FALSE
    authorisationConfirmationCheckByXs2a: FALSE
    checkUriComplianceToDomainSupported: FALSE
    tppUriComplianceResponse: WARNING
  1. And one calls:
curl --location --request POST 'http://localhost:20014/v1/consents' \
--header 'accept: application/json' \
--header 'PSU-ID: anton.brueckner' \
--header 'X-Request-ID: 2f77a125-aa7a-45c0-b414-cea25a116035' \
--header 'Content-Type: application/json' \
--header 'psu-ip-address: 1.1.1.1' \
--header 'X-OAUTH-PREFERRED: integrated' \
--header 'tpp-redirect-uri: https://google.com' \
--data-raw '{
  "access": {
    "accounts": [],
    "balances": [],
    "availableAccounts": "allAccounts",
    "transactions": []
  },
  "combinedServiceIndicator": false,
  "frequencyPerDay": 10,
  "recurringIndicator": true,
  "validUntil": "2021-10-10"
}'
  1. And then one follows the returned scaOAuth link (i.e.
    http://localhost:20015/oauth/authorization-server?consentId=uW4nKNRgGUXtjMXg_K923QCNNk4VItxm_AonVQud-KFTx5Ll8DiLGJv_h3mYHzlj9Gjy56Fkiuf5A7NXeKYoy8z9MpaJIQIH3NJX8IHgetw=_=_psGLvQpt9Q&redirectId=ecac1685-c15f-4dce-80c6-0441285804ab)

  2. And then one follows authorization_endpoint returned from http://localhost:20015/oauth/authorization-server?consentId=uW4nKNRgGUXtjMXg_K923QCNNk4VItxm_AonVQud-KFTx5Ll8DiLGJv_h3mYHzlj9Gjy56Fkiuf5A7NXeKYoy8z9MpaJIQIH3NJX8IHgetw=_=_psGLvQpt9Q&redirectId=ecac1685-c15f-4dce-80c6-0441285804ab call (the link came from response object from call to scaOAuth link on previous step) -> i.e. opens http://localhost:4400/account-information/login?redirectId=ecac1685-c15f-4dce-80c6-0441285804ab&encryptedConsentId=uW4nKNRgGUXtjMXg_K923QCNNk4VItxm_AonVQud-KFTx5Ll8DiLGJv_h3mYHzlj9Gjy56Fkiuf5A7NXeKYoy8z9MpaJIQIH3NJX8IHgetw=_=_psGLvQpt9Q&oauth2=true in local browser

  3. Performs consent authorization and ends up on page

http://localhost:4400/account-information/result?encryptedConsentId=uW4nKNRgGUXtjMXg_K923QCNNk4VItxm_AonVQud-KFTx5Ll8DiLGJv_h3mYHzlj9Gjy56Fkiuf5A7NXeKYoy8z9MpaJIQIH3NJX8IHgetw%3D_%3D_psGLvQpt9Q&authorisationId=ecac1685-c15f-4dce-80c6-0441285804ab&oauth2=true

So that one sees the button:
Selection_135

Back to TPP page has wrong link - like this:
http://localhost:4400/oba-proxy/ais/uW4nKNRgGUXtjMXg_K923QCNNk4VItxm_AonVQud-KFTx5Ll8DiLGJv_h3mYHzlj9Gjy56Fkiuf5A7NXeKYoy8z9MpaJIQIH3NJX8IHgetw=_=_psGLvQpt9Q/authorisation/ecac1685-c15f-4dce-80c6-0441285804ab/done?oauth2=false
Following this link prevents OnlineBanking from sending OAuth2 code to the requesting TPP
If one changes
http://localhost:4400/oba-proxy/ais/uW4nKNRgGUXtjMXg_K923QCNNk4VItxm_AonVQud-KFTx5Ll8DiLGJv_h3mYHzlj9Gjy56Fkiuf5A7NXeKYoy8z9MpaJIQIH3NJX8IHgetw=_=_psGLvQpt9Q/authorisation/ecac1685-c15f-4dce-80c6-0441285804ab/done?oauth2=true
then the TPP gets OAuth2 code that can be exchanged to token.

Observed on:
adorsys/xs2a-online-banking-ui:3.7.1
and seemingly develop
Full version reference:
https://github.com/adorsys/open-banking-gateway/blob/develop/how-to-start-with-project/xs2a-sandbox-only/docker-compose.yml

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.