protocl fix
This commit is contained in:
@@ -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()));
|
||||
}
|
||||
|
||||
@@ -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)){
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user