Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
T
trismegisto-services
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Mauro Paolo Josue Zuñiga Mallqui
trismegisto-services
Commits
04a2dac9
Commit
04a2dac9
authored
Jun 13, 2025
by
Mauro Paolo Josue Zuñiga Mallqui
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[ADD] BBVA ENDPOINT
parent
283692e4
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
217 additions
and
146 deletions
+217
-146
bbvaRest.java
...web/multitask/trismegistoservices/rest/BBVA/bbvaRest.java
+3
-4
tokenRest.java
...ava/web/multitask/trismegistoservices/rest/tokenRest.java
+56
-24
bbvaService.java
...titask/trismegistoservices/services/BBVA/bbvaService.java
+76
-31
tokenUtils.java
...a/web/multitask/trismegistoservices/utils/tokenUtils.java
+31
-23
key.p8
src/main/resources/tokens/key.p8
+51
-50
serviceAccount.json
src/main/resources/tokens/serviceAccount.json
+0
-14
No files found.
src/main/java/web/multitask/trismegistoservices/rest/BBVA/bbvaRest.java
View file @
04a2dac9
...
...
@@ -11,16 +11,15 @@ import web.multitask.trismegistoservices.singleton.bbvaSingleton;
@RequestMapping
(
"bbva"
)
public
class
bbvaRest
{
private
final
bbvaService
service
;
private
final
bbvaSingleton
singleton
;
public
bbvaRest
(
bbvaService
service
,
bbvaSingleton
singleton
)
{
this
.
service
=
service
;
public
bbvaRest
(
bbvaSingleton
singleton
)
{
this
.
singleton
=
singleton
;
}
@PostMapping
(
"/private/prepareRequest"
)
public
ResponseEntity
<?>
getHeader
(
@RequestBody
String
json
)
{
bbvaService
service
=
new
bbvaService
();
JSONObject
response
=
service
.
getToken
(
json
);
String
token
=
response
.
optString
(
"access_token"
);
if
(
token
.
isEmpty
()){
...
...
@@ -35,7 +34,7 @@ public class bbvaRest {
System
.
out
.
println
(
"token = "
+
singleton
.
getToken
());
System
.
out
.
println
(
"digest = "
+
singleton
.
getDigest
());
System
.
out
.
println
(
"signature = "
+
singleton
.
getSignature
());
return
ResponseEntity
.
ok
(
service
.
generateQR
(
singleton
.
getToken
(),
singleton
.
getDigest
(),
singleton
.
getSignature
(),
json
).
toMap
());
return
ResponseEntity
.
ok
(
service
.
peticionHTTP
(
singleton
.
getToken
(),
singleton
.
getDigest
(),
singleton
.
getSignature
(),
json
).
toMap
());
}
}
...
...
src/main/java/web/multitask/trismegistoservices/rest/tokenRest.java
View file @
04a2dac9
...
...
@@ -73,20 +73,20 @@ class tokenRest {
boolean
isTokenExpired
=
jwtTokenUtil
.
isTokenExpired
(
json
.
getString
(
"token"
));
if
(
isTokenExpired
)
{
response
.
put
(
"message"
,
"
Expired Token
"
).
put
(
"status"
,
false
);
response
.
put
(
"message"
,
"
Token expired
"
).
put
(
"status"
,
false
);
return
ResponseEntity
.
status
(
403
).
body
(
response
.
toMap
());
}
boolean
oneLifeToken
=
tokenSingleton
.
isTokenAvailable
(
json
.
getString
(
"token"
));
if
(
oneLifeToken
)
{
response
.
put
(
"message"
,
"
1-life Token is still up
"
).
put
(
"status"
,
true
);
response
.
put
(
"message"
,
"
El token de una vida sigue en pie
"
).
put
(
"status"
,
true
);
return
ResponseEntity
.
ok
(
response
.
toMap
());
}
boolean
validToken
=
jwtTokenUtil
.
validateToken
(
json
.
getString
(
"token"
));
if
(!
validToken
)
{
response
.
put
(
"message"
,
"
This token doesn't exist, it might be created on malicious purposes
"
).
put
(
"status"
,
false
);
response
.
put
(
"message"
,
"
El token no existe
"
).
put
(
"status"
,
false
);
return
ResponseEntity
.
status
(
401
).
body
(
response
.
toMap
());
}
...
...
@@ -105,16 +105,16 @@ class tokenRest {
JSONObject
json
=
new
JSONObject
(
token
);
UserDetails
userDetails
=
userRepo
.
findByUsername
(
json
.
getString
(
"username"
));
if
(
userDetails
==
null
)
{
return
ResponseEntity
.
status
(
401
).
body
(
new
JSONObject
().
put
(
"token"
,
""
).
put
(
"message"
,
"
Invalid Credential
s"
).
put
(
"status"
,
false
).
toMap
());
return
ResponseEntity
.
status
(
401
).
body
(
new
JSONObject
().
put
(
"token"
,
""
).
put
(
"message"
,
"
Credenciales invalida
s"
).
put
(
"status"
,
false
).
toMap
());
}
else
if
(
userDetails
.
getAuthorities
().
stream
().
anyMatch
(
a
->
a
.
getAuthority
().
equals
(
"SERVICE"
)))
{
boolean
onelife
=
json
.
optBoolean
(
"onelife"
,
false
);
String
generatedToken
=
jwtTokenUtil
.
generateToken
((
User
)
userDetails
,
json
.
optBigInteger
(
"ms"
,
onelife
?
BigInteger
.
valueOf
(
0
)
:
BigInteger
.
valueOf
(
3600000
)),
false
);
if
(
onelife
)
{
tokenSingleton
.
addToken
(
generatedToken
);
}
return
ResponseEntity
.
ok
(
new
JSONObject
().
put
(
"token"
,
generatedToken
).
put
(
"message"
,
"Genera
ted
"
).
put
(
"status"
,
true
).
toMap
());
return
ResponseEntity
.
ok
(
new
JSONObject
().
put
(
"token"
,
generatedToken
).
put
(
"message"
,
"Genera
do
"
).
put
(
"status"
,
true
).
toMap
());
}
else
{
return
ResponseEntity
.
status
(
401
).
body
(
new
JSONObject
().
put
(
"token"
,
""
).
put
(
"message"
,
"
Invalid Credential
s"
).
put
(
"status"
,
false
).
toMap
());
return
ResponseEntity
.
status
(
401
).
body
(
new
JSONObject
().
put
(
"token"
,
""
).
put
(
"message"
,
"
Credenciales invalida
s"
).
put
(
"status"
,
false
).
toMap
());
}
}
...
...
@@ -127,7 +127,7 @@ class tokenRest {
SimpleDateFormat
dateFormat
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
return
ResponseEntity
.
ok
(
new
JSONObject
().
put
(
"remaining"
,
remaining
).
put
(
"message"
,
"OK"
).
put
(
"expiration"
,
dateFormat
.
format
(
expirationDate
)).
put
(
"status"
,
true
).
toMap
());
}
catch
(
Exception
e
)
{
return
ResponseEntity
.
status
(
401
).
body
(
new
JSONObject
().
put
(
"remaining"
,
0
).
put
(
"message"
,
"
Invalid Token
"
).
put
(
"status"
,
false
).
toMap
());
return
ResponseEntity
.
status
(
401
).
body
(
new
JSONObject
().
put
(
"remaining"
,
0
).
put
(
"message"
,
"
Token invalido
"
).
put
(
"status"
,
false
).
toMap
());
}
}
...
...
@@ -158,29 +158,61 @@ class tokenRest {
JSONObject
json
=
new
JSONObject
(
tokenBody
);
String
token
=
json
.
getString
(
"token"
);
boolean
doConsume
=
json
.
optBoolean
(
"consume"
,
false
);
try
{
String
detokenized
=
jwtTokenUtil
.
detokenizeData
(
token
);
if
(
detokenized
.
isEmpty
())
{
return
ResponseEntity
.
status
(
498
).
body
(
new
JSONObject
()
.
put
(
"data"
,
""
)
.
put
(
"message"
,
"Token inválido"
)
.
put
(
"status"
,
false
)
.
toMap
()
);
}
if
(
jwtTokenUtil
.
isTokenExpired
(
token
))
{
return
ResponseEntity
.
status
(
400
).
body
(
new
JSONObject
().
put
(
"data"
,
""
).
put
(
"message"
,
"Token has expired"
).
put
(
"status"
,
false
).
toMap
());
}
else
{
if
(!
tokenSingleton
.
isTokenAvailable
(
token
))
{
return
ResponseEntity
.
status
(
400
).
body
(
new
JSONObject
().
put
(
"data"
,
""
).
put
(
"message"
,
"token has been already consumed"
).
put
(
"status"
,
false
).
toMap
());
}
else
{
String
detokenized
=
jwtTokenUtil
.
detokenizeData
(
token
,
doConsume
);
if
(
detokenized
.
isEmpty
()){
return
ResponseEntity
.
status
(
400
).
body
(
new
JSONObject
().
put
(
"data"
,
""
).
put
(
"message"
,
"Invalid Token"
).
put
(
"status"
,
false
).
toMap
());
}
else
{
if
(
doConsume
)
{
tokenSingleton
.
consumeToken
(
token
);
}
}
return
ResponseEntity
.
ok
(
new
JSONObject
().
put
(
"data"
,
detokenized
).
put
(
"message"
,
"OK"
).
put
(
"status"
,
true
).
toMap
());
}
return
ResponseEntity
.
status
(
419
).
body
(
new
JSONObject
()
.
put
(
"data"
,
""
)
.
put
(
"message"
,
"Token ha expirado"
)
.
put
(
"status"
,
false
)
.
toMap
()
);
}
if
(!
tokenSingleton
.
isTokenAvailable
(
token
))
{
return
ResponseEntity
.
status
(
419
).
body
(
new
JSONObject
()
.
put
(
"data"
,
""
)
.
put
(
"message"
,
"Token ya ha sido consumido"
)
.
put
(
"status"
,
false
)
.
toMap
()
);
}
if
(
doConsume
)
{
tokenSingleton
.
consumeToken
(
token
);
}
return
ResponseEntity
.
ok
(
new
JSONObject
()
.
put
(
"data"
,
detokenized
)
.
put
(
"message"
,
"OK"
)
.
put
(
"status"
,
true
)
.
toMap
()
);
}
catch
(
Exception
e
)
{
return
ResponseEntity
.
status
(
400
).
body
(
new
JSONObject
().
put
(
"data"
,
""
).
put
(
"message"
,
e
.
getMessage
()).
put
(
"status"
,
false
).
toMap
());
return
ResponseEntity
.
status
(
500
).
body
(
new
JSONObject
()
.
put
(
"data"
,
""
)
.
put
(
"message"
,
e
.
getMessage
())
.
put
(
"status"
,
false
)
.
toMap
()
);
}
}
@PostMapping
(
"/consume"
)
public
ResponseEntity
<?>
consumeToken
(
@RequestBody
String
token
)
{
JSONObject
json
=
new
JSONObject
(
token
);
...
...
@@ -188,7 +220,7 @@ class tokenRest {
if
(
tokenSingleton
.
consumeToken
(
json
.
getString
(
"token"
)))
{
return
ResponseEntity
.
ok
(
new
JSONObject
().
put
(
"message"
,
"OK"
).
put
(
"status"
,
true
).
toMap
());
}
else
{
return
ResponseEntity
.
status
(
400
).
body
(
new
JSONObject
().
put
(
"message"
,
"
Invalid Token
"
).
put
(
"status"
,
false
).
toMap
());
return
ResponseEntity
.
status
(
400
).
body
(
new
JSONObject
().
put
(
"message"
,
"
Token invalido
"
).
put
(
"status"
,
false
).
toMap
());
}
}
catch
(
Exception
e
)
{
return
ResponseEntity
.
status
(
400
).
body
(
new
JSONObject
().
put
(
"message"
,
e
.
getMessage
()).
put
(
"status"
,
false
).
toMap
());
...
...
src/main/java/web/multitask/trismegistoservices/services/BBVA/bbvaService.java
View file @
04a2dac9
package
web
.
multitask
.
trismegistoservices
.
services
.
BBVA
;
import
okhttp3.*
;
import
okio.Buffer
;
import
org.json.JSONObject
;
import
org.springframework.stereotype.Service
;
import
web.multitask.trismegistoservices.utils.CommonUtils
;
...
...
@@ -20,18 +21,25 @@ import java.util.zip.GZIPInputStream;
@Service
public
class
bbvaService
{
String
client_secret
=
"513375e5181e462fb3ec7a00dfc26dc7"
;
String
client_id
=
"174895823298"
;
String
grant_type
=
"client_credentials"
;
String
globalDate
=
CommonUtils
.
getCurrentDateRFC1123
();
public
JSONObject
getToken
(
String
json
)
{
try
{
JSONObject
obj
=
new
JSONObject
(
json
);
obj
.
put
(
"client_secret"
,
client_secret
);
obj
.
put
(
"client_id"
,
client_id
);
obj
.
put
(
"grant_type"
,
grant_type
);
obj
.
remove
(
"body"
);
String
host
=
obj
.
getString
(
"host"
);
String
formBody
=
CommonUtils
.
jsonToUrlEncoded
(
obj
);
OkHttpClient
client
=
new
OkHttpClient
();
Request
request
=
new
Request
.
Builder
()
.
url
(
"https://"
+
host
+
"/auth/oauth/v2/token"
)
.
url
(
"https://"
+
host
+
"/auth/oauth/v2/token"
)
.
post
(
RequestBody
.
create
(
formBody
,
MediaType
.
parse
(
"application/x-www-form-urlencoded"
)))
.
build
();
...
...
@@ -62,7 +70,7 @@ public class bbvaService {
}
public
String
txtToSign
(
String
json
,
String
digest
)
{
JSONObject
obj
=
new
JSONObject
(
json
);
JSONObject
obj
=
new
JSONObject
(
json
);
String
host
=
obj
.
getString
(
"host"
);
String
endpoint
=
obj
.
getString
(
"endpoint"
);
String
method
=
obj
.
getString
(
"method"
);
...
...
@@ -79,7 +87,8 @@ public class bbvaService {
}
public
PrivateKey
loadPrivateKey
(
String
path
)
{
try
(
InputStream
in
=
bbvaService
.
class
.
getResourceAsStream
(
path
))
{
try
(
InputStream
in
=
bbvaService
.
class
.
getResourceAsStream
(
path
))
{
assert
in
!=
null
;
String
keyString
=
CommonUtils
.
readInputStream
(
in
);
return
loadPrivateKeyFromString
(
keyString
);
}
catch
(
Exception
e
)
{
...
...
@@ -113,44 +122,77 @@ public class bbvaService {
}
public
JSONObject
generateQR
(
String
token
,
String
digest
,
String
signature
,
String
json
)
{
public
JSONObject
peticionHTTP
(
String
token
,
String
digest
,
String
signature
,
String
json
)
{
try
{
JSONObject
obj
=
new
JSONObject
(
json
);
JSONObject
body
=
obj
.
getJSONObject
(
"body"
);
String
host
=
obj
.
getString
(
"host"
);
JSONObject
jsonBody
=
new
JSONObject
(
json
);
String
host
=
jsonBody
.
getString
(
"host"
);
String
endpoint
=
jsonBody
.
getString
(
"endpoint"
);
String
extra
=
jsonBody
.
optString
(
"extra"
,
""
);
String
method
=
jsonBody
.
optString
(
"method"
,
"get"
).
toLowerCase
();
MediaType
mediaType
=
MediaType
.
parse
(
"application/json; charset=utf-8"
);
RequestBody
requestbody
=
RequestBody
.
create
(
body
.
toString
(),
mediaType
);
OkHttpClient
client
=
new
OkHttpClient
();
Request
request
=
new
Request
.
Builder
()
.
url
(
"https://"
+
host
+
"/pe/request-to-pay/v1/qr"
)
.
post
(
requestbody
)
MediaType
mediaType
=
MediaType
.
parse
(
"application/json; charset=utf-8"
);
RequestBody
requestBody
=
null
;
if
(
"post"
.
equals
(
method
))
{
JSONObject
body
=
jsonBody
.
optJSONObject
(
"body"
,
new
JSONObject
());
requestBody
=
RequestBody
.
create
(
body
.
toString
(),
mediaType
);
}
Request
.
Builder
builder
=
new
Request
.
Builder
()
.
url
(
"https://"
+
host
+
endpoint
+
extra
)
.
addHeader
(
"Content-Type"
,
"application/json"
)
.
addHeader
(
"Accept-Encoding"
,
"gzip"
)
.
addHeader
(
"Authorization"
,
"Bearer "
+
token
)
.
addHeader
(
"Digest"
,
"SHA-512="
+
digest
)
.
addHeader
(
"Signature"
,
"algorithm=\"rsa-sha512\",headers=\"(request-target) host date digest\",signature=\""
+
signature
+
"\""
)
.
addHeader
(
"Host"
,
obj
.
getString
(
"host"
))
.
addHeader
(
"Date"
,
globalDate
)
.
build
();
.
addHeader
(
"Digest"
,
"SHA-512="
+
digest
)
.
addHeader
(
"Signature"
,
"algorithm=\"rsa-sha512\",headers=\"(request-target) host date digest\",signature=\""
+
signature
+
"\""
)
.
addHeader
(
"Host"
,
host
)
.
addHeader
(
"Date"
,
globalDate
);
Response
response
=
client
.
newCall
(
request
).
execute
();
String
bodyResult
;
System
.
out
.
println
(
"x-request-id = "
+
response
.
header
(
"x-request-id"
));
if
(
response
.
body
()
!=
null
)
{
String
encoding
=
response
.
header
(
"Content-Encoding"
,
""
);
if
(
"gzip"
.
equalsIgnoreCase
(
encoding
))
{
bodyResult
=
decompressGzip
(
response
.
body
().
byteStream
());
Request
request
=
"post"
.
equals
(
method
)
?
builder
.
post
(
requestBody
).
build
()
:
builder
.
get
().
build
();
StringBuilder
requestInfo
=
new
StringBuilder
();
requestInfo
.
append
(
"URL: "
).
append
(
request
.
url
()).
append
(
"\n"
);
requestInfo
.
append
(
"Method: "
).
append
(
request
.
method
()).
append
(
"\n"
);
requestInfo
.
append
(
"Headers:\n"
);
for
(
String
name
:
request
.
headers
().
names
())
{
requestInfo
.
append
(
" "
).
append
(
name
).
append
(
": "
).
append
(
request
.
header
(
name
)).
append
(
"\n"
);
}
if
(
request
.
body
()
!=
null
)
{
try
{
Buffer
buffer
=
new
Buffer
();
request
.
body
().
writeTo
(
buffer
);
String
bodyString
=
buffer
.
readUtf8
();
requestInfo
.
append
(
"Body:\n"
).
append
(
bodyString
).
append
(
"\n"
);
}
catch
(
IOException
e
)
{
requestInfo
.
append
(
"Body: (error reading body)\n"
);
}
}
System
.
out
.
println
(
requestInfo
);
try
(
Response
response
=
client
.
newCall
(
request
).
execute
())
{
System
.
out
.
println
(
"x-request-id = "
+
response
.
header
(
"x-request-id"
));
String
bodyResult
;
if
(
response
.
code
()
==
204
)
{
bodyResult
=
"{}"
;
}
else
if
(
response
.
body
()
!=
null
)
{
String
encoding
=
response
.
header
(
"Content-Encoding"
,
""
);
bodyResult
=
"gzip"
.
equalsIgnoreCase
(
encoding
)
?
decompressGzip
(
response
.
body
().
byteStream
())
:
response
.
body
().
string
();
}
else
{
bodyResult
=
response
.
body
().
string
()
;
bodyResult
=
"{}"
;
}
}
else
{
bodyResult
=
"{}"
;
System
.
out
.
println
(
bodyResult
);
return
new
JSONObject
(
bodyResult
);
}
System
.
out
.
println
(
bodyResult
);
response
.
close
();
return
new
JSONObject
(
bodyResult
);
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
e
.
getMessage
());
return
new
JSONObject
().
put
(
"status"
,
false
).
put
(
"message"
,
e
.
getMessage
());
...
...
@@ -159,13 +201,16 @@ public class bbvaService {
private
String
decompressGzip
(
InputStream
compressed
)
throws
IOException
{
try
(
GZIPInputStream
gis
=
new
GZIPInputStream
(
compressed
);
BufferedReader
reader
=
new
BufferedReader
(
new
InputStreamReader
(
gis
,
"UTF-8"
)))
{
BufferedReader
reader
=
new
BufferedReader
(
new
InputStreamReader
(
gis
,
StandardCharsets
.
UTF_8
)))
{
StringBuilder
sb
=
new
StringBuilder
();
String
line
;
while
((
line
=
reader
.
readLine
())
!=
null
)
{
sb
.
append
(
line
);
}
return
sb
.
toString
();
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
e
.
getMessage
());
return
""
;
}
}
}
src/main/java/web/multitask/trismegistoservices/utils/tokenUtils.java
View file @
04a2dac9
...
...
@@ -4,6 +4,7 @@ import java.io.Serializable;
import
java.math.BigInteger
;
import
java.util.Date
;
import
io.jsonwebtoken.ExpiredJwtException
;
import
io.jsonwebtoken.JwtBuilder
;
import
org.json.JSONObject
;
import
org.springframework.beans.factory.annotation.Value
;
import
io.jsonwebtoken.Jwts
;
...
...
@@ -38,39 +39,46 @@ public class tokenUtils implements Serializable{
public
String
tokenizeData
(
String
data
,
BigInteger
ms
,
boolean
onelife
){
Date
expirationDate
=
new
Date
(
System
.
currentTimeMillis
()
+
ms
.
longValue
());
return
Jwts
.
builder
()
.
setSubject
(
data
)
.
setIssuedAt
(
new
Date
())
.
setExpiration
(
expirationDate
)
.
signWith
(
Keys
.
hmacShaKeyFor
(
onelife
?
jwtSecret2
.
getBytes
()
:
jwtSecret
.
getBytes
()))
.
compact
();
JwtBuilder
jwtBuilder
=
Jwts
.
builder
();
jwtBuilder
.
setSubject
(
data
);
jwtBuilder
.
setIssuedAt
(
new
Date
());
if
(!
ms
.
equals
(
BigInteger
.
valueOf
(
0
))){
jwtBuilder
.
setExpiration
(
expirationDate
);
}
jwtBuilder
.
signWith
(
Keys
.
hmacShaKeyFor
(
onelife
?
jwtSecret2
.
getBytes
()
:
jwtSecret
.
getBytes
()));
return
jwtBuilder
.
compact
();
}
public
String
detokenizeData
(
String
token
,
boolean
doConsume
){
public
String
detokenizeData
(
String
token
)
{
String
tokenReturned
=
""
;
try
{
tokenReturned
=
Jwts
.
parserBuilder
()
.
setSigningKey
(
Keys
.
hmacShaKeyFor
(
jwtSecret
.
getBytes
()))
.
build
()
.
parseClaimsJws
(
token
)
.
getBody
()
.
getSubject
();
}
catch
(
Exception
e
){
try
{
tokenReturned
=
Jwts
.
parserBuilder
()
.
setSigningKey
(
Keys
.
hmacShaKeyFor
(
jwtSecret2
.
getBytes
()))
try
{
tokenReturned
=
getSubjectIgnoringExpiration
(
token
,
jwtSecret
);
}
catch
(
Exception
e
)
{
try
{
tokenReturned
=
getSubjectIgnoringExpiration
(
token
,
jwtSecret2
);
}
catch
(
Exception
e2
)
{
System
.
out
.
println
(
"No se pudo decodificar el token con ninguna clave: "
+
e2
.
getMessage
());
}
}
return
tokenReturned
;
}
private
String
getSubjectIgnoringExpiration
(
String
token
,
String
secret
)
{
try
{
// Parsea normalmente
return
Jwts
.
parserBuilder
()
.
setSigningKey
(
Keys
.
hmacShaKeyFor
(
secret
.
getBytes
()))
.
build
()
.
parseClaimsJws
(
token
)
.
getBody
()
.
getSubject
();
}
catch
(
Exception
e2
)
{
System
.
out
.
println
(
e2
.
getMessage
());
}
}
catch
(
ExpiredJwtException
e
)
{
// Si está expirado, aún así devuelve el subject
return
e
.
getClaims
().
getSubject
();
}
return
tokenReturned
;
}
public
String
generateDataSource
(
JSONObject
json
){
String
dataReturned
=
""
;
...
...
src/main/resources/tokens/key.p8
View file @
04a2dac9
-----BEGIN RSA PRIVATE KEY-----
MIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQD
VIDkTVL8M/Dk/
quE7vJTb/UO3POzi/rpv12e8aDHTLt41HgrIqEhcepiYTzo3hlQE5FmfhUG2StDP
gFVmnLBeQnMdiExENqfLGmvJoIH0mPgYV5Abk0O+yBelS4GUMg8FOxnWykSkWAm4
gm+J2xLhNcQvApGawJvIg7nhj8NHxx2kfrZyihJeY7ZySZHmpRPuDPKuHpssnZjJ
Coo4jY4TpjmgImYIlCXlvSx5Qe3INTyLZEzcSALno1saT+4bI3sk4tB/QVnjBHtD
vwkTeSUYVA/PoGy76gEyv42hGyIMrMnlq29f5/Fu6wjKPYjYK8B1t+xKWmaabVun
3BmwipKfxXpEZQr49w1tJp9Zvg4r5VUxLB+rtp4dDFDTR5bBuJuLm6wmnWGKRBlL
eNOOsUAZHGkgfJmgl9F8KGo//hbKkaDg/QV0HmHOPOpFmMb3HH8KymyPt3mjxcyo
hwyaScpXdCAx1lSaiCelvo7ykU9fbeNCwwizoBlV0WmNdSz2Hgu6UTSj8V9uvMPS
4kl3W/arD/7Sy+idncYu/6hplOyOJ0FYkiyINi7kmiXOyEO/QX73FqwfiCwEh8+
y
Q0qginuVACfetj81RxrwkyvuF/kK24WUZP0ELvirJzuqaKy6r9RiPElM78GmI3L8
HdxJa/lovp7yRbbu4Fu7BWKj0lLJ2wIDAQABAoICACrlpHdOnHG5prA47cK/T1sE
HAgavDdoPBBc0+VpN3YhPdqFJHiE3qO2jVZCxB3+7JRbfeqMwNA3ONY7J3VS3nDq
gQ8Vqvwj4BwSQlW/98hKrc0AeuIB/yW8Un4Tt44jkUBlR+sipTRLABHiNx8RODia
QNWRd8slL3XphZVwAUdGPaIpWwGs5suW2FcilbpNybglZQdE48jUI7d7ZpzBaTJt
R7YClnTtlL8sF3KEoZ6lkH0iABJqcCM9jw25vtw5hQTEnmCuv6/g7AqTvfjsbln6
OYB58sjT7c/QHGqr8muIr86Jdg5gugiwSAGk5xFTpRZMocPJdFNq5YLg207cZWxj
Gl+P2mxgYHEUroipm+2PyqqX/btLwmrx+EsAKH15sJnrbs7IYJ0Q2jJErSuORLH8
43kxpF7ESzwUr+7iEpBFYEMhcDwzOGLv9KrHIo5RlLf93136EQ0sHBdElf44Flv3
gicsjxeLVTHO1kUgdPanJkZuDmArVqAwLlqUpxV1Lh0zqVVZuHOEwVmSXTyNZlSz
5a11FbFXt07mt7KfL633S8FNN8TvV306yeWE/L2+l5vi1U877DLXQK49o23whhTV
wdgqRhVbqpC3foYC3pDc5UZ4IO89lFIuw81fW7DCFPM2PLOqxJ4QhzcT2O8Dwhhl
mpkAIHHWRsDsXU/0vodRAoIBAQDwcUSrpMjOKWBLKNDkLJp6M834D5rJgQlnUPg9
iE7s7/ekqWseP/ThTnHCqU68Pqk59oovgTuUdaS30ObRKhCNlbXLajMq2kE03O1A
m/bvLiSl9DrhuwXkV5ewH5PBt16046f1+4FyKur8tzGPZVj4lOSNyO+rYM3PX4NE
71sDb9WdfbhQYCKodxNcoL8wX2JFgH0Ek0IsKhf/OZM4REUu/5+2crAN/p58qoLU
PCZT7U+EuYx/isq9IfjMBJp8bEHdr7hmmw4tfp17CmMQAZUql8Mbf4b7Gek6web+
7
/xwFff56jdg3BShvXnmSpao80zXKm6K7RGKu2w6/eph4ONZAoIBAQDi6npajn4L
ajP/yATDW3sHLdblayhmPUJydWLSj9LggxUyUwQEgkzfJgDqoi6AYg91Wddj/BxD
HH1BmDYvKtKqAN+C+T/p80vk88WIclAwrDfQ1muXVKEoSdG71BJZVJYVYfE+mn+H
Mb9HSPToVXEZM3pSk7xkh46IU4oU4g9i95qv+lwwf2svWx9cOn0BPyx9rCr9jdzS
zr//tAlnsbbGqEv8DpK3SfBAoCUaMtKFov7L+KDJ9KRx3Hx2headwAobzKtdR5Z
x
n6e6T+WitU5OFefZirK8rgfdkjutGS1g/nP6hxqJZiTmvMFT9iwBH+rjL4edzhOf
KvzP+mfZszRTAoIBAQDv+u1iL5cohY2RloxfoNER9RC3bMO+KOc80kjiCWFVBPFz
zJCYYZdFJSlP8/Ic2qHGs3Yake7obz7XJE6sJ0LcPbdz7mxhcfMxEuxN1xzwfmqf
pJL8Z9Eqpe5FIE82QpHpE2u5jKwXShS95Q43JB1YBivUA+CKeZURTDBVplx9oqpf
hXJn7nvJDwgpJFuOqTUJT4P4BA5AzEalO07gEuvGS+aZkAB+B0sh/IGV2O8cRzhd
rWA4kEtn2DddUZ7rXpWi8Naouku9Rqlhe+2BtUKvf0eB85fCmYr6VTv76YVYTeTx
8D4Tk7WX9Ohs3Ldgq21fN/+a86DVidktS+8af/4JAoIBAHygP1bhD8UBLVH77vHE
motU18Pk2KleV9I5Om9e4njARbH/+iLn1YRxgOtc66FDOi4/i5a0bmlFil2uVYQO
Rulr1VY/wqShJTu3zvOjpPs2eulN+oWAy4ovEOvSC8nYNR3FTxQNEqGT5vQl06yO
0LEAntwfm8ay1Mt25k2V4tF+IA0qudtBAANgTpb+4I0Av1S+bFYZxgBZ4QV1Qf0b
k8EDycfD0TytdTBpRDdhVlJjNQGdqeGBZZfLeug1nnVhdavS+wMeQDhjcWFYZEy6
uykTyuSl0ojiJBvDJtdpDo1I8zXTYfW4jefUH3IXsA9mEkF4Z0l6VziCCZvIcaUV
UVUCggEBAN4tvBUf1IX5shxoDjBcte+UwYovZhmnfjgRKASjir4vAVm42FNCsgFc
IOtuOsvctXAoeyKM0aq0sBLYy1SE/HDqrsEGFWA8Bwv1TrbFN3iXjyCZcwgrKKVj
kRZJGV6m38RNQfm2GKeYaBh7Qa9m7S+fb5xILRQGPNzHJsV+nthp9lQo9zKev4yQ
kNIKnLvkFzhgUcdz0QGro/UQot2BeYSVdOQGTfKVwfaQrzERRH7TxsPpeNdy2byG
F
u28XFnxpu8af76rhja22Jz7nAFYHLuHp4KFMEN7rjb4LuF6a/ThrBMpwTpLIle
p
PnpOxl5jWjhzfwkOcU5V+qBdkCd+fWo
=
MIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQD
GI3Ro7kPh3pmd
hLzI4cdonCVRVMF+KnsmRqIzzcN9sDPa212yM5fUwaVD8IfG7rSECRteGswNzZAT
ivc/5Ephm6DtxZ2Ww92MF0AMb115Aup42Lpa/SepDQm0SwP5XkLk+qV82KyDSbfx
AwhFGwgpBCBk6UxoU7hRxq/RDS+MagVQKT7kza5rlIN3G5kTy8WTyQXZ2YX8jBbB
sEAoLyFC7ICyOv4Wp3LiI0wAJ+zLsIWp6eQcKukr0GwNDSpwg4FlAOnNqFnymv7m
hlMHjZegCNb5LxMzCIw/YgfDGkPcZWHNRnWe11VlwwVNl/WqJYTItxoroSGPij2u
8wpgH05rhlQm8YEL0WDPyn2eVXjBPvGz9knVSEjVorK0mSYEqOCPyoLwCEJCyk8Z
huVSh6ZbIYNN7R6QJShTYwv0BHBFdErYYQCzKVDu5UYGfNmK7GYM/PYHnetl9+mr
sbiAtGpX90cVswPX2dtTbodxlO/KUUTGyFJGYz4uqKkm5QKt+vgv4zCz8hrH4rml
1snljsXDETF1pN7oKcheRMWKiwyHm/Z9ePSjq1aI5T4MBIGzxUCdsTNIzgc1UO9
y
AlbgJK7jKnpf5xo7DJXEbLPWK/AusCgB+E6GEjuPiwiwjgV+V7mRgFqDVIiMPM+i
jzMYyMFJNHkzI84oC7vkwMQ1n3zuQQIDAQABAoICAQCIV5NeNT6e6ZdZTiK+NKcM
NA511dXD5KWTZB1velLgZWR5YGQsINaEv6/ifVxhJpcvGDkt21C42tAesoyK+aO5
YOcvVsGnIiaMpN8c73EpuTjxaWlq/TLSYDdiShB1A0kS2esQauTi/tJFVWnWa9CE
sOM9rVA3pgx6sTcAqosimz4GuCsgNOyl+K8yQdpnRdwyYqzVCJrretaZ95deT3ga
3jV8750yp40lUVaV8ONAErsXfevK+jgzPxtrK7kdbVCX2TYJn6QtjjyDEsGFvAgv
RoXvOFaE0of3gZSHy8YQne7b23VKlTCdcsJub3fL2j9yApVOmnVGmcDyZymnlUNX
AWCW4r6ZNKO8ftgQB4B7fwEakG2CQcIk2+eP2fMmLvBV44jloBap3z0HrXZSim3f
ZiVIWur5AsyouQ04H4KzN9NAV/CbFt0QcJyHeo3py3/BbrpmGxqVhBUd7cplVxwn
mn9GELmI/KBAeLW4vMaXjObUf4ZM+u3cx5YBYSO5by+YfVbNdr48tX4hTeY44d30
F4fmRUgKrwaqw7j0YacGGzro7eNhwXSrP+JcF5fgCJxdbOQ1rrYyKhF1YOiC9vmL
kH3JjcUHxMFOe89HbmhCDZ0NPmjrBW6Cr6HpVSk7qoanfxCbp78d/Vu49HMX+jM2
qNAk+5zF0XAx/rtriu03wQKCAQEA0LkUgWNrdCMRUAKNJEIdfyp36POU8K0Rr4jL
I7yZOofBlku0Q27InxFSF5j5pIeTLgZVYLkSTGNTLdQCvQPIwPa8Q7NLlMbMuONP
AoexhjVd3/fr1TCV6aVEPuAKomcs543xJbWonGMtY07PQ9Hn6Oou/Ffct31W4GzV
EBj6tlDa945MOWRyhkGVqsIFmSyup5fO+M4oRGbesrpZE3UQtmhYE9QJ5iwfxAmL
RwTqojtcD5lTpvHXGzEQMi8/hpRH3x0RlN9L8z+yZ6RJAf+Rl40+LbtBtYOLuHzz
7
Z9NxsqtfX2jzLVF9aglV6MbZssCUWg3y91xxqdllIa+8b42mQKCAQEA8wSgvQak
VibAupEk9fgPa85JlQxZSiKvQhhd5qHz4st4G17JmCwBPV+ED7tWTM+9heQOWe9Q
wLJchH+9Y+eQbIPsXfckXD5MICzg+rZHUFlVvjL7WEheLaTmxVHd9ipjy72Fn2v/
/JtGckYqJpF/ukKYcSFSyAYfVunwtYJRygmrky3b4qz+Jv7vl/DhRSmxVFdX3LT2
yH79XlqNX9gLHNcP0ERHy2hWxK2I8XaLIjZRyRoDk9ZkVWMyCr/0luz93ROTy2r
x
rWlI1Tat4VH7j+BIKxDq0/oBXou1aT9OPUe662Ok5+AjqimSGERM8HTN+tR1YDrF
2GrhsQgbb5ZF6QKCAQA8RcXrGzeTYPEF5sa1OrZj23Km/Xf8DC44P0tR9YtWAI/h
g9j5RAuBC7JmCBHG9jOFLeUHuknTbzc826Uyyd32AwoYjrT7sHC7z0AoneCgvdZu
75vVg2M3Bjdv5KiNfzfTYgTJ++xFxMn9jGuDzSCn/MA2tHSTNAmbYzIfpOb5MN4a
cKgIRr5fkJ7UoZSWR/XjhY4KARZVslMKz48bdEmwMu+EQk3dfs5pgMwMZRoQYQ3T
n1YttlaEjqV7qHMyvK0Ie89w6w52nuU40pMWlaOIXQwgjpuJ/AOj8clKzB7ckfiJ
bXeYjJw4NScbaIloJKV1tp+uKjNJx1spCcQn8OK5AoIBABG5iK/AyEOwV+ZDp9p4
2UcXqK5CVFDf7sB3XoHv1gX4qS313+ZFb2G2kb9D/qtji4M0ewd8OPuVBsJzPrEG
trXzeU3xNKm1sX+3RkGDAfiOS36v4T0zKgtSN7K0oefOd7DohdJ24hjeimjTTUe6
3QIM0WmO8Ka+K5L/RRs4AhcmVWlKsvr5eyAFAByo6QVOYSyxoirq2AUPnhM/r4gK
DeVwmiqqkEH5vjpiHdbeuo8oPxbX2uLxhCfmMEQwc/p+FpYFU4ZGqpHnV/SVJGGG
xT5dMWZSuY30ch0fO4ANqfs2PB/nCKQQ6QkENy+l66auHkfpLxZxsvRx9zweR0IA
R+ECggEBAJLGO/CQ9X735PFtIjTMAjgEF3j5R2AyHJoc1RqIE6qLczPPPO4i9uXB
s4WOjfP0G/X6/9nyM+BnKs7QpJEwZHmppaZ5ukjZhnuVrYMLeHTJw276NXqtdToI
PXcLyKIqrqCYkk9o2+bRFH3U52YldI2O9mPv4+9MYHVCLBESlHhwBw5llyFrqkYw
jp3xNensd+/UqY/CjymD5fVxJN03nnBTFMHeXVLRO43Xc6zV5scC8EOehSKs6NIc
F
OYDTTLs3XMdS4tykRAwQ2OpnEs1Fk6w3Q6xmr8KvNlfh3DxFvW2gVryezKta0E
p
0GMizk9iG+w4xxSK0eWBPYKtS4NBPxw
=
-----END RSA PRIVATE KEY-----
\ No newline at end of file
src/main/resources/tokens/serviceAccount.json
deleted
100644 → 0
View file @
283692e4
{
"type"
:
"service_account"
,
"project_id"
:
"trimegisto-planilla"
,
"private_key_id"
:
"ec3ed783ba6ce35de0367caacbff70b35baa4d8e"
,
"private_key"
:
"-----BEGIN PRIVATE KEY-----
\n
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDYi4NVOq7o5axq
\n
XpfiHaMUhpfDfty56AkzjD3mf9phPar3OsCtudKjNFt4S5i3IhBRXq8ytfV0h5F5
\n
FF+cNOZKacTCv66vT3hUS2qvWdlsm+0LKZEGWXMBRAJfQUroCxQP37jd7am+rFCA
\n
ioGRR2+n3a++HRa/y1olV2uY3rJFd35yFCi1oS9ObjxzFCWM2kHemM1XBjUWDbFf
\n
ynC/PEj1lv1ASVIO5wr9iL6ZXlLItmewmWd1ZvLfV9dcpvZSOhK1AaPIy1CQcSkh
\n
y6ul5c6TPK7XZEMs23kSy7mSKitTVQrnzu1qn0szxVqYyI8eqVbfgsoXShaf4kWh
\n
vsyo9kzBAgMBAAECggEAIXRkZO19ClQ5b/GPS4rCoDAvEC/wT/RuP32CLrM//Nf3
\n
Ktzz2aMkzLwRCaO8Q0bK+JdFP/NmqYssSWWBY/O0RHjUwjW0+jav424HXHHoKmRo
\n
mdnhIvb80ow8RZUjynezsMQinn7SQ7gBc+pyHAzKTkfsl9WMpzL2iWBZKjP1nM+R
\n
hAJXYTKPdPX4aOEo/CldvoU23lfxhhMM8aCcKWb9kpu/W5qdInhh8FnJZdRk+Ad3
\n
ziJQRJvzLGCvxbCjYwNQbybjMFH3vJQp/jvcA9JluxQQfFfqCZd7bON+r+aDFALR
\n
Ly/TFAwtLcB6ggXx2Gm//1QIdwWImFoFaoFcceSxxQKBgQDsfeoqs1tsNFw76l/O
\n
UkxIp8wqwxgvbmxA9bshZE4xiE76HOWJ3SVCPCmW984hVzwzh85vcdWQeHakrorG
\n
J5d8HnR83/MItiJRB9GD8o8HuhRkEjGYymgtzCuln2HmNJrUfkoYF8QLEN3ctQrd
\n
49vxKjs8hMlsScqSfjjFXPU56wKBgQDqaF9oSfqz6xT56dS7n4ehLZ9Q/2qmaOL5
\n
gxOwfu4388IvZswpJ/v6Pieps5IYMv1bFNc/I7+1x7IKI/K+7bVWblEEpQEJdqQj
\n
QradiCTASaafKGbq+ObqyG9kSm/NT7r3VCDhDwNe1TchL5tPOFWxVJfIwrgY9Nw2
\n
ZlRSTtUdAwKBgFNDWcjC8TM9lCO8NxMLQrRp76Y2njNE63RLkCEHkcg6t6OzvNU3
\n
OUECsZnnkXmHnzh9Xh86svh0kUEV+uIdWmZmypiUuJqelaJ14DxWkCkmSLua9D9Z
\n
NCi7s7pSTUOhzcl21Vt6Mpm6zIJCc5r/+JYGSmjaT5iCuoGtUwuZ2PUVAoGBANRu
\n
rHA2A0cEd+kY+Zrjs6XlU6mzH/MZwQFAwhpEnh0FAum0breprdkWdRl9TJwzsZnW
\n
pE9rVXUnOfmopHhVsu5WYYQlCXCLHat67UaMuEmvNZqtob+2vIbwCMtKDlJxvE4i
\n
5v0vfu11q1We8FB2DGr97+SYWwD6/4spZ6eEG+0DAoGARXQLveeSo4OVpbg29eQ9
\n
0bPOfYKjF7vNAGf0yDB19fgrQmz/MxaN0KKfIqXb91kFL2TZg9ekwNwN42cH0TJU
\n
lvIXfOjF4oXcCC1x2b5J7a3FlLrYGJZXiWapF0rg9KtvsfnEFwfucwvfWG6tOYh9
\n
3UgwfMV9qHCMRN1tvfbzXJo=
\n
-----END PRIVATE KEY-----
\n
"
,
"client_email"
:
"tp-services@trimegisto-planilla.iam.gserviceaccount.com"
,
"client_id"
:
"109307993437397271961"
,
"auth_uri"
:
"https://accounts.google.com/o/oauth2/auth"
,
"token_uri"
:
"https://oauth2.googleapis.com/token"
,
"auth_provider_x509_cert_url"
:
"https://www.googleapis.com/oauth2/v1/certs"
,
"client_x509_cert_url"
:
"https://www.googleapis.com/robot/v1/metadata/x509/tp-services%40trimegisto-planilla.iam.gserviceaccount.com"
,
"universe_domain"
:
"googleapis.com"
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment