Skip to content

Commit 068fc3a

Browse files
authored
Merge pull request #57 from vinscom/develop
Release 2.4.3 Pre Release
2 parents 85d69e5 + 7c3a581 commit 068fc3a

17 files changed

+200
-84
lines changed

config-layers/common/in/erail/common/FrameworkConfiguration.properties

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,3 @@ $class=in.erail.common.FrameworkConfiguration
33
$scope=GLOBAL
44

55
redisClient=/io/vertx/redis/RedisClient
6-
oAuth2Auth=/io/vertx/ext/auth/oauth2/OAuth2Auth

config-layers/common/in/erail/route/CORSRouteBuilder.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ log=true
66
enable=true
77

88
allowedOrigin=*
9-
allowedMethod=GET,POST,OPTIONS
9+
allowedMethod=DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT
1010
allowedCredentials=false
1111
maxAgeSeconds=86400
12-
allowedHeaders=
12+
allowedHeaders=Content-Type,Cache-Control,Authorization

config-layers/common/in/erail/route/LoadUserFromAccessTokenRouteBuilder.properties

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,5 @@
22
$class=in.erail.route.LoadUserFromAccessTokenRouteBuillder
33

44
vertx=/io/vertx/core/Vertx
5+
authProvider=/io/vertx/ext/auth/jwt/JWTAuth
56
log=true
6-
oAuth2Auth=/io/vertx/ext/auth/oauth2/OAuth2Auth
7-
enable^=/in/erail/common/FrameworkConfiguration.oAuth2AuthEnable
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#/io/vertx/ext/auth/jwt/JWTAuth
2+
$class=io.vertx.reactivex.ext.auth.jwt.JWTAuth
3+
$instanceFactory=/in/erail/factory/MethodInstanceFactory
4+
$factory.class=io.vertx.reactivex.ext.auth.jwt.JWTAuth
5+
$factory.method.name=create
6+
$factory.param.values=/io/vertx/core/Vertx,/io/vertx/ext/auth/jwt/JWTAuthOptions
7+
$factory.param.type=io.vertx.reactivex.core.Vertx,io.vertx.ext.auth.jwt.JWTAuthOptions
8+
$factory.enable=true
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#/io/vertx/ext/auth/jwt/JWTAuthOptions
2+
$class=io.vertx.ext.auth.jwt.JWTAuthOptions
3+
$instanceFactory=/in/erail/factory/ParameterConstructorInstanceFactory
4+
$constructor.param.values=jwtAuthOptionsConfig.json
5+
$constructor.param.type=io.vertx.core.json.JsonObject
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"pubSecKeys" : [
3+
{
4+
"algorithm" : "RS256",
5+
"publicKey" : "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr1MjI2WAw06VK8biQPC+0mVOkI4ZRt+327fxwrxyuu32AMPKznPCsKtRaI/Xma3+Yi09Dt99agkfUfw/rPr3N0Vcgzd1muhqZOe6vfWqmPCUUB263EkSa1GIx4pLZ3CfvAc3f24Y00CS+S0gjCIr7lwLelcL9Hu9eZg5sTEfzKB/3+yUJ875aYRGWXdM7DnNzODXKa9kc1EqWjwprX0UZwoo3OycgmYS+DyI/MHPcdWbilsjsw77ISFeBZ7OZ+hFJ/baABenAnsTwqbyvWlC6TS3GCXTeH10+0RGWvjJAZEPX0PEt626iMTqP61XEh8kpOROU/xmLWTKHz3EAcX+4QIDAQAB",
6+
"secretKey" : "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCvUyMjZYDDTpUrxuJA8L7SZU6QjhlG37fbt/HCvHK67fYAw8rOc8Kwq1Foj9eZrf5iLT0O331qCR9R/D+s+vc3RVyDN3Wa6Gpk57q99aqY8JRQHbrcSRJrUYjHiktncJ+8Bzd/bhjTQJL5LSCMIivuXAt6Vwv0e715mDmxMR/MoH/f7JQnzvlphEZZd0zsOc3M4Ncpr2RzUSpaPCmtfRRnCijc7JyCZhL4PIj8wc9x1ZuKWyOzDvshIV4Fns5n6EUn9toAF6cCexPCpvK9aULpNLcYJdN4fXT7REZa+MkBkQ9fQ8S3rbqIxOo/rVcSHySk5E5T/GYtZMofPcQBxf7hAgMBAAECggEAGOlXNNBXW2jvCSlZPKD4fCyo3SFTth5ToYShdWoRYz4sli87wdnw7+lnx9Oobs2qN4j2BAb9avOg36VX5txCBDh2zK40p64eb/f9MMCXXOPSLxAKXQKE+3q6VJ/x1uDJ0Y209QZPwLSMLZub5E12sIejmd6EdFigs4ZNrD+upQRs6laM3EJdOqrHfArh18dJQoJcq3VfCCw1p+iPOJSVC6TS6Qp8nR/Qq2h5/5DnUj68RMg6jBLuaq+2vAvS/PXkUV5L0rJT11CoPzxusDDSJl7tkxI9Uzz7RfyZFzibxAmrUIxfqFIhQq+EnycYfKuTRDIZjYXvoKqatLhKtgkXgQKBgQDa2SGZJj6HmR25B4+xmJqpf9B1cM4yz4nOUy7xA80V5DRg/qol+T3SDjPXvoinR+fdgpqUBCxVyQHRWs05fDW/xkBXxalODlNSBWwhFBO2dvbdz3xWLDZJmm6rhgo7GZplTWEL6lxxNTwiKdkCLgW2CHkDpKxPy3x3P/50fM98MwKBgQDNFohdBKoiuG2H2qML27pifgJUJXg33YgUN3xPgR2V0UyVV7u1qq9aHiBL2oO+gp1Jz1N+aQQ6FVDGZ+Okg6VKPZKEZnfYP7AgUAPkqxtsI3oAYGt1OtcLoGXns+U8LxJkuwV3IilvdkMVGQa0rXHYn8pdK149yd+nWCCJL/cEmwKBgQCsL0fzAhcSgtLS4HMbDPEqyQhPTli9u3I2JlZ5hD8YqTrY0aU3SVltaoU5ioxj6Pwx2O8b5Aip2gOXHzT2tJZpc2buZ/MkGbtOfjur7urvlbv3mqa9+f0gfePzCfwEsck7SN1BDbx7yaGtU3WM9H7D0Pi9eBOmmHguLuhZ6FUq5wKBgEbjm/zzCM/5ibqkwyjtKW6z+aAWV4iP5WJ/j1N34L8RWnRgn/x6ZCQ1N5qgjFtEkJObu1N9fz2IcqQx8sjBzFduEv/63z/7O6jfn4jh8Bef56LLsTkTPpPBPJgrYXg9GRGCZ7A3ObVSXnuja+L19N0Y1nz/6ZJX/hu85Xol/y8zAoGBAJQw/0mEww+c2YOcNiTyPOWrJ6YYtVDoi2noESgQzfcRx2YbFjkVYK1ig+rk6oMBGQt2hTCXqv7f7HWtfJ39DZ8+nIWqMEt87O7YW1A/Lmq7nFpqqGA3W5o2w+bCaMqHypL1RZo3fwNK3dXGlWOC419oXmR0yMmpjnGH3f2MFa41"
7+
}
8+
9+
]
10+
}
Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package in.erail.common;
22

3-
import io.vertx.reactivex.ext.auth.oauth2.OAuth2Auth;
43
import io.vertx.reactivex.redis.RedisClient;
54
import java.util.Optional;
65

@@ -11,7 +10,6 @@
1110
public class FrameworkConfiguration {
1211

1312
private RedisClient mRedisClient;
14-
private OAuth2Auth mOAuth2Auth;
1513

1614
public RedisClient getRedisClient() {
1715
return mRedisClient;
@@ -21,20 +19,8 @@ public void setRedisClient(RedisClient pRedisClient) {
2119
this.mRedisClient = pRedisClient;
2220
}
2321

24-
public OAuth2Auth getOAuth2Auth() {
25-
return mOAuth2Auth;
26-
}
27-
28-
public void setOAuth2Auth(OAuth2Auth pOAuth2Auth) {
29-
this.mOAuth2Auth = pOAuth2Auth;
30-
}
31-
32-
3322
public boolean isRedisEnable(){
3423
return Optional.ofNullable(getRedisClient()).isPresent();
3524
}
3625

37-
public boolean isOAuth2AuthEnable(){
38-
return Optional.ofNullable(getOAuth2Auth()).isPresent();
39-
}
4026
}

src/main/java/in/erail/model/RequestEvent.java

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.fasterxml.jackson.annotation.JsonInclude.Include;
55
import com.google.common.io.BaseEncoding;
66
import io.vertx.core.http.HttpMethod;
7+
import io.vertx.core.json.JsonObject;
78
import java.util.Map;
89

910
/**
@@ -23,9 +24,10 @@ public class RequestEvent {
2324
private Map<String, String> mPathParameters;
2425
private Map<String, String> mStageVariables;
2526
@SuppressWarnings("rawtypes")
26-
private Map mRequestContext;
27+
private Map mRequestContext;
2728
private byte[] mBody = new byte[0];
2829
private boolean mIsBase64Encoded = false;
30+
private Map<String, Object> mPrincipal;
2931

3032
public String getResource() {
3133
return mResource;
@@ -100,12 +102,12 @@ public void setStageVariables(Map<String, String> pStageVariables) {
100102
}
101103

102104
@SuppressWarnings("rawtypes")
103-
public Map getRequestContext() {
105+
public Map getRequestContext() {
104106
return mRequestContext;
105107
}
106108

107109
@SuppressWarnings("rawtypes")
108-
public void setRequestContext(Map pRequestContext) {
110+
public void setRequestContext(Map pRequestContext) {
109111
this.mRequestContext = pRequestContext;
110112
}
111113

@@ -124,11 +126,25 @@ public byte[] getBody() {
124126
public void setBody(byte[] pBody) {
125127
this.mBody = pBody;
126128
}
127-
128-
public String bodyAsString(){
129-
if(isIsBase64Encoded()){
129+
130+
public String bodyAsString() {
131+
if (isIsBase64Encoded()) {
130132
return new String(BaseEncoding.base64().decode(new String(getBody())));
131133
}
132134
return new String(getBody());
133135
}
136+
137+
public Map<String, Object> getPrincipal() {
138+
return mPrincipal;
139+
}
140+
141+
public void setPrincipal(Map<String, Object> pPrincipal) {
142+
this.mPrincipal = pPrincipal;
143+
}
144+
145+
@Override
146+
public String toString() {
147+
return JsonObject.mapFrom(this).toString();
148+
}
149+
134150
}

src/main/java/in/erail/model/ResponseEvent.java

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.google.common.base.Preconditions;
44
import com.google.common.net.HttpHeaders;
55
import com.google.common.net.MediaType;
6+
import io.vertx.core.json.JsonObject;
67
import io.vertx.reactivex.core.MultiMap;
78
import java.util.Arrays;
89
import java.util.Collections;
@@ -161,22 +162,28 @@ public ResponseEvent setContentType(String pContentType) {
161162
return this;
162163
}
163164

164-
public ResponseEvent setContentType(MediaType pMediaType) {
165-
setContentType(pMediaType.toString());
166-
return this;
167-
}
168-
169-
public ResponseEvent addHeader(String pHeaderName, String pMediaType) {
170-
mMultiValueHeaders.add(HttpHeaders.CONTENT_TYPE, pMediaType);
165+
/**
166+
* Predefined Content Type
167+
* @param pMediaType
168+
* @return Response Event
169+
*/
170+
public ResponseEvent setMediaType(MediaType pMediaType) {
171+
ResponseEvent.this.setContentType(pMediaType.toString());
171172
return this;
172173
}
173174

174-
public ResponseEvent addHeader(String pHeaderName, MediaType pMediaType) {
175-
addHeader(HttpHeaders.CONTENT_TYPE, pMediaType.toString());
175+
public ResponseEvent addHeader(String pHeaderName, String pValue) {
176+
mMultiValueHeaders.add(pHeaderName, pValue);
176177
return this;
177178
}
178179

179180
public String headerValue(String pHeaderName) {
180181
return mMultiValueHeaders.get(pHeaderName);
181182
}
183+
184+
@Override
185+
public String toString() {
186+
return JsonObject.mapFrom(this).toString();
187+
}
188+
182189
}

src/main/java/in/erail/route/LoadUserFromAccessTokenRouteBuillder.java

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,54 +3,60 @@
33
import com.google.common.base.Strings;
44
import com.google.common.net.HttpHeaders;
55
import io.vertx.core.json.JsonObject;
6-
import io.vertx.ext.auth.oauth2.impl.OAuth2AuthProviderImpl;
7-
import io.vertx.ext.auth.oauth2.impl.OAuth2TokenImpl;
8-
import io.vertx.reactivex.ext.auth.oauth2.AccessToken;
9-
import io.vertx.reactivex.ext.auth.oauth2.OAuth2Auth;
6+
import io.vertx.reactivex.ext.auth.AuthProvider;
107
import io.vertx.reactivex.ext.web.Router;
118
import io.vertx.reactivex.ext.web.RoutingContext;
9+
import java.util.regex.Matcher;
10+
import java.util.regex.Pattern;
1211

1312
/**
1413
*
1514
* @author vinay
1615
*/
1716
public class LoadUserFromAccessTokenRouteBuillder extends AbstractRouterBuilderImpl {
1817

19-
private OAuth2Auth mOAuth2Auth;
20-
21-
public OAuth2Auth getOAuth2Auth() {
22-
return mOAuth2Auth;
23-
}
24-
25-
public void setOAuth2Auth(OAuth2Auth pOAuth2Auth) {
26-
this.mOAuth2Auth = pOAuth2Auth;
27-
}
18+
private final Pattern AUTH_TOKEN = Pattern.compile("^Bearer\\s(?<token>.*)");
19+
private AuthProvider mAuthProvider;
2820

2921
@Override
3022
public Router getRouter(Router pRouter) {
3123
pRouter.route().handler(this::handle);
3224
return pRouter;
33-
3425
}
3526

3627
public void handle(RoutingContext pRoutingContext) {
37-
28+
3829
if (pRoutingContext.user() == null) {
3930
String access_token = pRoutingContext.request().getHeader(HttpHeaders.AUTHORIZATION);
4031
if (!Strings.isNullOrEmpty(access_token)) {
41-
OAuth2AuthProviderImpl provider = (OAuth2AuthProviderImpl) getOAuth2Auth().getDelegate();
42-
JsonObject accessToken = new JsonObject().put("access_token", access_token.split(" ")[1]);
43-
try {
44-
OAuth2TokenImpl token = new OAuth2TokenImpl(provider, accessToken);
45-
pRoutingContext.setUser(new AccessToken(token));
46-
} catch (RuntimeException e) {
47-
getLog().error(e);
48-
pRoutingContext.fail(401);
49-
return;
32+
Matcher tokenRegex = AUTH_TOKEN.matcher(access_token);
33+
if (tokenRegex.find()) {
34+
String token = tokenRegex.group("token");
35+
JsonObject authInfo = new JsonObject()
36+
.put("access_token", token)
37+
.put("token_type", "Bearer")
38+
.put("jwt", token);
39+
try {
40+
pRoutingContext.setUser(getAuthProvider().rxAuthenticate(authInfo).blockingGet());
41+
} catch (RuntimeException e) {
42+
getLog().error(e);
43+
pRoutingContext.fail(401);
44+
return;
45+
}
46+
} else {
47+
getLog().warn(() -> "Invalid Auth Header:" + access_token);
5048
}
5149
}
5250
}
5351
pRoutingContext.next();
5452
}
5553

54+
public AuthProvider getAuthProvider() {
55+
return mAuthProvider;
56+
}
57+
58+
public void setAuthProvider(AuthProvider pAuthProvider) {
59+
this.mAuthProvider = pAuthProvider;
60+
}
61+
5662
}

0 commit comments

Comments
 (0)