Authentication 优化

This commit is contained in:
Crystal.Sea
2020-11-08 13:05:30 +08:00
parent c1e4b36cbe
commit 06b27d3564
41 changed files with 425 additions and 163 deletions

View File

@@ -24,6 +24,7 @@ import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.maxkey.authn.SigninPrincipal;
import org.maxkey.authz.endpoint.AuthorizeBaseEndpoint;
import org.maxkey.authz.endpoint.adapter.AbstractAuthorizeAdapter;
import org.maxkey.authz.token.endpoint.adapter.TokenBasedDefaultAdapter;
@@ -82,6 +83,7 @@ public class TokenBasedAuthorizeEndpoint extends AuthorizeBaseEndpoint{
}
String tokenData=adapter.generateInfo(
(SigninPrincipal)WebContext.getAuthentication().getPrincipal(),
WebContext.getUserInfo(),
tokenBasedDetails);

View File

@@ -20,6 +20,7 @@ package org.maxkey.authz.token.endpoint.adapter;
import java.util.Date;
import java.util.HashMap;
import org.maxkey.authn.SigninPrincipal;
import org.maxkey.authz.endpoint.adapter.AbstractAuthorizeAdapter;
import org.maxkey.domain.UserInfo;
import org.maxkey.domain.apps.AppsTokenBasedDetails;
@@ -34,7 +35,7 @@ import org.springframework.web.servlet.ModelAndView;
public class TokenBasedDefaultAdapter extends AbstractAuthorizeAdapter {
final static Logger _logger = LoggerFactory.getLogger(TokenBasedDefaultAdapter.class);
@Override
public String generateInfo(UserInfo userInfo,Object app) {
public String generateInfo(SigninPrincipal authentication,UserInfo userInfo,Object app) {
AppsTokenBasedDetails details=(AppsTokenBasedDetails)app;
HashMap<String,String> beanMap=new HashMap<String,String>();
@@ -71,7 +72,7 @@ public class TokenBasedDefaultAdapter extends AbstractAuthorizeAdapter {
}
beanMap.put("displayName", userInfo.getDisplayName());
beanMap.put(WebConstants.ONLINE_TICKET_NAME, userInfo.getOnlineTicket().getTicketId());
beanMap.put(WebConstants.ONLINE_TICKET_NAME, authentication.getOnlineTicket());
/*
* use UTC date time format

View File

@@ -22,6 +22,7 @@ import java.util.Date;
import java.util.UUID;
import org.joda.time.DateTime;
import org.maxkey.authn.SigninPrincipal;
import org.maxkey.authz.endpoint.adapter.AbstractAuthorizeAdapter;
import org.maxkey.configuration.oidc.OIDCProviderMetadata;
import org.maxkey.crypto.jwt.signer.service.JwtSigningAndValidationService;
@@ -44,7 +45,7 @@ import com.nimbusds.jwt.SignedJWT;
public class TokenBasedJWTAdapter extends AbstractAuthorizeAdapter {
final static Logger _logger = LoggerFactory.getLogger(TokenBasedJWTAdapter.class);
@Override
public String generateInfo(UserInfo userInfo,Object app) {
public String generateInfo(SigninPrincipal authentication,UserInfo userInfo,Object app) {
AppsTokenBasedDetails details=(AppsTokenBasedDetails)app;
@@ -68,7 +69,7 @@ public class TokenBasedJWTAdapter extends AbstractAuthorizeAdapter {
.claim("user_id", userInfo.getId())
.claim("external_id", userInfo.getId())
.claim("locale", userInfo.getLocale())
.claim(WebConstants.ONLINE_TICKET_NAME, userInfo.getOnlineTicket().getTicketId())
.claim(WebConstants.ONLINE_TICKET_NAME, authentication.getOnlineTicket())
.claim("kid", jwtSignerService.getDefaultSignerKeyId())
.build();

View File

@@ -22,6 +22,7 @@ import java.util.Date;
import java.util.UUID;
import org.joda.time.DateTime;
import org.maxkey.authn.SigninPrincipal;
import org.maxkey.authz.endpoint.adapter.AbstractAuthorizeAdapter;
import org.maxkey.configuration.oidc.OIDCProviderMetadata;
import org.maxkey.crypto.ReciprocalUtils;
@@ -48,7 +49,7 @@ public class TokenBasedJWTHS256Adapter extends AbstractAuthorizeAdapter {
private SymmetricSigningAndValidationServiceBuilder symmetricJwtSignerServiceBuilder=new SymmetricSigningAndValidationServiceBuilder();
@Override
public String generateInfo(UserInfo userInfo,Object app) {
public String generateInfo(SigninPrincipal authentication,UserInfo userInfo,Object app) {
AppsTokenBasedDetails details=(AppsTokenBasedDetails)app;
OIDCProviderMetadata providerMetadata= (OIDCProviderMetadata)WebContext.getBean("oidcProviderMetadata");
@@ -68,7 +69,7 @@ public class TokenBasedJWTHS256Adapter extends AbstractAuthorizeAdapter {
.claim("email", userInfo.getWorkEmail())
.claim("name", userInfo.getUsername())
.claim("user_id", userInfo.getId())
.claim(WebConstants.ONLINE_TICKET_NAME, userInfo.getOnlineTicket().getTicketId())
.claim(WebConstants.ONLINE_TICKET_NAME, authentication.getOnlineTicket())
.claim("external_id", userInfo.getId())
.claim("locale", userInfo.getLocale())
.claim("kid", "SYMMETRIC-KEY")

View File

@@ -19,6 +19,7 @@ package org.maxkey.authz.token.endpoint.adapter;
import java.util.Date;
import org.maxkey.authn.SigninPrincipal;
import org.maxkey.authz.endpoint.adapter.AbstractAuthorizeAdapter;
import org.maxkey.domain.UserInfo;
import org.maxkey.domain.apps.AppsTokenBasedDetails;
@@ -30,7 +31,7 @@ import org.springframework.web.servlet.ModelAndView;
public class TokenBasedSimpleAdapter extends AbstractAuthorizeAdapter {
final static Logger _logger = LoggerFactory.getLogger(TokenBasedSimpleAdapter.class);
@Override
public String generateInfo(UserInfo userInfo,Object app) {
public String generateInfo(SigninPrincipal authentication,UserInfo userInfo,Object app) {
AppsTokenBasedDetails details=(AppsTokenBasedDetails)app;
String tokenUsername = userInfo.getUsername();