Skip to content

Commit e1c67b1

Browse files
committed
Merge branch 'release-5.12'
2 parents f64503c + 94a6cd8 commit e1c67b1

File tree

99 files changed

+1183
-854
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

99 files changed

+1183
-854
lines changed

.env

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
QWAC_CERTIFICATE_MOCK=-----BEGIN CERTIFICATE-----MIIFNjCCAx6gAwIBAgIERd3y8TANBgkqhkiG9w0BAQsFADB4MQswCQYDVQQGEwJERTEQMA4GA1UECAwHQkFWQVJJQTESMBAGA1UEBwwJTnVyZW1iZXJnMSIwIAYDVQQKDBlUcnVzdCBTZXJ2aWNlIFByb3ZpZGVyIEFHMR8wHQYDVQQLDBZJbmZvcm1hdGlvbiBUZWNobm9sb2d5MB4XDTIwMDMwNTEzMzk1MFoXDTMwMDMwMzAwMDAwMFowgcExITAfBgNVBAoMGEZpY3Rpb25hbCBDb3Jwb3JhdGlvbiBBRzElMCMGCgmSJomT8ixkARkWFXB1YmxpYy5jb3Jwb3JhdGlvbi5kZTEfMB0GA1UECwwWSW5mb3JtYXRpb24gVGVjaG5vbG9neTEQMA4GA1UEBhMHR2VybWFueTEPMA0GA1UECAwGQmF5ZXJuMRIwEAYDVQQHDAlOdXJlbWJlcmcxHTAbBgNVBGEMFFBTRERFLUZBS0VOQ0EtODdCMkFDMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsHAdLWn7pEAlD5daEjKv7hE4FW+vMJRrA/Bw2M/Zsu8VFfW1ARmbTgTy7rGLFBK/Y2SToEj60+5GEkCgCvi+vI/Bdykk8XqjpVsJjTW67np1b2Av8F61zvCnn2UOxBtXBHCzR1j2yz2om1IMYieGu/cDTWLNkbuoGSnj0dq4CbHp2f8ch++goffqLRXr642j8cVlqZYsapB8y+Z8IydbtNBd/XAmRTAprmdRv9B4PC7P+lIYX8QbXw77f+9/2Kty7oVHtjle+GnTR8wH5nCiMQsA9V564/34lKwuEkzuryV1HzitQ/X7FSZoiSQRTxbxjVO+xdzI3hjF2FZjVvkqywIDAQABo34wfDB6BggrBgEFBQcBAwRuMGwGBgQAgZgnAjBiMDkwEQYHBACBmCcBAwwGUFNQX0FJMBEGBwQAgZgnAQIMBlBTUF9QSTARBgcEAIGYJwEEDAZQU1BfSUMMGVRydXN0IFNlcnZpY2UgUHJvdmlkZXIgQUcMCkRFLUZBS0VOQ0EwDQYJKoZIhvcNAQELBQADggIBACKUQc3O3TOFG8tWk4sQd3f9SGlOcBOMekSXCxRgskcYkjhWW4+EN1FYzlGuXPfq1yngKaM3ss9yCDVep0MFa4hDJ/hzSSD5upExzwWDkUa97AHCjZd39W6kLaCMAc5vTbR9r7zBvMKBcAmhZ9mWCvrvbHUOURv5yBfrrEk4AM1Vakf5l+fWP4JhA779+7JlwpQRpy5dgqROwKQ2L634d2osgXUV4CkqhSUQ5LcYI4uBFyKnM0pyGaNYdKhBC95J0y5GYa7NpKJNZXf+clTbe33gCt2SFSOMa7CV5NYpnohS201uNd/ffWLzGtFBnHLNpX8qTfFc16mtIcJo6Iiof2CYgfYAyJByBC1gZHf1wAtfQzAn6JcEaJzmehXKKl9x7X62aaGan7l+MblUT65Gd+Yed+rXLF6svefbrcIbZwt/W+v1fbfnip9QEFPV3VLjg0vk9Y30ftZCcFRSHLD3mdxcVEtmVxDDxyzDUwXF7J/mi4RQhZBb3OtwwEIWC2zUaycNMZWJRI+RqfLvanlDFFMoYeSZKTFf8jS/PPcfpKOAiTGu21iuuv+gYxh/rgjW419w26ya+Q3jabaz3E9Im/opSU5sQ9W92ALA14J9VZs6v8BVmqKTB5APKfeTYoXg9MjP9fjVM/hP26kIgQVs5Bz15ov8uQlQC+OTO+2y5ozs-----END CERTIFICATE-----
2-
SANDBOX_VERSION=5.11
3-
LEDGERS_VERSION=4.12
4-
XS2A_CONNECTOR_VERSION=11.4
5-
XS2A_ASPSP_PROFILE_VERSION=11.4
6-
XS2A_CONSENT_MANAGEMENT_VERSION=11.4
2+
SANDBOX_VERSION=5.12
3+
LEDGERS_VERSION=4.13
4+
XS2A_CONNECTOR_VERSION=11.5
5+
XS2A_ASPSP_PROFILE_VERSION=11.5
6+
XS2A_CONSENT_MANAGEMENT_VERSION=11.5

developer-portal-ui/info.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
"name": "developer-portal",
3-
"version": "5.11",
3+
"version": "5.12",
44
"build_number": "null"
55
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Release notes v.5.12
2+
3+
Current version consists of following components:
4+
5+
1. **Ledgers v.4.13**
6+
2. **XS2A v.11.5**
7+
3. **ASPSP-Profile v.11.5**
8+
4. **Consent-Management v.11.5**
9+
5. **XS2A Connector-Examples v.11.5**
10+
11+
- Security vulnerability: set commons-io version 2.8.0
12+
- Use pair of tokens (access and refresh) for session
13+
- Used `OkHttpClient` as a feign client to avoid 302 redirect error
14+
- TPP-UI. Show specific account details depending on backend
15+
- Fix OBA: "Back to TPP page" button 403 error
16+
- Upgraded commons-validator version to 1.7

integration-tests/pom.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>de.adorsys.psd2.sandbox</groupId>
77
<artifactId>psd2-dynamic-sandbox</artifactId>
8-
<version>5.11</version>
8+
<version>5.12</version>
99
<relativePath>..</relativePath>
1010
</parent>
1111

@@ -83,6 +83,11 @@
8383
<scope>test</scope>
8484
</dependency>
8585

86+
<dependency>
87+
<groupId>io.github.openfeign</groupId>
88+
<artifactId>feign-okhttp</artifactId>
89+
</dependency>
90+
8691
<dependency>
8792
<groupId>org.springframework</groupId>
8893
<artifactId>spring-test</artifactId>
Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
package de.adorsys.ledgers.xs2a.client;
22

3-
import feign.Request;
3+
import feign.Client;
4+
import okhttp3.Interceptor;
5+
import okhttp3.Response;
46
import org.springframework.context.annotation.Bean;
57
import org.springframework.context.annotation.Configuration;
8+
import org.springframework.http.HttpStatus;
69

10+
import java.io.IOException;
711
import java.util.concurrent.TimeUnit;
812

913
@Configuration
@@ -15,9 +19,32 @@ public NullHeaderInterceptor nullHeaderInterceptor() {
1519
}
1620

1721
@Bean
18-
public Request.Options options() {
19-
return new Request.Options(10, TimeUnit.SECONDS,
20-
60, TimeUnit.SECONDS,
21-
false);
22+
public Client feignClient(okhttp3.OkHttpClient client) {
23+
return new feign.okhttp.OkHttpClient(client);
24+
}
25+
26+
@Bean
27+
public okhttp3.OkHttpClient okHttpClient() {
28+
return new okhttp3.OkHttpClient.Builder()
29+
.connectTimeout(60, TimeUnit.SECONDS)
30+
.readTimeout(60, TimeUnit.SECONDS)
31+
.writeTimeout(60, TimeUnit.SECONDS)
32+
.followRedirects(false)
33+
.followSslRedirects(false)
34+
.retryOnConnectionFailure(true)
35+
.addInterceptor(new RedirectInterceptor())
36+
.build();
37+
}
38+
39+
static class RedirectInterceptor implements Interceptor {
40+
@Override
41+
public Response intercept(Interceptor.Chain chain) throws IOException {
42+
var request = chain.request();
43+
var response = chain.proceed(request);
44+
if (HttpStatus.FOUND.value() == response.code()) {
45+
return response.newBuilder().code(HttpStatus.OK.value()).build();
46+
}
47+
return response;
48+
}
2249
}
2350
}
Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
package de.adorsys.ledgers.xs2a.test.ctk;
22

3-
import feign.Request;
3+
import feign.Client;
4+
import feign.Logger;
5+
import okhttp3.Interceptor;
6+
import okhttp3.Response;
47
import org.springframework.context.annotation.Bean;
58
import org.springframework.context.annotation.Configuration;
9+
import org.springframework.http.HttpStatus;
610

7-
import feign.Logger;
8-
11+
import java.io.IOException;
912
import java.util.concurrent.TimeUnit;
1013

1114
@Configuration
@@ -16,9 +19,32 @@ Logger.Level feignLoggerLevel() {
1619
}
1720

1821
@Bean
19-
public Request.Options options() {
20-
return new Request.Options(10, TimeUnit.SECONDS,
21-
60, TimeUnit.SECONDS,
22-
false);
22+
public Client feignClient(okhttp3.OkHttpClient client) {
23+
return new feign.okhttp.OkHttpClient(client);
24+
}
25+
26+
@Bean
27+
public okhttp3.OkHttpClient okHttpClient() {
28+
return new okhttp3.OkHttpClient.Builder()
29+
.connectTimeout(60, TimeUnit.SECONDS)
30+
.readTimeout(60, TimeUnit.SECONDS)
31+
.writeTimeout(60, TimeUnit.SECONDS)
32+
.followRedirects(false)
33+
.followSslRedirects(false)
34+
.retryOnConnectionFailure(true)
35+
.addInterceptor(new RedirectInterceptor())
36+
.build();
37+
}
38+
39+
static class RedirectInterceptor implements Interceptor {
40+
@Override
41+
public Response intercept(Interceptor.Chain chain) throws IOException {
42+
var request = chain.request();
43+
var response = chain.proceed(request);
44+
if (HttpStatus.FOUND.value() == response.code()) {
45+
return response.newBuilder().code(HttpStatus.OK.value()).build();
46+
}
47+
return response;
48+
}
2349
}
2450
}
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
feign:
2+
okhttp:
3+
enabled: true
24
client:
35
config:
46
default:
@@ -8,6 +10,6 @@ feign:
810

911
# logging.level.root: WARN
1012
# logging.level.org.springframework.boot: WARN
11-
# logging.level.de.adorsys: WARN
12-
logging.level.de.adorsys.ledgers.xs2a: DEBUG
13-
logging.level.de.adorsys.ledgers.oba.rest: DEBUG
13+
# logging.level.de.adorsys: WARN
14+
logging.level.de.adorsys.ledgers.xs2a: DEBUG
15+
logging.level.de.adorsys.ledgers.oba.rest: DEBUG

oba-ui/info.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
"name": "oba-ui",
3-
"version": "5.11",
3+
"version": "5.12",
44
"build_number": "null"
55
}

oba-ui/src/app/ais/result-page/result-page.component.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,13 +70,13 @@ <h3 class="card-title font-weight-bold">Sorry</h3>
7070
<div class="form-group my-3 d-flex justify-content-between">
7171
<a
7272
class="flex-fill btn btn-secondary button-icon d-flex align-items-center mr-2"
73-
[href]="devPortalLink"
73+
(click)="redirectToDevPortal()"
7474
>
7575
<span class="mx-auto">To Developer portal</span>
7676
</a>
7777
<a
7878
class="flex-fill btn btn-primary button-icon d-flex align-items-center"
79-
[href]="ref"
79+
(click)="redirectToTpp()"
8080
>
8181
<span class="mx-auto">Back to TPP page</span>
8282
</a>

oba-ui/src/app/ais/result-page/result-page.component.ts

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import { ConsentAuthorizeResponse } from '../../api/models/consent-authorize-res
55
import { AisService } from '../../common/services/ais.service';
66
import { SettingsService } from '../../common/services/settings.service';
77
import { ShareDataService } from '../../common/services/share-data.service';
8+
import { PSUAISProvidesAccessToOnlineBankingAccountFunctionalityService } from '../../api/services/psuaisprovides-access-to-online-banking-account-functionality.service';
9+
import { AuthService } from '../../common/services/auth.service';
810

911
@Component({
1012
selector: 'app-result-page',
@@ -14,15 +16,16 @@ import { ShareDataService } from '../../common/services/share-data.service';
1416
export class ResultPageComponent implements OnInit, OnDestroy {
1517
public authResponse: ConsentAuthorizeResponse;
1618
public scaStatus: string;
17-
public ref: string;
19+
public aisDoneRequest: PSUAISProvidesAccessToOnlineBankingAccountFunctionalityService.AisDoneUsingGETParams;
1820
public devPortalLink: string;
1921

2022
constructor(
2123
private router: Router,
2224
private route: ActivatedRoute,
2325
private aisService: AisService,
2426
private settingService: SettingsService,
25-
private shareService: ShareDataService
27+
private shareService: ShareDataService,
28+
private authService: AuthService
2629
) {}
2730

2831
public ngOnInit(): void {
@@ -38,9 +41,12 @@ export class ResultPageComponent implements OnInit, OnDestroy {
3841
oauth2 = false;
3942
}
4043

41-
this.ref =
42-
`/oba-proxy/ais/${params.encryptedConsentId}/authorisation/${params.authorisationId}` +
43-
`/done?oauth2=${oauth2}`;
44+
this.aisDoneRequest = {
45+
encryptedConsentId: params.encryptedConsentId,
46+
authorisationId: params.authorisationId,
47+
oauth2: oauth2,
48+
authConfirmationCode: null,
49+
};
4450
});
4551

4652
// get consent data from shared service
@@ -50,14 +56,29 @@ export class ResultPageComponent implements OnInit, OnDestroy {
5056
this.authResponse = authResponse;
5157
this.scaStatus = this.authResponse.scaStatus;
5258
if (authResponse.authConfirmationCode) {
53-
this.ref =
54-
this.ref +
55-
`&authConfirmationCode=${authResponse.authConfirmationCode}`;
59+
this.aisDoneRequest.authConfirmationCode =
60+
authResponse.authConfirmationCode;
5661
}
5762
});
5863
}
5964
});
6065
}
6166

67+
redirectToDevPortal() {
68+
if (this.devPortalLink) {
69+
this.authService.clearSession();
70+
window.location.href = this.devPortalLink;
71+
}
72+
}
73+
74+
redirectToTpp() {
75+
this.aisService.aisDone(this.aisDoneRequest).subscribe((resp) => {
76+
if (resp.redirectUrl) {
77+
this.authService.clearSession();
78+
window.location.href = resp.redirectUrl;
79+
}
80+
});
81+
}
82+
6283
ngOnDestroy(): void {}
6384
}

0 commit comments

Comments
 (0)