mirror of
https://gitee.com/dromara/MaxKey.git
synced 2026-06-18 03:08:13 +08:00
tab to 4 space
This commit is contained in:
@@ -55,75 +55,75 @@ import jakarta.servlet.http.HttpServletResponse;
|
||||
@Controller
|
||||
public class TokenBasedAuthorizeEndpoint extends AuthorizeBaseEndpoint{
|
||||
|
||||
static final Logger _logger = LoggerFactory.getLogger(TokenBasedAuthorizeEndpoint.class);
|
||||
@Autowired
|
||||
AppsTokenBasedDetailsService tokenBasedDetailsService;
|
||||
static final Logger _logger = LoggerFactory.getLogger(TokenBasedAuthorizeEndpoint.class);
|
||||
@Autowired
|
||||
AppsTokenBasedDetailsService tokenBasedDetailsService;
|
||||
|
||||
@Autowired
|
||||
ApplicationConfig applicationConfig;
|
||||
|
||||
@Operation(summary = "TokenBased认证接口", description = "传递参数应用ID",method="GET")
|
||||
@RequestMapping("/authz/tokenbased/{id}")
|
||||
public ModelAndView authorize(
|
||||
HttpServletRequest request,
|
||||
HttpServletResponse response,
|
||||
@PathVariable("id") String id,
|
||||
@CurrentUser UserInfo currentUser){
|
||||
ModelAndView modelAndView=new ModelAndView();
|
||||
|
||||
|
||||
AppsTokenBasedDetails tokenBasedDetails=null;
|
||||
tokenBasedDetails=tokenBasedDetailsService.getAppDetails(id , true);
|
||||
_logger.debug(""+tokenBasedDetails);
|
||||
|
||||
Apps application= getApp(id);
|
||||
tokenBasedDetails.setAdapter(application.getAdapter());
|
||||
tokenBasedDetails.setIsAdapter(application.getIsAdapter());
|
||||
|
||||
AbstractAuthorizeAdapter adapter;
|
||||
if(ConstsBoolean.isTrue(tokenBasedDetails.getIsAdapter())){
|
||||
adapter =(AbstractAuthorizeAdapter)Instance.newInstance(tokenBasedDetails.getAdapter());
|
||||
}else{
|
||||
adapter =(AbstractAuthorizeAdapter)new TokenBasedDefaultAdapter();
|
||||
}
|
||||
adapter.setPrincipal(AuthorizationUtils.getPrincipal());
|
||||
adapter.setApp(tokenBasedDetails);
|
||||
|
||||
adapter.generateInfo();
|
||||
|
||||
adapter.encrypt(
|
||||
null,
|
||||
tokenBasedDetails.getAlgorithmKey(),
|
||||
tokenBasedDetails.getAlgorithm());
|
||||
|
||||
if(tokenBasedDetails.getTokenType().equalsIgnoreCase("POST")) {
|
||||
return adapter.authorize(modelAndView);
|
||||
}else {
|
||||
_logger.debug("Cookie Name : {}" ,tokenBasedDetails.getCookieName());
|
||||
|
||||
Cookie cookie= new Cookie(tokenBasedDetails.getCookieName(),adapter.serialize());
|
||||
|
||||
Integer maxAge = tokenBasedDetails.getExpires();
|
||||
_logger.debug("Cookie Max Age : {} seconds.",maxAge);
|
||||
cookie.setMaxAge(maxAge);
|
||||
|
||||
cookie.setPath("/");
|
||||
//
|
||||
//cookie.setDomain("."+applicationConfig.getBaseDomainName());
|
||||
//tomcat 8.5
|
||||
cookie.setDomain(applicationConfig.getBaseDomainName());
|
||||
|
||||
_logger.debug("Sub Domain Name : .{}",applicationConfig.getBaseDomainName());
|
||||
response.addCookie(cookie);
|
||||
|
||||
if(tokenBasedDetails.getRedirectUri().indexOf(applicationConfig.getBaseDomainName())>-1){
|
||||
return WebContext.redirect(tokenBasedDetails.getRedirectUri());
|
||||
}else{
|
||||
_logger.error(tokenBasedDetails.getRedirectUri()+" not in domain "+applicationConfig.getBaseDomainName());
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@Autowired
|
||||
ApplicationConfig applicationConfig;
|
||||
|
||||
@Operation(summary = "TokenBased认证接口", description = "传递参数应用ID",method="GET")
|
||||
@RequestMapping("/authz/tokenbased/{id}")
|
||||
public ModelAndView authorize(
|
||||
HttpServletRequest request,
|
||||
HttpServletResponse response,
|
||||
@PathVariable("id") String id,
|
||||
@CurrentUser UserInfo currentUser){
|
||||
ModelAndView modelAndView=new ModelAndView();
|
||||
|
||||
|
||||
AppsTokenBasedDetails tokenBasedDetails=null;
|
||||
tokenBasedDetails=tokenBasedDetailsService.getAppDetails(id , true);
|
||||
_logger.debug(""+tokenBasedDetails);
|
||||
|
||||
Apps application= getApp(id);
|
||||
tokenBasedDetails.setAdapter(application.getAdapter());
|
||||
tokenBasedDetails.setIsAdapter(application.getIsAdapter());
|
||||
|
||||
AbstractAuthorizeAdapter adapter;
|
||||
if(ConstsBoolean.isTrue(tokenBasedDetails.getIsAdapter())){
|
||||
adapter =(AbstractAuthorizeAdapter)Instance.newInstance(tokenBasedDetails.getAdapter());
|
||||
}else{
|
||||
adapter =(AbstractAuthorizeAdapter)new TokenBasedDefaultAdapter();
|
||||
}
|
||||
adapter.setPrincipal(AuthorizationUtils.getPrincipal());
|
||||
adapter.setApp(tokenBasedDetails);
|
||||
|
||||
adapter.generateInfo();
|
||||
|
||||
adapter.encrypt(
|
||||
null,
|
||||
tokenBasedDetails.getAlgorithmKey(),
|
||||
tokenBasedDetails.getAlgorithm());
|
||||
|
||||
if(tokenBasedDetails.getTokenType().equalsIgnoreCase("POST")) {
|
||||
return adapter.authorize(modelAndView);
|
||||
}else {
|
||||
_logger.debug("Cookie Name : {}" ,tokenBasedDetails.getCookieName());
|
||||
|
||||
Cookie cookie= new Cookie(tokenBasedDetails.getCookieName(),adapter.serialize());
|
||||
|
||||
Integer maxAge = tokenBasedDetails.getExpires();
|
||||
_logger.debug("Cookie Max Age : {} seconds.",maxAge);
|
||||
cookie.setMaxAge(maxAge);
|
||||
|
||||
cookie.setPath("/");
|
||||
//
|
||||
//cookie.setDomain("."+applicationConfig.getBaseDomainName());
|
||||
//tomcat 8.5
|
||||
cookie.setDomain(applicationConfig.getBaseDomainName());
|
||||
|
||||
_logger.debug("Sub Domain Name : .{}",applicationConfig.getBaseDomainName());
|
||||
response.addCookie(cookie);
|
||||
|
||||
if(tokenBasedDetails.getRedirectUri().indexOf(applicationConfig.getBaseDomainName())>-1){
|
||||
return WebContext.redirect(tokenBasedDetails.getRedirectUri());
|
||||
}else{
|
||||
_logger.error(tokenBasedDetails.getRedirectUri()+" not in domain "+applicationConfig.getBaseDomainName());
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -32,89 +32,89 @@ import org.slf4j.LoggerFactory;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
public class TokenBasedDefaultAdapter extends AbstractAuthorizeAdapter {
|
||||
static final Logger _logger = LoggerFactory.getLogger(TokenBasedDefaultAdapter.class);
|
||||
String token = "";
|
||||
|
||||
@Override
|
||||
public Object generateInfo() {
|
||||
AppsTokenBasedDetails details=(AppsTokenBasedDetails)app;
|
||||
HashMap<String,String> beanMap=new HashMap<String,String>();
|
||||
|
||||
beanMap.put("randomId",(new StringGenerator()).uuidGenerate());
|
||||
if(details.getUserPropertys()!=null && !details.getUserPropertys().equals("")) {
|
||||
|
||||
if(details.getUserPropertys().indexOf("userId")>-1){
|
||||
static final Logger _logger = LoggerFactory.getLogger(TokenBasedDefaultAdapter.class);
|
||||
String token = "";
|
||||
|
||||
@Override
|
||||
public Object generateInfo() {
|
||||
AppsTokenBasedDetails details=(AppsTokenBasedDetails)app;
|
||||
HashMap<String,String> beanMap=new HashMap<String,String>();
|
||||
|
||||
beanMap.put("randomId",(new StringGenerator()).uuidGenerate());
|
||||
if(details.getUserPropertys()!=null && !details.getUserPropertys().equals("")) {
|
||||
|
||||
if(details.getUserPropertys().indexOf("userId")>-1){
|
||||
beanMap.put("userId",userInfo.getId());
|
||||
}
|
||||
|
||||
if(details.getUserPropertys().indexOf("username")>-1){
|
||||
|
||||
if(details.getUserPropertys().indexOf("username")>-1){
|
||||
beanMap.put("username",userInfo.getUsername());
|
||||
}
|
||||
|
||||
if(details.getUserPropertys().indexOf("email")>-1){
|
||||
|
||||
if(details.getUserPropertys().indexOf("email")>-1){
|
||||
beanMap.put("email",userInfo.getEmail());
|
||||
}
|
||||
|
||||
if(details.getUserPropertys().indexOf("windowsAccount")>-1){
|
||||
|
||||
if(details.getUserPropertys().indexOf("windowsAccount")>-1){
|
||||
beanMap.put("windowsAccount",userInfo.getWindowsAccount());
|
||||
}
|
||||
|
||||
if(details.getUserPropertys().indexOf("employeeNumber")>-1){
|
||||
|
||||
if(details.getUserPropertys().indexOf("employeeNumber")>-1){
|
||||
beanMap.put("employeeNumber",userInfo.getEmployeeNumber());
|
||||
}
|
||||
|
||||
if(details.getUserPropertys().indexOf("department")>-1){
|
||||
|
||||
if(details.getUserPropertys().indexOf("department")>-1){
|
||||
beanMap.put("department",userInfo.getDepartment());
|
||||
}
|
||||
|
||||
if(details.getUserPropertys().indexOf("departmentId")>-1){
|
||||
|
||||
if(details.getUserPropertys().indexOf("departmentId")>-1){
|
||||
beanMap.put("departmentId",userInfo.getDepartmentId());
|
||||
}
|
||||
}
|
||||
|
||||
beanMap.put("displayName", userInfo.getDisplayName());
|
||||
beanMap.put(WebConstants.ONLINE_TICKET_NAME, principal.getSessionId());
|
||||
|
||||
/*
|
||||
* use UTC date time format
|
||||
* current date plus expires minute
|
||||
*/
|
||||
DateTime currentDateTime = DateTime.now();
|
||||
Date expirationTime = currentDateTime.plusSeconds(details.getExpires()).toDate();
|
||||
String expiresString = DateUtils.toUtc(expirationTime);
|
||||
_logger.debug("UTC Local current date : "+DateUtils.toUtcLocal(currentDateTime.toDate()));
|
||||
_logger.debug("UTC current Date : "+DateUtils.toUtc(currentDateTime));
|
||||
_logger.debug("UTC expires Date : "+DateUtils.toUtc(currentDateTime));
|
||||
|
||||
beanMap.put("at", DateUtils.toUtc(currentDateTime));
|
||||
|
||||
beanMap.put("expires", expiresString);
|
||||
|
||||
token = JsonUtils.toString(beanMap);
|
||||
_logger.debug("Token : {}",token);
|
||||
|
||||
return token;
|
||||
}
|
||||
}
|
||||
|
||||
beanMap.put("displayName", userInfo.getDisplayName());
|
||||
beanMap.put(WebConstants.ONLINE_TICKET_NAME, principal.getSessionId());
|
||||
|
||||
/*
|
||||
* use UTC date time format
|
||||
* current date plus expires minute
|
||||
*/
|
||||
DateTime currentDateTime = DateTime.now();
|
||||
Date expirationTime = currentDateTime.plusSeconds(details.getExpires()).toDate();
|
||||
String expiresString = DateUtils.toUtc(expirationTime);
|
||||
_logger.debug("UTC Local current date : "+DateUtils.toUtcLocal(currentDateTime.toDate()));
|
||||
_logger.debug("UTC current Date : "+DateUtils.toUtc(currentDateTime));
|
||||
_logger.debug("UTC expires Date : "+DateUtils.toUtc(currentDateTime));
|
||||
|
||||
beanMap.put("at", DateUtils.toUtc(currentDateTime));
|
||||
|
||||
beanMap.put("expires", expiresString);
|
||||
|
||||
token = JsonUtils.toString(beanMap);
|
||||
_logger.debug("Token : {}",token);
|
||||
|
||||
return token;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object encrypt(Object data, String algorithmKey, String algorithm) {
|
||||
token = super.encrypt(token, algorithmKey, algorithm).toString();
|
||||
return token;
|
||||
}
|
||||
@Override
|
||||
public Object encrypt(Object data, String algorithmKey, String algorithm) {
|
||||
token = super.encrypt(token, algorithmKey, algorithm).toString();
|
||||
return token;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ModelAndView authorize(ModelAndView modelAndView) {
|
||||
modelAndView.setViewName("authorize/tokenbased_sso_submint");
|
||||
AppsTokenBasedDetails details=(AppsTokenBasedDetails)app;
|
||||
modelAndView.addObject("action", details.getRedirectUri());
|
||||
|
||||
modelAndView.addObject("token",token );
|
||||
return modelAndView;
|
||||
}
|
||||
@Override
|
||||
public ModelAndView authorize(ModelAndView modelAndView) {
|
||||
modelAndView.setViewName("authorize/tokenbased_sso_submint");
|
||||
AppsTokenBasedDetails details=(AppsTokenBasedDetails)app;
|
||||
modelAndView.addObject("action", details.getRedirectUri());
|
||||
|
||||
modelAndView.addObject("token",token );
|
||||
return modelAndView;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String serialize() {
|
||||
return token;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String serialize() {
|
||||
return token;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -27,66 +27,66 @@ import org.slf4j.LoggerFactory;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
public class TokenBasedSimpleAdapter extends AbstractAuthorizeAdapter {
|
||||
static final Logger _logger = LoggerFactory.getLogger(TokenBasedSimpleAdapter.class);
|
||||
String token = "";
|
||||
|
||||
@Override
|
||||
public Object generateInfo() {
|
||||
AppsTokenBasedDetails details=(AppsTokenBasedDetails)app;
|
||||
|
||||
String tokenUsername = userInfo.getUsername();
|
||||
|
||||
if(details.getUserPropertys()!=null && !details.getUserPropertys().equals("")) {
|
||||
if(details.getUserPropertys().indexOf("userId")>-1){
|
||||
tokenUsername=userInfo.getId();
|
||||
}else if(details.getUserPropertys().indexOf("username")>-1){
|
||||
tokenUsername= userInfo.getUsername();
|
||||
}else if(details.getUserPropertys().indexOf("email")>-1){
|
||||
tokenUsername=userInfo.getEmail();
|
||||
}else if(details.getUserPropertys().indexOf("windowsAccount")>-1){
|
||||
tokenUsername= userInfo.getWindowsAccount();
|
||||
}else if(details.getUserPropertys().indexOf("employeeNumber")>-1){
|
||||
tokenUsername=userInfo.getEmployeeNumber();
|
||||
}else if(details.getUserPropertys().indexOf("department")>-1){
|
||||
tokenUsername= userInfo.getDepartmentId();
|
||||
}else if(details.getUserPropertys().indexOf("departmentId")>-1){
|
||||
static final Logger _logger = LoggerFactory.getLogger(TokenBasedSimpleAdapter.class);
|
||||
String token = "";
|
||||
|
||||
@Override
|
||||
public Object generateInfo() {
|
||||
AppsTokenBasedDetails details=(AppsTokenBasedDetails)app;
|
||||
|
||||
String tokenUsername = userInfo.getUsername();
|
||||
|
||||
if(details.getUserPropertys()!=null && !details.getUserPropertys().equals("")) {
|
||||
if(details.getUserPropertys().indexOf("userId")>-1){
|
||||
tokenUsername=userInfo.getId();
|
||||
}else if(details.getUserPropertys().indexOf("username")>-1){
|
||||
tokenUsername= userInfo.getUsername();
|
||||
}else if(details.getUserPropertys().indexOf("email")>-1){
|
||||
tokenUsername=userInfo.getEmail();
|
||||
}else if(details.getUserPropertys().indexOf("windowsAccount")>-1){
|
||||
tokenUsername= userInfo.getWindowsAccount();
|
||||
}else if(details.getUserPropertys().indexOf("employeeNumber")>-1){
|
||||
tokenUsername=userInfo.getEmployeeNumber();
|
||||
}else if(details.getUserPropertys().indexOf("department")>-1){
|
||||
tokenUsername= userInfo.getDepartmentId();
|
||||
}else if(details.getUserPropertys().indexOf("departmentId")>-1){
|
||||
tokenUsername= userInfo.getDepartment();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* use UTC date time format
|
||||
*/
|
||||
Date currentDate=new Date();
|
||||
_logger.debug("UTC Local current date : "+DateUtils.toUtcLocal(currentDate));
|
||||
_logger.debug("UTC current Date : "+DateUtils.toUtc(currentDate));
|
||||
|
||||
|
||||
token = tokenUsername+"@@"+DateUtils.toUtc(currentDate);
|
||||
_logger.debug("Token : {}",token);
|
||||
|
||||
return token;
|
||||
}
|
||||
/*
|
||||
* use UTC date time format
|
||||
*/
|
||||
Date currentDate=new Date();
|
||||
_logger.debug("UTC Local current date : "+DateUtils.toUtcLocal(currentDate));
|
||||
_logger.debug("UTC current Date : "+DateUtils.toUtc(currentDate));
|
||||
|
||||
|
||||
token = tokenUsername+"@@"+DateUtils.toUtc(currentDate);
|
||||
_logger.debug("Token : {}",token);
|
||||
|
||||
return token;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object encrypt(Object data, String algorithmKey, String algorithm) {
|
||||
token = super.encrypt(token, algorithmKey, algorithm).toString();
|
||||
return token;
|
||||
}
|
||||
@Override
|
||||
public Object encrypt(Object data, String algorithmKey, String algorithm) {
|
||||
token = super.encrypt(token, algorithmKey, algorithm).toString();
|
||||
return token;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ModelAndView authorize(ModelAndView modelAndView) {
|
||||
modelAndView.setViewName("authorize/tokenbased_sso_submint");
|
||||
AppsTokenBasedDetails details=(AppsTokenBasedDetails)app;
|
||||
modelAndView.addObject("action", details.getRedirectUri());
|
||||
|
||||
modelAndView.addObject("token",token);
|
||||
|
||||
return modelAndView;
|
||||
}
|
||||
@Override
|
||||
public ModelAndView authorize(ModelAndView modelAndView) {
|
||||
modelAndView.setViewName("authorize/tokenbased_sso_submint");
|
||||
AppsTokenBasedDetails details=(AppsTokenBasedDetails)app;
|
||||
modelAndView.addObject("action", details.getRedirectUri());
|
||||
|
||||
modelAndView.addObject("token",token);
|
||||
|
||||
return modelAndView;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String serialize() {
|
||||
return token;
|
||||
}
|
||||
@Override
|
||||
public String serialize() {
|
||||
return token;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user