/** * Signs a user in * * @param user */ public static <U extends AbstractUser<ID>, ID extends Serializable> void login(U user) { LemonPrincipal principal = new LemonPrincipal(user.toUserDto()); Authentication authentication = // make the authentication object new UsernamePasswordAuthenticationToken(principal, null, principal.getAuthorities()); SecurityContextHolder.getContext().setAuthentication(authentication); // put that in the security context principal.eraseCredentials(); }
/** * Extracts the current-user from authentication object * * @param auth * @return */ public static <ID extends Serializable> UserDto currentUser(Authentication auth) { if (auth != null) { Object principal = auth.getPrincipal(); if (principal instanceof LemonPrincipal) { return ((LemonPrincipal) principal).currentUser(); } } return null; }
protected Authentication createAuthToken(String token) { JWTClaimsSet claims = blueTokenService.parseToken(token, BlueTokenService.AUTH_AUDIENCE); UserDto userDto = LecUtils.getUserDto(claims); if (userDto == null) userDto = fetchUserDto(claims); LemonPrincipal principal = new LemonPrincipal(userDto); return new UsernamePasswordAuthenticationToken(principal, token, principal.getAuthorities()); }
LemonPrincipal principal = new LemonPrincipal(userDto); principal.setAttributes(attributes); principal.setName(oath2User.getName());
@Override public OidcUser loadUser(OidcUserRequest userRequest) throws OAuth2AuthenticationException { OidcUser oidcUser = super.loadUser(userRequest); LemonPrincipal principal = oauth2UserService.buildPrincipal(oidcUser, userRequest.getClientRegistration().getRegistrationId()); principal.setClaims(oidcUser.getClaims()); principal.setIdToken(oidcUser.getIdToken()); principal.setUserInfo(oidcUser.getUserInfo()); return principal; } }
protected ReactiveAuthenticationManager tokenAuthenticationManager() { return authentication -> { log.debug("Authenticating with token ..."); String token = (String) authentication.getCredentials(); JWTClaimsSet claims = blueTokenService.parseToken(token, BlueTokenService.AUTH_AUDIENCE); UserDto userDto = LecUtils.getUserDto(claims); Mono<UserDto> userDtoMono = userDto == null ? fetchUserDto(claims) : Mono.just(userDto); return userDtoMono.map(LemonPrincipal::new) .doOnNext(LemonPrincipal::eraseCredentials) .map(principal -> new UsernamePasswordAuthenticationToken(principal, token, principal.getAuthorities())); }; }
@Override public LemonPrincipal loadUserByUsername(String username) throws UsernameNotFoundException { log.debug("Loading user having username: " + username); // delegates to findUserByUsername U user = findUserByUsername(username) .orElseThrow(() -> new UsernameNotFoundException( LexUtils.getMessage("com.naturalprogrammer.spring.userNotFound", username))); log.debug("Loaded user having username: " + username); return new LemonPrincipal(user.toUserDto()); }