Create OpenAIREAuthentication object. Get user Info supports new login service user Info implementation
parent
006e289b50
commit
ae71a30dcc
@ -1,28 +1,27 @@
|
||||
package eu.dnetlib.uoaauthorizationlibrary.security;
|
||||
|
||||
import eu.dnetlib.uoaauthorizationlibrary.utils.AuthorizationUtils;
|
||||
import eu.dnetlib.uoaauthorizationlibrary.utils.UserInfo;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
||||
import org.springframework.security.core.Authentication;
|
||||
import org.springframework.security.core.userdetails.UserDetails;
|
||||
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
@Component
|
||||
public class AuthorizationProvider {
|
||||
|
||||
private UserDetailsServiceImpl userDetailsService;
|
||||
private final AuthorizationUtils utils;
|
||||
|
||||
@Autowired
|
||||
AuthorizationProvider(UserDetailsServiceImpl userDetailsService) {
|
||||
this.userDetailsService = userDetailsService;
|
||||
AuthorizationProvider(AuthorizationUtils utils) {
|
||||
this.utils = utils;
|
||||
}
|
||||
|
||||
public Authentication getAuthentication(String token) {
|
||||
try {
|
||||
UserDetails userDetails = userDetailsService.loadUserByUsername(token);
|
||||
return new UsernamePasswordAuthenticationToken(userDetails, "", userDetails.getAuthorities());
|
||||
} catch (UsernameNotFoundException e) {
|
||||
return null;
|
||||
}
|
||||
public OpenAIREAuthentication getAuthentication(HttpServletRequest request) {
|
||||
UserInfo user = utils.getUserInfo(request);
|
||||
if(user != null) {
|
||||
return new OpenAIREAuthentication(user);
|
||||
}
|
||||
return new OpenAIREAuthentication();
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,34 @@
|
||||
package eu.dnetlib.uoaauthorizationlibrary.security;
|
||||
|
||||
import eu.dnetlib.uoaauthorizationlibrary.utils.UserInfo;
|
||||
import org.springframework.security.authentication.AbstractAuthenticationToken;
|
||||
|
||||
public class OpenAIREAuthentication extends AbstractAuthenticationToken {
|
||||
private final UserInfo user;
|
||||
|
||||
public OpenAIREAuthentication() {
|
||||
super(null);
|
||||
this.user = null;
|
||||
setAuthenticated(false);
|
||||
}
|
||||
|
||||
public OpenAIREAuthentication(UserInfo user) {
|
||||
super(user.getAuthorities());
|
||||
this.user = user;
|
||||
setAuthenticated(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getCredentials() {
|
||||
return getUser().getSub();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getPrincipal() {
|
||||
return getUser();
|
||||
}
|
||||
|
||||
public UserInfo getUser() {
|
||||
return user;
|
||||
}
|
||||
}
|
@ -1,52 +0,0 @@
|
||||
package eu.dnetlib.uoaauthorizationlibrary.security;
|
||||
|
||||
import eu.dnetlib.uoaauthorizationlibrary.utils.AuthorizationUtils;
|
||||
import eu.dnetlib.uoaauthorizationlibrary.utils.UserInfo;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.core.GrantedAuthority;
|
||||
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
||||
import org.springframework.security.core.userdetails.UserDetails;
|
||||
import org.springframework.security.core.userdetails.UserDetailsService;
|
||||
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class UserDetailsServiceImpl implements UserDetailsService {
|
||||
|
||||
private AuthorizationUtils utils;
|
||||
|
||||
@Autowired
|
||||
public UserDetailsServiceImpl(AuthorizationUtils utils) {
|
||||
this.utils = utils;
|
||||
}
|
||||
|
||||
private List<GrantedAuthority> getAuthorities(List<String> roles) {
|
||||
List<GrantedAuthority> authorities = new ArrayList<>();
|
||||
for(String role : roles) {
|
||||
authorities.add(new SimpleGrantedAuthority(role));
|
||||
}
|
||||
return authorities;
|
||||
}
|
||||
|
||||
@Override
|
||||
public UserDetails loadUserByUsername(String token) throws UsernameNotFoundException {
|
||||
final UserInfo user = utils.getUserInfo(token);
|
||||
|
||||
if (user == null) {
|
||||
throw new UsernameNotFoundException("invalid token: " + token);
|
||||
}
|
||||
|
||||
return org.springframework.security.core.userdetails.User
|
||||
.withUsername(user.getEmail()).password(user.getSub())
|
||||
.authorities(getAuthorities(user.getRoles()))
|
||||
.accountExpired(false)
|
||||
.accountLocked(false)
|
||||
.credentialsExpired(false)
|
||||
.disabled(false)
|
||||
.build();
|
||||
}
|
||||
|
||||
}
|
@ -1,20 +0,0 @@
|
||||
log4j.rootLogger = DEBUG, R
|
||||
|
||||
log4j.logger.eu.dnetlib = DEBUG
|
||||
log4j.logger.org.springframework = DEBUG, S
|
||||
|
||||
log4j.additivity.org.springframework = false
|
||||
|
||||
log4j.appender.R=org.apache.log4j.RollingFileAppender
|
||||
log4j.appender.R.File=/var/log/dnet/uoa-authorization-library/uoa-authorization-library.log
|
||||
log4j.appender.R.MaxFileSize=10MB
|
||||
log4j.appender.R.MaxBackupIndex=10
|
||||
log4j.appender.R.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.R.layout.ConversionPattern= %d %p %t [%c] - %m%n
|
||||
|
||||
log4j.appender.S=org.apache.log4j.RollingFileAppender
|
||||
log4j.appender.S.File=/var/log/dnet/uoa-authorization-library/uoa-authorization-library-spring.log
|
||||
log4j.appender.S.MaxFileSize=10MB
|
||||
log4j.appender.S.MaxBackupIndex=10
|
||||
log4j.appender.S.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.S.layout.ConversionPattern= %d %p %t [%c] - %m%n
|
Loading…
Reference in New Issue