FormBasedDefaultAdapter

This commit is contained in:
MaxKey 2021-07-16 17:23:43 +08:00
parent 29566e64ed
commit 1a65b1059a
10 changed files with 84 additions and 48 deletions

View File

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

View File

@ -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,8 +45,23 @@ public class FormBasedDefaultAdapter extends AbstractAuthorizeAdapter {
modelAndView.setViewName("authorize/formbased_sso_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());
modelAndView.addObject("passwordMapping", details.getPasswordMapping());
modelAndView.addObject("username", details.getAppUser().getRelatedUsername());
modelAndView.addObject("password", details.getAppUser().getRelatedPassword());
modelAndView.addObject("password", password);
modelAndView.addObject("timestamp", ""+Instant.now().getEpochSecond());
if(Boolean.isTrue(details.getIsExtendAttr())){
modelAndView.addObject("extendAttr", details.getExtendAttr());
@ -53,25 +70,6 @@ public class FormBasedDefaultAdapter extends AbstractAuthorizeAdapter {
modelAndView.addObject("isExtendAttr", false);
}
modelAndView.addObject("action", details.getRedirectUri());
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());
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(details.getAuthorizeView()!=null&&!details.getAuthorizeView().equals("")){
modelAndView.setViewName("authorize/"+details.getAuthorizeView());
}

View File

@ -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");

View File

@ -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

View File

@ -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

View File

@ -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

View File

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

View File

@ -81,8 +81,9 @@ $(function(){
</select>
</td>
<th></th>
<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>

View File

@ -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>

View File

@ -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>