Skip to content

Commit 0aef226

Browse files
committed
Bugfix for scim bearer token
1 parent e6e706a commit 0aef226

5 files changed

Lines changed: 16 additions & 18 deletions

File tree

server/src/main/java/access/provision/ProvisioningServiceDefault.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -451,11 +451,6 @@ private void deleteRequest(Provisioning provisioning,
451451
} else if (hasScimHook(provisioning) && (isUser || provisioning.isScimUserProvisioningOnly())) {
452452
URI uri = this.provisioningUri(provisioning, apiType, Optional.ofNullable(remoteIdentifier));
453453
HttpHeaders headers = this.httpHeaders(provisioning);
454-
if (StringUtils.hasText(provisioning.getScimPassword())) {
455-
headers.setBasicAuth(provisioning.getScimUser(), this.decryptScimPassword(provisioning));
456-
} else if (StringUtils.hasText(provisioning.getScimBearerToken())) {
457-
headers.add(HttpHeaders.AUTHORIZATION, String.format("Bearer %s", this.decryptScimBearerToken(provisioning)));
458-
}
459454
requestEntity = new RequestEntity<>(request, headers, HttpMethod.DELETE, uri);
460455
} else if (hasGraphHook(provisioning) && isUser) {
461456
this.graphClient.deleteUser((User) provisionable, provisioning, remoteIdentifier);
@@ -530,7 +525,11 @@ private HttpHeaders httpHeaders(Provisioning provisioning) {
530525
HttpHeaders headers = new HttpHeaders();
531526
switch (provisioning.getProvisioningType()) {
532527
case scim -> {
533-
headers.setBasicAuth(provisioning.getScimUser(), decryptScimPassword(provisioning));
528+
if (StringUtils.hasText(provisioning.getScimPassword())) {
529+
headers.setBasicAuth(provisioning.getScimUser(), this.decryptScimPassword(provisioning));
530+
} else if (StringUtils.hasText(provisioning.getScimBearerToken())) {
531+
headers.add(HttpHeaders.AUTHORIZATION, String.format("Bearer %s", this.decryptScimBearerToken(provisioning)));
532+
}
534533
headers.setContentType(MediaType.APPLICATION_JSON);
535534
headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
536535
}

server/src/main/resources/application.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ spring:
7171
port: 1025
7272

7373
crypto:
74-
development-mode: True
74+
development-mode: False
7575
# private-key-location: classpath:nope
7676
# Use the commented lines when you want to test against a remote manage. Do not add the private_key to git
7777
# development-mode: False

welcome/src/components/User.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ export const User = ({user, invitationRoles = []}) => {
1212
<RoleCard key={index} index={index} application={application}/>
1313
);
1414
}
15-
1615
const rolesToExclude = invitationRoles.map(invitationRole => invitationRole.role.id);
1716
const filteredUserRoles = user.userRoles
1817
.filter(userRole => userRole.authority === "GUEST" || userRole.guestRoleIncluded)

welcome/src/pages/App.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ export const App = () => {
3030
configuration()
3131
.then(res => {
3232
useAppStore.setState(() => ({config: res}));
33-
3433
if (!res.authenticated) {
3534
if (!res.name) {
3635
const direction = window.location.pathname + window.location.search;
@@ -44,17 +43,19 @@ export const App = () => {
4443
const pathname = locationStored || window.location.pathname;
4544
const isInvitationAcceptFlow = window.location.pathname.startsWith("/invitation/accept")
4645
|| pathname.startsWith("/invitation/accept");
46+
let route;
4747
if (res.name && !pathname.startsWith("/invitation/accept") && !isInvitationAcceptFlow) {
48-
navigate("/deadend");
48+
route = "/deadend";
4949
} else if (pathname === "/" || pathname.startsWith("/login") || isInvitationAcceptFlow) {
50-
const route = isInvitationAcceptFlow ? pathname : (window.location.pathname + window.location.search);
51-
setTimeout(() => navigate(route), 15);
52-
navigate(route);
50+
route = isInvitationAcceptFlow ? pathname : (window.location.pathname + window.location.search);
5351
} else {
5452
//Bookmarked URL's trigger a direct login and skip the landing page
5553
login(res);
5654
}
57-
setLoading(false);
55+
if (!isEmpty(route)) {
56+
setLoading(false);
57+
setTimeout(() => navigate(route), 50);
58+
}
5859
} else {
5960
me()
6061
.then(res => {

welcome/src/pages/Invitation.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ const HAS_LOGGED_IN_AGAIN = "hasLoggedInAgain"
2222
let runOnce = false;
2323

2424
export const Invitation = ({authenticated}) => {
25-
25+
2626
const navigate = useNavigate();
2727
const {user, config} = useAppStore(state => state);
2828

@@ -34,14 +34,13 @@ export const Invitation = ({authenticated}) => {
3434

3535
useEffect(() => {
3636
const hashParam = getParameterByName("hash", window.location.search);
37-
37+
3838
if (runOnce) {
3939
return;
4040
}
4141
runOnce = true;
4242
invitationByHash(hashParam)
4343
.then(res => {
44-
4544
setInvitation(res);
4645
useAppStore.setState(() => ({
4746
invitation: res
@@ -67,7 +66,7 @@ export const Invitation = ({authenticated}) => {
6766
})
6867
})
6968
.catch(e => {
70-
69+
7170
setLoading(false);
7271
if (e.response && e.response.status === 412) {
7372
setConfirmation({

0 commit comments

Comments
 (0)