Rodrigo Silva
01/03/2023, 8:30 PMKevin Del Castillo
01/03/2023, 8:31 PMRodrigo Silva
01/03/2023, 8:32 PMJúlio Santos
01/03/2023, 8:32 PMJúlio Santos
01/03/2023, 8:33 PMJúlio Santos
01/03/2023, 8:34 PMJúlio Santos
01/03/2023, 8:35 PMRodrigo Silva
01/03/2023, 8:36 PMJúlio Santos
01/03/2023, 8:38 PMRodrigo Silva
01/03/2023, 8:39 PMcall.answer(200, jwt.encryp()
there are two functions, which, given a string, encrypt or decrypt it.
``````Rodrigo Silva
01/03/2023, 8:40 PMfun String.encrypt(): Result<String> = runCatching {
val cmsEnvelopedDataGenerator = CMSEnvelopedDataGenerator()
val jceKey = JceKeyTransRecipientInfoGenerator(keysCert().getOrThrow().first)
cmsEnvelopedDataGenerator.addRecipientInfoGenerator(jceKey)
val message = CMSProcessableByteArray(this.toByteArray())
val encryptor = JceCMSContentEncryptorBuilder(CMSAlgorithm.AES256_CBC).setProvider("BC").build()
Base64.getEncoder().encodeToString(cmsEnvelopedDataGenerator.generate(message, encryptor).encoded)
}.onFailure {
it.message
throw it
}
fun String.decrypt(): Result<String> = runCatching {
val envelopeData = CMSEnvelopedData(Base64.getDecoder().decode(this))
val recipe = envelopeData.recipientInfos.recipients
val recipientInfo: KeyTransRecipientInformation = recipe.iterator().next() as KeyTransRecipientInformation
String(recipientInfo.getContent(JceKeyTransEnvelopedRecipient(keysCert().getOrThrow().second)))
}.onFailure {
it.message
throw it
}
Júlio Santos
01/03/2023, 8:41 PMJúlio Santos
01/03/2023, 8:41 PMRodrigo Silva
01/03/2023, 8:42 PMJúlio Santos
01/03/2023, 8:43 PMRodrigo Silva
01/03/2023, 8:43 PMfun Application.configureSecurity() {
authentication {
jwt {
val issuer = hoconProperty("jwt.issuer")
val jwkProvider = JwkProviderBuilder(issuer)
.cached(10, 24, TimeUnit.HOURS)
.rateLimited(10, 1, TimeUnit.MINUTES)
.build()
val jwtAudience = hoconProperty("jwt.audience")
realm = hoconProperty("jwt.realm")
verifier(jwkProvider, issuer) {
acceptLeeway(3)
}
validate { credential ->
if (credential.payload.audience.contains(jwtAudience)) JWTPrincipal(credential.payload) else null
}
}
}
}
Júlio Santos
01/03/2023, 8:45 PMJúlio Santos
01/03/2023, 8:46 PMRodrigo Silva
01/03/2023, 8:47 PM