use of org.springframework.security.authentication.event.AuthenticationSuccessEvent in project pentaho-platform by pentaho.
the class BackingRepositoryLifecycleManagerAuthenticationSuccessListener method onApplicationEvent.
// ~ Methods
// =========================================================================================================
public void onApplicationEvent(final ApplicationEvent event) {
if (event instanceof AuthenticationSuccessEvent || event instanceof InteractiveAuthenticationSuccessEvent) {
// $NON-NLS-1$
logger.debug("received AbstractAuthenticationEvent");
// Get the lifecycle manager for this event
final IBackingRepositoryLifecycleManager lifecycleManager = getLifecycleManager();
// Execute new tenant with the tenant id from the logged in user
final AbstractAuthenticationEvent aEvent = (AbstractAuthenticationEvent) event;
final String principalName = aEvent.getAuthentication().getName();
try {
getSecurityHelper().runAsSystem(new Callable<Void>() {
@Override
public Void call() throws Exception {
// Execute new tenant with the tenant id from the logged in user
lifecycleManager.newTenant(JcrTenantUtils.getTenant(principalName, true));
return null;
}
});
} catch (Exception e) {
logger.error(e.getLocalizedMessage(), e);
}
try {
getSecurityHelper().runAsSystem(new Callable<Void>() {
@Override
public Void call() throws Exception {
// Execute new tenant with the tenant id from the logged in user
lifecycleManager.newUser(JcrTenantUtils.getTenant(principalName, true), JcrTenantUtils.getPrincipalName(principalName, true));
return null;
}
});
} catch (Exception e) {
logger.error(e.getLocalizedMessage(), e);
}
try {
// The newTenant() call should be executed as the system (or more correctly the tenantAdmin)
getSecurityHelper().runAsSystem(new Callable<Void>() {
@Override
public Void call() throws Exception {
lifecycleManager.newTenant();
return null;
}
});
} catch (Exception e) {
logger.error(e.getLocalizedMessage(), e);
}
try {
// run as user to populate SecurityContextHolder and PentahoSessionHolder since Spring Security events are
// fired
// before SecurityContextHolder is set
getSecurityHelper().runAsUser(principalName, new Callable<Void>() {
@Override
public Void call() throws Exception {
lifecycleManager.newUser();
return null;
}
});
} catch (Exception e) {
logger.error(e.getLocalizedMessage(), e);
}
logger.info("The user \"" + principalName + "\"" + " connected to repository");
}
}
use of org.springframework.security.authentication.event.AuthenticationSuccessEvent in project spring-security-oauth by spring-projects.
the class OAuth2ClientAuthenticationProcessingFilter method attemptAuthentication.
@Override
public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException, IOException, ServletException {
OAuth2AccessToken accessToken;
try {
accessToken = restTemplate.getAccessToken();
} catch (OAuth2Exception e) {
BadCredentialsException bad = new BadCredentialsException("Could not obtain access token", e);
publish(new OAuth2AuthenticationFailureEvent(bad));
throw bad;
}
try {
OAuth2Authentication result = tokenServices.loadAuthentication(accessToken.getValue());
if (authenticationDetailsSource != null) {
request.setAttribute(OAuth2AuthenticationDetails.ACCESS_TOKEN_VALUE, accessToken.getValue());
request.setAttribute(OAuth2AuthenticationDetails.ACCESS_TOKEN_TYPE, accessToken.getTokenType());
result.setDetails(authenticationDetailsSource.buildDetails(request));
}
publish(new AuthenticationSuccessEvent(result));
return result;
} catch (InvalidTokenException e) {
BadCredentialsException bad = new BadCredentialsException("Could not obtain user details from token", e);
publish(new OAuth2AuthenticationFailureEvent(bad));
throw bad;
}
}
Aggregations