1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.core.rest.cxf.service;
20
21 import java.util.Optional;
22 import javax.ws.rs.core.HttpHeaders;
23 import org.apache.syncope.common.lib.oidc.OIDCLoginResponse;
24 import org.apache.syncope.common.lib.oidc.OIDCRequest;
25 import org.apache.syncope.common.rest.api.service.OIDCC4UIService;
26 import org.apache.syncope.core.logic.OIDCC4UILogic;
27 import org.springframework.stereotype.Service;
28
29 @Service
30 public class OIDCC4UIServiceImpl extends AbstractService implements OIDCC4UIService {
31
32 protected final OIDCC4UILogic logic;
33
34 public OIDCC4UIServiceImpl(final OIDCC4UILogic logic) {
35 this.logic = logic;
36 }
37
38 @Override
39 public OIDCRequest createLoginRequest(final String redirectURI, final String op) {
40 return logic.createLoginRequest(redirectURI, op);
41 }
42
43 @Override
44 public OIDCLoginResponse login(final String redirectURI, final String authorizationCode, final String op) {
45 return logic.login(redirectURI, authorizationCode, op);
46 }
47
48 @Override
49 public OIDCRequest createLogoutRequest(final String redirectURI) {
50 return logic.createLogoutRequest(getAccessToken(), redirectURI);
51 }
52
53 private String getAccessToken() {
54 String auth = messageContext.getHttpHeaders().getHeaderString(HttpHeaders.AUTHORIZATION);
55 String[] parts = Optional.ofNullable(auth).map(s -> s.split(" ")).orElse(null);
56 if (parts == null || parts.length != 2 || !"Bearer".equals(parts[0])) {
57 return null;
58 }
59
60 return parts[1];
61 }
62 }