AuthorizationUtils

This commit is contained in:
MaxKey
2022-04-26 21:54:46 +08:00
parent 9221064088
commit 10b964ad79
27 changed files with 120 additions and 94 deletions
@@ -20,7 +20,7 @@ package org.maxkey.authz.endpoint.adapter;
import java.io.UnsupportedEncodingException;
import org.apache.commons.codec.binary.Hex;
import org.apache.commons.lang3.StringUtils;
import org.maxkey.authn.SigninPrincipal;
import org.maxkey.authn.SignPrincipal;
import org.maxkey.constants.ConstsBoolean;
import org.maxkey.crypto.Base64Utils;
import org.maxkey.crypto.ReciprocalUtils;
@@ -44,7 +44,7 @@ public abstract class AbstractAuthorizeAdapter {
protected Accounts account;
protected SigninPrincipal principal;
protected SignPrincipal principal;
public abstract Object generateInfo();
@@ -127,7 +127,7 @@ public abstract class AbstractAuthorizeAdapter {
return "";
};
public void setPrincipal(SigninPrincipal principal) {
public void setPrincipal(SignPrincipal principal) {
this.principal = principal;
this.userInfo = principal.getUserInfo();
}
@@ -20,7 +20,7 @@ package org.maxkey.authz.singlelogout;
import java.util.HashMap;
import java.util.UUID;
import org.maxkey.authn.SigninPrincipal;
import org.maxkey.authn.SignPrincipal;
import org.maxkey.entity.apps.Apps;
import org.maxkey.util.DateUtils;
import org.springframework.security.core.Authentication;
@@ -34,7 +34,7 @@ public class DefaultSingleLogout extends SingleLogout{
logoutParameters.put("principal", authentication.getName());
logoutParameters.put("request", "logoutRequest");
logoutParameters.put("issueInstant", DateUtils.getCurrentDateAsString(DateUtils.FORMAT_DATE_ISO_TIMESTAMP));
logoutParameters.put("ticket", ((SigninPrincipal)authentication.getPrincipal()).getSession().getFormattedId());
logoutParameters.put("ticket", ((SignPrincipal)authentication.getPrincipal()).getSession().getFormattedId());
postMessage(logoutApp.getLogoutUrl(),logoutParameters);
}
@@ -23,7 +23,7 @@ package org.maxkey.authz.cas.endpoint;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.maxkey.authn.SigninPrincipal;
import org.maxkey.authn.SignPrincipal;
import org.maxkey.authz.cas.endpoint.response.Service10ResponseBuilder;
import org.maxkey.authz.cas.endpoint.ticket.CasConstants;
import org.maxkey.authz.cas.endpoint.ticket.Ticket;
@@ -105,7 +105,7 @@ renew [OPTIONAL] - if this parameter is set, ticket validation will only succeed
}
if(storedTicket != null){
String principal=((SigninPrincipal)storedTicket.getAuthentication().getPrincipal()).getUsername();
String principal=((SignPrincipal)storedTicket.getAuthentication().getPrincipal()).getUsername();
_logger.debug("principal "+principal);
return new Service10ResponseBuilder().success()
.setUser(principal)
@@ -26,7 +26,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import org.maxkey.authn.SigninPrincipal;
import org.maxkey.authn.SignPrincipal;
import org.maxkey.authz.cas.endpoint.response.ProxyServiceResponseBuilder;
import org.maxkey.authz.cas.endpoint.response.ServiceResponseBuilder;
import org.maxkey.authz.cas.endpoint.ticket.CasConstants;
@@ -204,7 +204,7 @@ For all error codes, it is RECOMMENDED that CAS provide a more detailed message
ServiceResponseBuilder serviceResponseBuilder=new ServiceResponseBuilder();
if(storedTicket!=null){
SigninPrincipal authentication = ((SigninPrincipal)storedTicket.getAuthentication().getPrincipal());
SignPrincipal authentication = ((SignPrincipal)storedTicket.getAuthentication().getPrincipal());
if(StringUtils.isNotBlank(pgtUrl)) {
ProxyGrantingTicketIOUImpl proxyGrantingTicketIOUImpl =new ProxyGrantingTicketIOUImpl();
String proxyGrantingTicketIOU=casProxyGrantingTicketServices.createTicket(proxyGrantingTicketIOUImpl);
@@ -332,7 +332,7 @@ Response on ticket validation failure:
ServiceResponseBuilder serviceResponseBuilder=new ServiceResponseBuilder();
if(storedTicket!=null){
SigninPrincipal authentication = ((SigninPrincipal)storedTicket.getAuthentication().getPrincipal());
SignPrincipal authentication = ((SignPrincipal)storedTicket.getAuthentication().getPrincipal());
if(ConstsBoolean.isTrue(storedTicket.getCasDetails().getIsAdapter())){
Object samlAdapter = Instance.newInstance(storedTicket.getCasDetails().getAdapter());
try {
@@ -26,7 +26,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import org.maxkey.authn.SigninPrincipal;
import org.maxkey.authn.SignPrincipal;
import org.maxkey.authz.cas.endpoint.response.ProxyServiceResponseBuilder;
import org.maxkey.authz.cas.endpoint.response.ServiceResponseBuilder;
import org.maxkey.authz.cas.endpoint.ticket.CasConstants;
@@ -86,7 +86,7 @@ public class Cas30AuthorizeEndpoint extends CasBaseAuthorizeEndpoint{
ServiceResponseBuilder serviceResponseBuilder=new ServiceResponseBuilder();
if(storedTicket!=null){
SigninPrincipal authentication = ((SigninPrincipal)storedTicket.getAuthentication().getPrincipal());
SignPrincipal authentication = ((SignPrincipal)storedTicket.getAuthentication().getPrincipal());
if(StringUtils.isNotBlank(pgtUrl)) {
ProxyGrantingTicketIOUImpl proxyGrantingTicketIOUImpl =new ProxyGrantingTicketIOUImpl();
String proxyGrantingTicketIOU=casProxyGrantingTicketServices.createTicket(proxyGrantingTicketIOUImpl);
@@ -177,7 +177,7 @@ public class Cas30AuthorizeEndpoint extends CasBaseAuthorizeEndpoint{
ServiceResponseBuilder serviceResponseBuilder=new ServiceResponseBuilder();
if(storedTicket!=null){
SigninPrincipal authentication = ((SigninPrincipal)storedTicket.getAuthentication().getPrincipal());
SignPrincipal authentication = ((SignPrincipal)storedTicket.getAuthentication().getPrincipal());
if(ConstsBoolean.isTrue(storedTicket.getCasDetails().getIsAdapter())){
Object samlAdapter = Instance.newInstance(storedTicket.getCasDetails().getAdapter());
try {
@@ -15,7 +15,7 @@ package org.maxkey.authz.oauth2.provider;
import java.util.ArrayList;
import org.maxkey.authn.AbstractAuthenticationProvider;
import org.maxkey.authn.SigninPrincipal;
import org.maxkey.authn.SignPrincipal;
import org.maxkey.authn.session.Session;
import org.maxkey.entity.UserInfo;
import org.maxkey.persistence.repository.LoginRepository;
@@ -47,7 +47,7 @@ public class OAuth2UserDetailsService implements UserDetailsService {
String onlineTickitId = WebConstants.ONLINE_TICKET_PREFIX + "-" + java.util.UUID.randomUUID().toString().toLowerCase();
SigninPrincipal principal = new SigninPrincipal(userInfo);
SignPrincipal principal = new SignPrincipal(userInfo);
Session onlineTicket = new Session(onlineTickitId);
//set OnlineTicket
principal.setSession(onlineTicket);
@@ -93,7 +93,7 @@ public class OAuth20AccessConfirmationEndpoint {
try {
// Map<String, Object> model
AuthorizationRequest clientAuth =
(AuthorizationRequest) momentaryService.get(currentUser.getOnlineTicket(), "authorizationRequest");
(AuthorizationRequest) momentaryService.get(currentUser.getSessionId(), "authorizationRequest");
ClientDetails client = clientDetailsService.loadClientByClientId(clientAuth.getClientId(),true);
model.put("oauth_approval", WebContext.genId());
model.put("auth_request", clientAuth);
@@ -139,7 +139,7 @@ public class OAuth20AccessConfirmationEndpoint {
if(StringUtils.isNotBlank(oauth_approval)) {
try {
AuthorizationRequest clientAuth =
(AuthorizationRequest) momentaryService.get(currentUser.getOnlineTicket(), "authorizationRequest");
(AuthorizationRequest) momentaryService.get(currentUser.getSessionId(), "authorizationRequest");
ClientDetails client = clientDetailsService.loadClientByClientId(clientAuth.getClientId(),true);
Apps app = appsService.get(client.getClientId(),true);
@@ -227,7 +227,7 @@ public class AuthorizationEndpoint extends AbstractEndpoint {
// Place auth request into the model so that it is stored in the session
// for approveOrDeny to use. That way we make sure that auth request comes from the session,
// so any auth request parameters passed to approveOrDeny will be ignored and retrieved from the session.
momentaryService.put(currentUser.getOnlineTicket(), "authorizationRequest", authorizationRequest);
momentaryService.put(currentUser.getSessionId(), "authorizationRequest", authorizationRequest);
return getUserApprovalPageResponse(model, authorizationRequest, (Authentication) principal);
@@ -255,7 +255,7 @@ public class AuthorizationEndpoint extends AbstractEndpoint {
"User must be authenticated with Spring Security before authorizing an access token.");
}
AuthorizationRequest authorizationRequest = (AuthorizationRequest) momentaryService.get(currentUser.getOnlineTicket(), "authorizationRequest");
AuthorizationRequest authorizationRequest = (AuthorizationRequest) momentaryService.get(currentUser.getSessionId(), "authorizationRequest");
if (authorizationRequest == null) {
sessionStatus.setComplete();
@@ -22,7 +22,7 @@ import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import org.maxkey.authn.SigninPrincipal;
import org.maxkey.authn.SignPrincipal;
import org.maxkey.authn.web.AuthorizationUtils;
import org.maxkey.authz.oauth2.common.DefaultOAuth2AccessToken;
import org.maxkey.authz.oauth2.common.OAuth2AccessToken;
@@ -196,7 +196,7 @@ public class TokenEndpoint extends AbstractEndpoint {
clientId = ((OAuth2Authentication) client).getOAuth2Request().getClientId();
}
if (client instanceof UsernamePasswordAuthenticationToken) {
clientId = ((SigninPrincipal)client.getPrincipal()).getUsername();
clientId = ((SignPrincipal)client.getPrincipal()).getUsername();
}
return clientId;
}
@@ -31,7 +31,7 @@ import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.maxkey.authn.SigninPrincipal;
import org.maxkey.authn.SignPrincipal;
import org.maxkey.authn.web.AuthorizationUtils;
import org.maxkey.authz.oauth2.common.OAuth2Constants;
import org.maxkey.authz.oauth2.common.util.OAuth2Utils;
@@ -145,13 +145,13 @@ public class TokenEndpointAuthenticationFilter implements Filter {
}else {
Authentication authentication=ClientCredentials(request,response);
_logger.trace("getPrincipal " + authentication.getPrincipal().getClass());
SigninPrincipal auth = null;
if(authentication.getPrincipal() instanceof SigninPrincipal) {
SignPrincipal auth = null;
if(authentication.getPrincipal() instanceof SignPrincipal) {
//authorization_code
auth = (SigninPrincipal)authentication.getPrincipal();
auth = (SignPrincipal)authentication.getPrincipal();
}else {
//client_credentials
auth =new SigninPrincipal((User)authentication.getPrincipal());
auth =new SignPrincipal((User)authentication.getPrincipal());
}
auth.setAuthenticated(true);
UsernamePasswordAuthenticationToken simpleUserAuthentication = new UsernamePasswordAuthenticationToken(auth, authentication.getCredentials(), authentication.getAuthorities());
@@ -25,7 +25,7 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.lang3.StringUtils;
import org.maxkey.authn.SigninPrincipal;
import org.maxkey.authn.SignPrincipal;
import org.maxkey.authz.endpoint.adapter.AbstractAuthorizeAdapter;
import org.maxkey.authz.oauth2.common.OAuth2Constants;
import org.maxkey.authz.oauth2.common.exceptions.OAuth2Exception;
@@ -114,7 +114,7 @@ public class UserInfoEndpoint {
}else{
adapter =(AbstractAuthorizeAdapter)new OAuthDefaultUserInfoAdapter(clientDetails);
}
adapter.setPrincipal((SigninPrincipal)oAuth2Authentication.getUserAuthentication().getPrincipal());
adapter.setPrincipal((SignPrincipal)oAuth2Authentication.getUserAuthentication().getPrincipal());
adapter.setApp(app);
Object jsonData = adapter.generateInfo();
@@ -28,7 +28,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.maxkey.authn.SigninPrincipal;
import org.maxkey.authn.SignPrincipal;
import org.maxkey.authz.endpoint.adapter.AbstractAuthorizeAdapter;
import org.maxkey.authz.oauth2.common.OAuth2Constants;
import org.maxkey.authz.oauth2.common.exceptions.OAuth2Exception;
@@ -113,7 +113,7 @@ public class UserInfoOIDCEndpoint {
try{
oAuth2Authentication = oauth20tokenServices.loadAuthentication(access_token);
principal=((SigninPrincipal)oAuth2Authentication.getPrincipal()).getUsername();
principal=((SignPrincipal)oAuth2Authentication.getPrincipal()).getUsername();
Set<String >scopes = oAuth2Authentication.getOAuth2Request().getScope();
ClientDetails clientDetails =
@@ -123,7 +123,7 @@ public class UserInfoOIDCEndpoint {
String userJson = "";
Builder jwtClaimsSetBuilder= new JWTClaimsSet.Builder();
SigninPrincipal authentication = (SigninPrincipal)oAuth2Authentication.getUserAuthentication().getPrincipal();
SignPrincipal authentication = (SignPrincipal)oAuth2Authentication.getUserAuthentication().getPrincipal();
String subject = AbstractAuthorizeAdapter.getValueByUserAttr(userInfo, clientDetails.getSubject());
_logger.debug("userId : {} , username : {} , displayName : {} , subject : {}" ,