You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
2.5 KiB
Java
55 lines
2.5 KiB
Java
package eu.eudat.security.validators.b2access;
|
|
|
|
import eu.eudat.exceptions.security.NonValidTokenException;
|
|
import eu.eudat.models.login.LoginInfo;
|
|
import eu.eudat.models.loginprovider.LoginProviderUser;
|
|
import eu.eudat.models.security.Principal;
|
|
import eu.eudat.security.customproviders.B2AccessCustomProvider;
|
|
import eu.eudat.security.customproviders.B2AccessUser;
|
|
import eu.eudat.security.validators.TokenValidator;
|
|
import eu.eudat.security.validators.b2access.helpers.B2AccessRequest;
|
|
import eu.eudat.security.validators.b2access.helpers.B2AccessResponseToken;
|
|
import eu.eudat.services.operations.AuthenticationServiceImpl;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.core.env.Environment;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import java.io.IOException;
|
|
import java.security.GeneralSecurityException;
|
|
|
|
/**
|
|
* Created by ikalyvas on 2/22/2018.
|
|
*/
|
|
@Component("b2AccessTokenValidator ")
|
|
public class B2AccessTokenValidator implements TokenValidator {
|
|
|
|
private B2AccessCustomProvider b2AccessCustomProvider;
|
|
private AuthenticationServiceImpl authenticationServiceImpl;
|
|
private Environment environment;
|
|
|
|
@Autowired
|
|
public B2AccessTokenValidator(AuthenticationServiceImpl authenticationServiceImpl, Environment environment, B2AccessCustomProvider b2AccessCustomProvider) {
|
|
this.authenticationServiceImpl = authenticationServiceImpl;
|
|
this.environment = environment;
|
|
this.b2AccessCustomProvider = b2AccessCustomProvider;
|
|
}
|
|
|
|
@Override
|
|
public Principal validateToken(LoginInfo credentials) throws NonValidTokenException, IOException, GeneralSecurityException {
|
|
B2AccessUser b2AccessUser = this.b2AccessCustomProvider.getUser(credentials.getTicket());
|
|
LoginProviderUser user = new LoginProviderUser();
|
|
user.setId(b2AccessUser.getId());
|
|
user.setEmail(b2AccessUser.getEmail());
|
|
user.setName(b2AccessUser.getName());
|
|
user.setProvider(credentials.getProvider());
|
|
user.setSecret(credentials.getTicket());
|
|
return this.authenticationServiceImpl.Touch(user);
|
|
}
|
|
|
|
public B2AccessResponseToken getAccessToken(B2AccessRequest b2AccessRequest) {
|
|
return this.b2AccessCustomProvider.getAccessToken(b2AccessRequest.getCode(), this.environment.getProperty("b2access.externallogin.redirect_uri")
|
|
, this.environment.getProperty("b2access.externallogin.clientid")
|
|
, this.environment.getProperty("b2access.externallogin.clientSecret"));
|
|
}
|
|
}
|