Browse Source

FormBasedDefaultAdapter

MaxKey 3 years ago
parent
commit
1a65b1059a

+ 13 - 1
maxkey-core/src/main/java/org/maxkey/entity/apps/AppsFormBasedDetails.java

@@ -47,6 +47,8 @@ public class AppsFormBasedDetails  extends Apps {
 	@Column
 	private String passwordMapping;
 	@Column
+	private String passwordAlgorithm;
+	@Column
 	private String authorizeView;
 
 
@@ -123,7 +125,17 @@ public class AppsFormBasedDetails  extends Apps {
 	}
 
 
-	@Override
+	public String getPasswordAlgorithm() {
+        return passwordAlgorithm;
+    }
+
+
+    public void setPasswordAlgorithm(String passwordAlgorithm) {
+        this.passwordAlgorithm = passwordAlgorithm;
+    }
+
+
+    @Override
     public String toString() {
         StringBuilder builder = new StringBuilder();
         builder.append("AppsFormBasedDetails [id=");

+ 23 - 25
maxkey-protocols/maxkey-protocol-formbased/src/main/java/org/maxkey/authz/formbased/endpoint/adapter/FormBasedDefaultAdapter.java

@@ -17,6 +17,8 @@
 
 package org.maxkey.authz.formbased.endpoint.adapter;
 
+import java.time.Instant;
+
 import org.maxkey.authn.SigninPrincipal;
 import org.maxkey.authz.endpoint.adapter.AbstractAuthorizeAdapter;
 import org.maxkey.constants.Boolean;
@@ -43,35 +45,31 @@ public class FormBasedDefaultAdapter extends AbstractAuthorizeAdapter {
 		modelAndView.setViewName("authorize/formbased_sso_submint");
 		AppsFormBasedDetails details=(AppsFormBasedDetails)app;
 		
-		modelAndView.addObject("username", details.getAppUser().getRelatedUsername());
-		modelAndView.addObject("password",  details.getAppUser().getRelatedPassword());
-		
-		if(Boolean.isTrue(details.getIsExtendAttr())){
-			modelAndView.addObject("extendAttr", details.getExtendAttr());
-			modelAndView.addObject("isExtendAttr", true);
-		}else{
-			modelAndView.addObject("isExtendAttr", false);
-		}
-		
+		String password = details.getAppUser().getRelatedPassword();
+        if(null==details.getPasswordAlgorithm()||details.getPasswordAlgorithm().equals("")){
+        }else if(details.getPasswordAlgorithm().indexOf("HEX")>-1){
+            password = DigestUtils.digestHex(details.getAppUser().getRelatedPassword(),details.getPasswordAlgorithm().substring(0, details.getPasswordAlgorithm().indexOf("HEX")));
+        }else{
+            password = DigestUtils.digestBase64(details.getAppUser().getRelatedPassword(),details.getPasswordAlgorithm());
+        }
+        
+        modelAndView.addObject("id", details.getId());
 		modelAndView.addObject("action", details.getRedirectUri());
+		modelAndView.addObject("redirectUri", details.getRedirectUri());
+		modelAndView.addObject("loginUrl", details.getLoginUrl());
 		modelAndView.addObject("usernameMapping", details.getUsernameMapping());
-		
-		String passwordAlgorithm=null;
-		String passwordMapping=details.getPasswordMapping();
-		if(passwordMapping.indexOf(":")>-1){
-			passwordAlgorithm=passwordMapping.substring(passwordMapping.indexOf(":")+1).toUpperCase();
-			details.setPasswordMapping(passwordMapping.substring(0, passwordMapping.indexOf(":")));
-		}
 		modelAndView.addObject("passwordMapping", details.getPasswordMapping());
+		modelAndView.addObject("username", details.getAppUser().getRelatedUsername());    
+        modelAndView.addObject("password",  password);
+        modelAndView.addObject("timestamp",  ""+Instant.now().getEpochSecond());
 		
-		if(null==passwordAlgorithm){
-			modelAndView.addObject("password",  details.getAppUser().getRelatedPassword());
-		}else if(passwordAlgorithm.indexOf("HEX")>-1){
-			modelAndView.addObject("password",  DigestUtils.digestHex(details.getAppUser().getRelatedPassword(),passwordAlgorithm.substring(0, passwordAlgorithm.indexOf("HEX"))));
-		}else{
-			modelAndView.addObject("password",  DigestUtils.digestBase64(details.getAppUser().getRelatedPassword(),passwordAlgorithm));
-		}
-		
+	    if(Boolean.isTrue(details.getIsExtendAttr())){
+	        modelAndView.addObject("extendAttr", details.getExtendAttr());
+	        modelAndView.addObject("isExtendAttr", true);
+        }else{
+            modelAndView.addObject("isExtendAttr", false);
+        }
+	    
 		if(details.getAuthorizeView()!=null&&!details.getAuthorizeView().equals("")){
 			modelAndView.setViewName("authorize/"+details.getAuthorizeView());
 		}

+ 13 - 16
maxkey-protocols/maxkey-protocol-formbased/src/main/java/org/maxkey/authz/formbased/endpoint/adapter/FormBasedRedirectAdapter.java

@@ -17,6 +17,8 @@
 
 package org.maxkey.authz.formbased.endpoint.adapter;
 
+import java.time.Instant;
+
 import org.maxkey.authn.SigninPrincipal;
 import org.maxkey.authz.endpoint.adapter.AbstractAuthorizeAdapter;
 import org.maxkey.constants.Boolean;
@@ -44,28 +46,23 @@ public class FormBasedRedirectAdapter extends AbstractAuthorizeAdapter {
 		modelAndView.setViewName("authorize/formbased_redirect_submint");
 		AppsFormBasedDetails details=(AppsFormBasedDetails)app;
 		
+		String password = details.getAppUser().getRelatedPassword();
+        if(null==details.getPasswordAlgorithm()||details.getPasswordAlgorithm().equals("")){
+        }else if(details.getPasswordAlgorithm().indexOf("HEX")>-1){
+            password = DigestUtils.digestHex(details.getAppUser().getRelatedPassword(),details.getPasswordAlgorithm().substring(0, details.getPasswordAlgorithm().indexOf("HEX")));
+        }else{
+            password = DigestUtils.digestBase64(details.getAppUser().getRelatedPassword(),details.getPasswordAlgorithm());
+        }
+        
 		modelAndView.addObject("id", details.getId());
 		modelAndView.addObject("action", details.getRedirectUri());
+		modelAndView.addObject("redirectUri", details.getRedirectUri());
 		modelAndView.addObject("loginUrl", details.getLoginUrl());
 		modelAndView.addObject("usernameMapping", details.getUsernameMapping());
-		
-		String passwordAlgorithm=null;
-		String passwordMapping=details.getPasswordMapping();
-		if(passwordMapping.indexOf(":")>-1){
-			passwordAlgorithm=passwordMapping.substring(passwordMapping.indexOf(":")+1).toUpperCase();
-			details.setPasswordMapping(passwordMapping.substring(0, passwordMapping.indexOf(":")));
-		}
 		modelAndView.addObject("passwordMapping", details.getPasswordMapping());
-		
 		modelAndView.addObject("username", details.getAppUser().getRelatedUsername());
-		if(null==passwordAlgorithm){
-			modelAndView.addObject("password",  details.getAppUser().getRelatedPassword());
-		}else if(passwordAlgorithm.indexOf("HEX")>-1){
-			modelAndView.addObject("password",  DigestUtils.digestHex(details.getAppUser().getRelatedPassword(),passwordAlgorithm.substring(0, passwordAlgorithm.indexOf("HEX"))));
-		}else{
-			modelAndView.addObject("password",  DigestUtils.digestBase64(details.getAppUser().getRelatedPassword(),passwordAlgorithm));
-		}
-		
+        modelAndView.addObject("password",  password);
+        modelAndView.addObject("timestamp",  ""+Instant.now().getEpochSecond());
 		
 		if(WebContext.getAttribute("formbased_redirect_submint")==null){
 			modelAndView.setViewName("authorize/formbased_redirect_submint");

+ 1 - 0
maxkey-web-manage/src/main/resources/messages/message.properties

@@ -320,6 +320,7 @@ apps.formbased.info=\u8868\u5355\u8ba4\u8bc1
 apps.formbased.redirectUri=\u8ba4\u8bc1\u5730\u5740
 apps.formbased.usernameMapping=\u767b\u5f55\u540d\u6620\u5c04
 apps.formbased.passwordMapping=\u767b\u5f55\u51ed\u8bc1\u6620\u5c04
+apps.formbased.passwordAlgorithm=\u5BC6\u7801\u7B97\u6CD5
 apps.formbased.authorizeView=\u8ba4\u8bc1\u89c6\u56fe
 apps.formbased.parameter=\u53c2\u6570
 apps.formbased.parameter.value=\u53c2\u6570\u503c

+ 3 - 0
maxkey-web-manage/src/main/resources/messages/message_en.properties

@@ -325,7 +325,10 @@ apps.formbased.info=formbased Info
 apps.formbased.redirectUri=redirectUri
 apps.formbased.usernameMapping=usernameMapping
 apps.formbased.passwordMapping=passwordMapping
+apps.formbased.passwordAlgorithm=passwordAlgorithm
 apps.formbased.authorizeView=authorizeView
+apps.formbased.parameter=parameter
+apps.formbased.parameter.value=value
 
 #cas
 apps.cas.info=CAS Info

+ 1 - 0
maxkey-web-manage/src/main/resources/messages/message_zh_CN.properties

@@ -323,6 +323,7 @@ apps.formbased.info=\u8868\u5355\u8ba4\u8bc1
 apps.formbased.redirectUri=\u8ba4\u8bc1\u5730\u5740
 apps.formbased.usernameMapping=\u767b\u5f55\u540d\u6620\u5c04
 apps.formbased.passwordMapping=\u767b\u5f55\u51ed\u8bc1\u6620\u5c04
+apps.formbased.passwordAlgorithm=\u5BC6\u7801\u7B97\u6CD5
 apps.formbased.authorizeView=\u8ba4\u8bc1\u89c6\u56fe
 apps.formbased.parameter=\u53c2\u6570
 apps.formbased.parameter.value=\u53c2\u6570\u503c

+ 4 - 3
maxkey-web-manage/src/main/resources/templates/views/apps/formbased/appAdd.ftl

@@ -78,9 +78,10 @@ $(function(){
 						<@locale code="apps.credential.system"/>
 						<b class="orange">*</b><label for="credential"></label>
 					</td>
-					<th></th>
-					<td>
-					</td>
+					<th><@locale code="apps.formbased.passwordAlgorithm"/>:</th>
+                    <td>
+                       <input type="text" class="form-control" id="passwordAlgorithm" name="passwordAlgorithm"  title="" value=""/>
+                    </td>
 				</tr>
 				<tr>
 					<th><@locale code="apps.formbased.authorizeView"/>:</th>

+ 3 - 2
maxkey-web-manage/src/main/resources/templates/views/apps/formbased/appUpdate.ftl

@@ -81,8 +81,9 @@ $(function(){
 						</select>	
 						
 					</td>
-					<th></th>
-					<td  >
+					<th><@locale code="apps.formbased.passwordAlgorithm"/>:</th>
+					<td>
+					   <input type="text" class="form-control" id="passwordAlgorithm" name="passwordAlgorithm"  title="" value="${model.passwordAlgorithm!}"/>
 					</td>
 				</tr>
 				<tr>

+ 22 - 0
maxkey-web-maxkey/src/main/resources/templates/views/authorize/oracle_ebs_sso_redirect.ftl

@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html >
+<head>
+    <title>Redirect Single Sign-On</title>
+    <#include  "authorize_common.ftl">
+    <script type="text/javascript">
+        function redirectToLogin(){
+            window.top.location.href ="${redirectUri}&${usernameMapping}=${username}&${passwordMapping}=${password}&timestamp=${timestamp}";
+       }
+    </script>
+</head>
+
+<body onload="redirectToLogin()"  style="display:none">
+<form id="redirect_sso_form" name="redirect_sso_form" action="${redirectUri}" method="get">
+        <table style="width:100%">
+            <tr>
+                <td colspan="2"><input type="submit"  name="submitBtn" value="Continue..." /></td>
+            </tr>
+        </table>
+    </form>
+</body>
+</html>

+ 1 - 1
maxkey-web-maxkey/src/main/resources/templates/views/authorize/redirect_sso_submit.ftl

@@ -11,7 +11,7 @@
 </head>
 
 <body onload="redirectToLogin()"  style="display:none">
-<form id="cas_sso_form" name="cas_sso_form" action="${redirect_uri}" method="get">
+<form id="redirect_sso_form" name="redirect_sso_form" action="${redirect_uri}" method="get">
         <table style="width:100%">
             <tr>
                 <td colspan="2"><input type="submit"  name="submitBtn" value="Continue..." /></td>