|
@@ -12,9 +12,19 @@
|
|
|
*/
|
|
|
package org.maxkey.authz.oauth2.provider;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
+
|
|
|
+import org.maxkey.authn.AbstractAuthenticationProvider;
|
|
|
+import org.maxkey.authn.SigninPrincipal;
|
|
|
+import org.maxkey.authn.online.OnlineTicket;
|
|
|
import org.maxkey.domain.UserInfo;
|
|
|
import org.maxkey.persistence.db.LoginService;
|
|
|
-import org.springframework.security.core.userdetails.User;
|
|
|
+import org.maxkey.web.WebConstants;
|
|
|
+import org.maxkey.web.WebContext;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
|
|
+import org.springframework.security.core.GrantedAuthority;
|
|
|
import org.springframework.security.core.userdetails.UserDetails;
|
|
|
import org.springframework.security.core.userdetails.UserDetailsService;
|
|
|
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
|
@@ -24,7 +34,8 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
|
|
*
|
|
|
*/
|
|
|
public class OAuth2UserDetailsService implements UserDetailsService {
|
|
|
-
|
|
|
+ private static final Logger _logger =
|
|
|
+ LoggerFactory.getLogger(OAuth2UserDetailsService.class);
|
|
|
|
|
|
LoginService loginService;
|
|
|
|
|
@@ -42,8 +53,27 @@ public class OAuth2UserDetailsService implements UserDetailsService {
|
|
|
throw new UsernameNotFoundException(e.getMessage(), e);
|
|
|
}
|
|
|
|
|
|
+ String onlineTickitId = WebConstants.ONLINE_TICKET_PREFIX + "-" + java.util.UUID.randomUUID().toString().toLowerCase();
|
|
|
|
|
|
- return new User(username, userInfo.getPassword(), loginService.grantAuthority(userInfo));
|
|
|
+ SigninPrincipal signinPrincipal = new SigninPrincipal(userInfo);
|
|
|
+ OnlineTicket onlineTicket = new OnlineTicket(onlineTickitId);
|
|
|
+ //set OnlineTicket
|
|
|
+ signinPrincipal.setOnlineTicket(onlineTicket);
|
|
|
+
|
|
|
+ ArrayList<GrantedAuthority> grantedAuthoritys = loginService.grantAuthority(userInfo);
|
|
|
+ signinPrincipal.setAuthenticated(true);
|
|
|
+
|
|
|
+ for(GrantedAuthority administratorsAuthority : AbstractAuthenticationProvider.grantedAdministratorsAuthoritys) {
|
|
|
+ if(grantedAuthoritys.contains(administratorsAuthority)) {
|
|
|
+ signinPrincipal.setRoleAdministrators(true);
|
|
|
+ _logger.trace("ROLE ADMINISTRATORS Authentication .");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ _logger.debug("Granted Authority " + grantedAuthoritys);
|
|
|
+
|
|
|
+ signinPrincipal.setGrantedAuthorityApps(grantedAuthoritys);
|
|
|
+
|
|
|
+ return signinPrincipal;
|
|
|
}
|
|
|
|
|
|
}
|