protocl fix

This commit is contained in:
shimingxy
2019-06-02 08:43:34 +08:00
parent 86701ba7d0
commit e62f96fa73
169 changed files with 2856 additions and 7134 deletions

View File

@@ -3,7 +3,7 @@
*/
package org.maxkey.authz.endpoint;
import org.maxkey.constants.PROTOCOLS;
import org.maxkey.config.ApplicationConfig;
import org.maxkey.crypto.ReciprocalUtils;
import org.maxkey.dao.service.AccountsService;
import org.maxkey.dao.service.ApplicationsService;
@@ -28,23 +28,20 @@ public class AuthorizeBaseEndpoint {
@Qualifier("applicationsService")
protected ApplicationsService applicationsService;
@Autowired
@Qualifier("applicationConfig")
protected ApplicationConfig applicationConfig;
@Autowired
AccountsService appAccountsService;
AccountsService accountsService;
protected Applications getApp(String id){
Applications application=null;
if(id.equals("manage")){
application =new Applications();
application.setId("manage");
application.setName("Manage App");
application.setProtocol(PROTOCOLS.TOKENBASED);
application.setIsAdapter(1);
application.setAdapter("com.connsec.web.authorize.endpoint.adapter.TokenBasedJWTAdapter");
}else{
application=applicationsService.get(id);
protected Applications getApplication(String id){
Applications application=(Applications)WebContext.getAttribute(AuthorizeBaseEndpoint.class.getName());
//session中为空或者id不一致重新加载
if(application==null||!application.getId().equalsIgnoreCase(id)) {
application=applicationsService.get(id);
}
if(application == null){
_logger.error("Applications for id "+id + " is null");
}
@@ -52,23 +49,12 @@ public class AuthorizeBaseEndpoint {
return application;
}
protected Applications getSessionApplication(String id){
Object object= WebContext.getAttribute(AuthorizeBaseEndpoint.class.getName());
Applications application=null;
if(object != null){
application = (Applications)object;
}else{
application = getApp(id);
}
return application;
}
protected Accounts getAppAccounts(Applications application){
Accounts appAccount=new Accounts();
UserInfo userInfo=WebContext.getUserInfo();
if(application.getCredential()==Applications.CREDENTIALS.USER_DEFINED){
appAccount=appAccountsService.load(new Accounts(userInfo.getId(),application.getId()));
appAccount=accountsService.load(new Accounts(userInfo.getId(),application.getId()));
if(appAccount!=null){
appAccount.setRelatedPassword(ReciprocalUtils.decoder(appAccount.getRelatedPassword()));
}

View File

@@ -55,12 +55,12 @@ public class AuthorizeCredentialEndpoint extends AuthorizeBaseEndpoint{
appUser.setDisplayName(userInfo.getDisplayName());
appUser.setAppId(appId);
appUser.setAppName(getSessionApplication(appId).getName());
appUser.setAppName(getApplication(appId).getName());
appUser.setRelatedUsername(identity_username);
appUser.setRelatedPassword(ReciprocalUtils.encode(identity_password));
if(appAccountsService.insert(appUser)){
if(accountsService.insert(appUser)){
}
}

View File

@@ -6,9 +6,7 @@ package org.maxkey.authz.endpoint;
import javax.servlet.http.HttpServletRequest;
import org.maxkey.authz.oauth2.provider.ClientDetailsService;
import org.maxkey.client.oauth.builder.ServiceBuilder;
import org.maxkey.client.oauth.builder.api.ConnsecApi20;
import org.maxkey.client.oauth.oauth.OAuthService;
import org.maxkey.client.utils.HttpEncoder;
import org.maxkey.constants.PROTOCOLS;
import org.maxkey.dao.service.CasDetailsService;
import org.maxkey.domain.apps.Applications;
@@ -28,7 +26,8 @@ import org.springframework.web.servlet.ModelAndView;
*/
@Controller
public class AuthorizeEndpoint extends AuthorizeBaseEndpoint{
private static final String OAUTH_V20_AUTHORIZATION_URL = "%s/oauth/v20/authorize?client_id=%s&response_type=code&redirect_uri=%s&approval_prompt=auto";
@Autowired
@Qualifier("oauth20JdbcClientDetailsService")
private ClientDetailsService clientDetailsService;
@@ -44,65 +43,38 @@ public class AuthorizeEndpoint extends AuthorizeBaseEndpoint{
ModelAndView modelAndView=null;
Applications application=getApp(id);
Applications application=getApplication(id);
WebContext.setAttribute(WebConstants.SINGLE_SIGN_ON_APP_ID, id);
if(application.getProtocol().equalsIgnoreCase(PROTOCOLS.EXTEND_API)){
modelAndView=WebContext.forward("/authz/api/"+id);
}else if (application.getProtocol().equalsIgnoreCase(PROTOCOLS.FORMBASED)){
modelAndView=WebContext.forward("/authz/formbased/"+id);
}else if (application.getProtocol().equalsIgnoreCase(PROTOCOLS.OAUTH20)){
ClientDetails clientDetails =clientDetailsService.loadClientByClientId(application.getId());
OAuthService service = new ServiceBuilder()
.provider(ConnsecApi20.class)
.apiKey(application.getId())
.apiSecret(application.getSecret())
.callback(clientDetails.getRegisteredRedirectUri().toArray()[0].toString())
.build();
_logger.debug(""+clientDetails);
String authorizationUrl = String.format(OAUTH_V20_AUTHORIZATION_URL,
applicationConfig.getServerPrefix(),
clientDetails.getClientId(),
HttpEncoder.encode(clientDetails.getRegisteredRedirectUri().toArray()[0].toString())
);
_logger.debug("authorizationUrl "+authorizationUrl);
String authorizationUrl = service.getAuthorizationUrl(null);
modelAndView=WebContext.redirect(authorizationUrl);
}else if (application.getProtocol().equalsIgnoreCase(PROTOCOLS.OAUTH10A)){
/*
* Application must get request_token for authn
*/
modelAndView=WebContext.forward("/authz/oauth10a/"+id);
}else if (application.getProtocol().equalsIgnoreCase(PROTOCOLS.OPEN_ID_CONNECT)){
// modelAndView=new ModelAndView("openid connect");
}else if (application.getProtocol().equalsIgnoreCase(PROTOCOLS.SAML20)){
modelAndView=WebContext.forward("/authz/saml20/idpinit/"+application.getId());
}else if (application.getProtocol().equalsIgnoreCase(PROTOCOLS.SAML11)){
modelAndView=WebContext.forward("/authz/saml11/idpinit/"+application.getId());
}else if (application.getProtocol().equalsIgnoreCase(PROTOCOLS.TOKENBASED)){
modelAndView=WebContext.forward("/authorize/tokenbased/"+id);
}else if (application.getProtocol().equalsIgnoreCase(PROTOCOLS.LTPA)){
modelAndView=WebContext.forward("/authz/ltpa/"+id);
}else if (application.getProtocol().equalsIgnoreCase(PROTOCOLS.CAS)){
modelAndView=WebContext.forward("/authz/cas/"+id);
}else if (application.getProtocol().equalsIgnoreCase(PROTOCOLS.DESKTOP)){
modelAndView=WebContext.forward("/authz/desktop/"+id);
}else if (application.getProtocol().equalsIgnoreCase(PROTOCOLS.BASIC)){
modelAndView=WebContext.redirect(application.getLoginUrl());
}
@@ -115,7 +87,7 @@ public class AuthorizeEndpoint extends AuthorizeBaseEndpoint{
public ModelAndView authorizeOAuth10a(
@PathVariable("id") String id){
String redirec_uri=getApp(id).getLoginUrl();
String redirec_uri=getApplication(id).getLoginUrl();
return WebContext.redirect(redirec_uri);
}