Impersontaing options

main
Manuel Tauber 2024-02-07 16:18:12 +01:00
parent cf8505b42a
commit 7fd76d96a9
2 changed files with 21 additions and 5 deletions

View File

@ -59,4 +59,7 @@ public class Rsso {
token);
return webclient.get().uri(url).retrieve().bodyToMono(RssoResponse.class).block();
}
public void impersonateUserFormSession(String userId) throws ARException{
javaAPI.impersonateUser(userId);
}
}

View File

@ -1,5 +1,6 @@
package com.nttdata.calender.api.rsso;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@ -15,6 +16,7 @@ import com.bmc.thirdparty.org.springframework.beans.factory.annotation.Autowired
public class RssoInterceptor implements HandlerInterceptor {
private final static boolean DEBUG = true;
private final Rsso rsso;
private static final Logger applicationLogger = LogManager.getLogger("application");
@Autowired
public RssoInterceptor(Rsso rsso) {
@ -42,20 +44,31 @@ public class RssoInterceptor implements HandlerInterceptor {
}
var session = request.getSession(true);
var user = session.getAttribute("user");
if (user == null) {
var cookies = request.getCookies();
applicationLogger.info("RSSO Interceptor Session:"+session.toString());
var user = session.getAttribute("user");
applicationLogger.info("\n\n\nRSSO Interceptor user:"+user);
System.out.println("USER:"+user);
if (user == null) {
applicationLogger.info("User ist NULL:");
var cookies = request.getCookies();
System.out.println("cookies:"+cookies);
applicationLogger.info("Cookies:"+cookies.toString());
if (cookies != null) {
for (var cookie : cookies) {
if (cookie.getName().startsWith("sso_")) {
if (cookie.getName().startsWith("sso_")||cookie.getName().startsWith("saml_")) {
System.out.println("cookie:"+cookie.getName()+"/"+cookie.getValue());
rsso.createSession(cookie.getValue(), session);
return true;
}
}
}
applicationLogger.info("KEINE COOKIES GESETZT");
System.out.println("no cookies");
throw new Exception("no cookies set");
}
applicationLogger.info("User ist gesetzt:"+ user);
rsso.impersonateUserFormSession((String) user);
return true;
}
}