Skip to content

Commit e667f25

Browse files
fxprunayrePascalLike
authored andcommitted
GN5 / Add sign in/out support / Add loginType for JWT security provider.
1 parent 242c73b commit e667f25

File tree

5 files changed

+30
-13
lines changed

5 files changed

+30
-13
lines changed

core/src/main/java/org/fao/geonet/kernel/security/jwtheaders/JwtHeadersSecurityConfig.java

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,10 @@
2222
*/
2323
package org.fao.geonet.kernel.security.jwtheaders;
2424

25+
import org.fao.geonet.exceptions.BadParameterEx;
2526
import org.fao.geonet.kernel.security.SecurityProviderConfiguration;
27+
import static org.fao.geonet.kernel.security.SecurityProviderConfiguration.LoginType.AUTOLOGIN;
28+
import static org.fao.geonet.kernel.security.SecurityProviderConfiguration.LoginType.parse;
2629

2730
/**
2831
* GeoNetwork only allows one SecurityProviderConfiguration bean.
@@ -32,8 +35,8 @@
3235
*/
3336
public class JwtHeadersSecurityConfig implements SecurityProviderConfiguration {
3437

38+
private String loginType = AUTOLOGIN.toString();
3539

36-
public SecurityProviderConfiguration.LoginType loginType = SecurityProviderConfiguration.LoginType.AUTOLOGIN;
3740
/**
3841
* true -> update the DB with the information from OIDC (don't allow user to edit profile in the UI)
3942
* false -> don't update the DB (user must edit profile in UI).
@@ -50,7 +53,27 @@ public class JwtHeadersSecurityConfig implements SecurityProviderConfiguration {
5053

5154

5255
public JwtHeadersSecurityConfig() {
56+
}
5357

58+
@Override
59+
public String getLoginType() {
60+
return loginType;
61+
}
62+
63+
public void setLoginType(String loginType) {
64+
LoginType parsedLoginType = parse(loginType);
65+
switch(parsedLoginType) {
66+
case FORM:
67+
case AUTOLOGIN:
68+
break;
69+
case DEFAULT:
70+
parsedLoginType= AUTOLOGIN;
71+
break;
72+
default:
73+
// Currently don't support anything else
74+
throw new BadParameterEx("loginType", parsedLoginType.toString());
75+
}
76+
this.loginType = parsedLoginType.toString();
5477
}
5578

5679
public boolean isUpdateProfile() {
@@ -72,11 +95,6 @@ public void setUpdateGroup(boolean updateGroup) {
7295
this.updateGroup = updateGroup;
7396
}
7497

75-
//@Override
76-
public String getLoginType() {
77-
return loginType.toString();
78-
}
79-
8098
// @Override
8199
public String getSecurityProvider() {
82100
return "JWT-HEADERS";
@@ -88,12 +106,9 @@ public boolean isUserProfileUpdateEnabled() {
88106
return !updateProfile;
89107
}
90108

91-
//========================================================================
92-
93109
// @Override
94110
public boolean isUserGroupUpdateEnabled() {
95111
// If updating group from the security provider then disable the group updates in the interface
96112
return !updateGroup;
97113
}
98-
99114
}

core/src/main/java/org/fao/geonet/util/XslUtil.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -563,9 +563,6 @@ public static boolean isAuthenticated() throws Exception {
563563
public static boolean isDisableLoginForm() {
564564
SecurityProviderConfiguration securityProviderConfiguration = SecurityProviderConfiguration.get();
565565

566-
if ("gn5".equals(System.getProperty("geonetwork.security.type"))) {
567-
return false;
568-
}
569566
if (securityProviderConfiguration != null) {
570567
// No login form if providing a link or autologin
571568
return securityProviderConfiguration.getLoginType().equals(SecurityProviderConfiguration.LoginType.AUTOLOGIN.toString().toLowerCase())

web/src/main/webapp/WEB-INF/config-security/config-security-gn5-overrides.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,5 +47,6 @@ jwtheadersConfiguration.JwtConfiguration.validateTokenAudienceClaimValue=${JWTHE
4747
jwtheadersConfiguration.JwtConfiguration.validateTokenSignature=${JWTHEADERS_ValidateTokenSignature:true}
4848
jwtheadersConfiguration.JwtConfiguration.validateTokenSignatureURL=${JWTHEADERS_ValidateTokenSignatureURL:""}
4949

50+
jwtHeadersSecurityConfig.loginType=form
5051
jwtHeadersSecurityConfig.UpdateProfile=${JWTHEADERS_UpdateProfile:false}
5152
jwtHeadersSecurityConfig.UpdateGroup=${JWTHEADERS_UpdateGroup:false}

web/src/main/webapp/WEB-INF/config-security/config-security-jwt-headers-base.xml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,10 @@
3333
http://www.springframework.org/schema/util
3434
http://www.springframework.org/schema/util/spring-util.xsd">
3535

36-
<bean id ="jwtHeadersSecurityConfig" class="org.fao.geonet.kernel.security.jwtheaders.JwtHeadersSecurityConfig"/>
36+
<bean id="jwtHeadersSecurityConfig"
37+
class="org.fao.geonet.kernel.security.jwtheaders.JwtHeadersSecurityConfig">
38+
<property name="loginType" value="${jwtHeadersSecurityConfig.loginType}"/>
39+
</bean>
3740

3841
<bean id ="jwtheadersConfiguration" class="org.fao.geonet.kernel.security.jwtheaders.JwtHeadersConfiguration">
3942
<constructor-arg ref ="jwtHeadersSecurityConfig" />

web/src/main/webapp/WEB-INF/config-security/config-security-jwt-headers-overrides.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,5 +47,6 @@ jwtheadersConfiguration.JwtConfiguration.validateTokenAudienceClaimValue=${JWTHE
4747
jwtheadersConfiguration.JwtConfiguration.validateTokenSignature=${JWTHEADERS_ValidateTokenSignature:true}
4848
jwtheadersConfiguration.JwtConfiguration.validateTokenSignatureURL=${JWTHEADERS_ValidateTokenSignatureURL:""}
4949

50+
jwtHeadersSecurityConfig.loginType=autologin
5051
jwtHeadersSecurityConfig.UpdateProfile=${JWTHEADERS_UpdateProfile:true}
5152
jwtHeadersSecurityConfig.UpdateGroup=${JWTHEADERS_UpdateGroup:true}

0 commit comments

Comments
 (0)