Class BootAuthenticator<E>
java.lang.Object
org.summerboot.jexpress.security.auth.BootAuthenticator<E>
- Type Parameters:
E- authenticate(T metaData)
- All Implemented Interfaces:
io.grpc.ServerInterceptor,Authenticator<E>
- Direct Known Subclasses:
LDAPAuthenticator
public abstract class BootAuthenticator<E>
extends Object
implements Authenticator<E>, io.grpc.ServerInterceptor
- Author:
- Changski Tie Zheng Zhang 张铁铮, 魏泽北, 杜旺财, 杜富贵
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected AuthenticatorListenerprotected AuthTokenCacheprotected static final Stringprotected static final StringFields inherited from interface org.summerboot.jexpress.security.auth.Authenticator
GrpcCaller, GrpcCallerId -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract Callerauthenticate(String usename, String password, E metaData, AuthenticatorListener listener, ServiceContext context) booleancustomizedAuthorizationCheck(RequestProcessor processor, io.netty.handler.codec.http.HttpHeaders httpRequestHeaders, String httpRequestPath, ServiceContext context) Extra authorization checks before processingprotected CallerfromJwt(io.jsonwebtoken.Claims claims) Convert Caller back from auth token, override this method to implement customized token formatprotected StringgetBearerToken(io.netty.handler.codec.http.HttpHeaders httpRequestHeaders) Retrieve token based on RFC 6750 - The OAuth 2.0 Authorization Framework override this method to get customized tokenprotected StringgetBearerToken(String authHeaderValue) Retrieve token based on RFC 6750 - The OAuth 2.0 Authorization Framework override this method to get customized token<ReqT,RespT>
io.grpc.ServerCall.Listener<ReqT> interceptCall(io.grpc.ServerCall<ReqT, RespT> serverCall, io.grpc.Metadata metadata, io.grpc.ServerCallHandler<ReqT, RespT> serverCallHandler) gRPC JWT verificationvoidlogoutToken(io.netty.handler.codec.http.HttpHeaders httpRequestHeaders, AuthTokenCache cache, ServiceContext context) Success HTTP Status: 204 No ContentvoidlogoutToken(String authToken, AuthTokenCache cache, ServiceContext context) Success HTTP Status: 204 No Contentprotected Integerprotected io.jsonwebtoken.ClaimssignJWT(String username, String pwd, E metaData, int validForMinutes, ServiceContext context) Success HTTP Status: 201 CreatedsignJWT(Caller caller, int validForMinutes, ServiceContext context) Success HTTP Status: 201 Createdio.jsonwebtoken.JwtBuilderConvert Caller to auth token, override this method to implement customized token formatverifyToken(io.netty.handler.codec.http.HttpHeaders httpRequestHeaders, AuthTokenCache cache, Integer errorCode, ServiceContext context) Success HTTP Status: 200 OKverifyToken(String authToken, AuthTokenCache cache, Integer errorCode, ServiceContext context)
-
Field Details
-
ERROR_NO_CFG
-
authenticatorListener
-
authTokenCache
-
ERROR
- See Also:
-
-
Constructor Details
-
BootAuthenticator
public BootAuthenticator()
-
-
Method Details
-
signJWT
public String signJWT(String username, String pwd, E metaData, int validForMinutes, ServiceContext context) throws NamingException Description copied from interface:AuthenticatorSuccess HTTP Status: 201 Created- Specified by:
signJWTin interfaceAuthenticator<E>- Parameters:
username-pwd-metaData-validForMinutes-context-- Returns:
- Throws:
NamingException
-
signJWT
Description copied from interface:AuthenticatorSuccess HTTP Status: 201 Created- Specified by:
signJWTin interfaceAuthenticator<E>- Parameters:
caller-validForMinutes-context-- Returns:
-
authenticate
protected abstract Caller authenticate(String usename, String password, E metaData, AuthenticatorListener listener, ServiceContext context) throws NamingException - Parameters:
usename-password-metaData-listener-context-- Returns:
- Throws:
NamingException
-
toJwt
Convert Caller to auth token, override this method to implement customized token format- Specified by:
toJwtin interfaceAuthenticator<E>- Parameters:
caller-txId-- Returns:
- formatted auth token builder
-
parseJWT
-
fromJwt
Convert Caller back from auth token, override this method to implement customized token format- Parameters:
claims-- Returns:
- Caller
-
getBearerToken
Retrieve token based on RFC 6750 - The OAuth 2.0 Authorization Framework override this method to get customized token- Parameters:
httpRequestHeaders-- Returns:
-
getBearerToken
Retrieve token based on RFC 6750 - The OAuth 2.0 Authorization Framework override this method to get customized token- Parameters:
authHeaderValue- "Bearer jwt"- Returns:
-
verifyToken
public Caller verifyToken(io.netty.handler.codec.http.HttpHeaders httpRequestHeaders, AuthTokenCache cache, Integer errorCode, ServiceContext context) Description copied from interface:AuthenticatorSuccess HTTP Status: 200 OK- Specified by:
verifyTokenin interfaceAuthenticator<E>- Parameters:
httpRequestHeaders-cache-errorCode-context-- Returns:
-
verifyToken
public Caller verifyToken(String authToken, AuthTokenCache cache, Integer errorCode, ServiceContext context) - Specified by:
verifyTokenin interfaceAuthenticator<E>- Parameters:
authToken-cache-errorCode-context-- Returns:
-
customizedAuthorizationCheck
public boolean customizedAuthorizationCheck(RequestProcessor processor, io.netty.handler.codec.http.HttpHeaders httpRequestHeaders, String httpRequestPath, ServiceContext context) throws Exception Description copied from interface:AuthenticatorExtra authorization checks before processing- Specified by:
customizedAuthorizationCheckin interfaceAuthenticator<E>- Parameters:
processor-httpRequestHeaders-httpRequestPath-context-- Returns:
- true if good to process request, otherwise false
- Throws:
Exception
-
overrideVerifyTokenErrorCode
-
logoutToken
public void logoutToken(io.netty.handler.codec.http.HttpHeaders httpRequestHeaders, AuthTokenCache cache, ServiceContext context) Description copied from interface:AuthenticatorSuccess HTTP Status: 204 No Content- Specified by:
logoutTokenin interfaceAuthenticator<E>- Parameters:
httpRequestHeaders-cache-context-
-
logoutToken
Description copied from interface:AuthenticatorSuccess HTTP Status: 204 No Content- Specified by:
logoutTokenin interfaceAuthenticator<E>- Parameters:
authToken-cache-context-
-
interceptCall
public <ReqT,RespT> io.grpc.ServerCall.Listener<ReqT> interceptCall(io.grpc.ServerCall<ReqT, RespT> serverCall, io.grpc.Metadata metadata, io.grpc.ServerCallHandler<ReqT, RespT> serverCallHandler) gRPC JWT verification- Specified by:
interceptCallin interfaceio.grpc.ServerInterceptor- Type Parameters:
ReqT-RespT-- Parameters:
serverCall-metadata-serverCallHandler-- Returns:
-