8000 JWT base64url encoding (#7899) · arangodb/arangodb@dd040ac · GitHub
[go: up one dir, main page]

Skip to content

Commit dd040ac

Browse files
Lars Maierneunhoef
authored andcommitted
JWT base64url encoding (#7899)
* Use base64url encoding and decoding for jwt header and body as specified in the rfc. * Added changelog.
1 parent 423cf7a commit dd040ac

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

CHANGELOG

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
devel
22
-----
33

4+
* Use base64url to encode and decode JWT parts.
5+
46
* updated bundled curl library to version 7.63
57

68
* Added --server.jwt-secret-keyfile option.

arangod/Auth/TokenCache.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ std::shared_ptr<VPackBuilder> auth::TokenCache::parseJson(std::string const& str
252252

253253
bool auth::TokenCache::validateJwtHeader(std::string const& header) {
254254
std::shared_ptr<VPackBuilder> headerBuilder =
255-
parseJson(StringUtils::decodeBase64(header), "jwt header");
255+
parseJson(StringUtils::decodeBase64U(header), "jwt header");
256256
if (headerBuilder.get() == nullptr) {
257257
return false;
258258
}
@@ -287,7 +287,7 @@ bool auth::TokenCache::validateJwtHeader(std::string const& header) {
287287

288288
auth::TokenCache::Entry auth::TokenCache::validateJwtBody(std::string const& body) {
289289
std::shared_ptr<VPackBuilder> bodyBuilder =
290-
parseJson(StringUtils::decodeBase64(body), "jwt body");
290+
parseJson(StringUtils::decodeBase64U(body), "jwt body");
291291
if (bodyBuilder.get() == nullptr) {
292292
LOG_TOPIC(TRACE, Logger::AUTHENTICATION) << "invalid JWT body";
293293
return auth::TokenCache::Entry::Unauthenticated();
@@ -369,8 +369,8 @@ std::string auth::TokenCache::generateRawJwt(VPackSlice const& body) const {
369369
headerBuilder.add("typ", VPackValue("JWT"));
370370
}
371371

372-
std::string fullMessage(StringUtils::encodeBase64(headerBuilder.toJson()) +
373-
"." + StringUtils::encodeBase64(body.toJson()));
372+
std::string fullMessage(StringUtils::encodeBase64U(headerBuilder.toJson()) +
373+
"." + StringUtils::encodeBase64U(body.toJson()));
374374
if (_jwtSecret.empty()) {
375375
LOG_TOPIC(INFO, Logger::AUTHENTICATION)
376376
<< "Using cluster without JWT Token";

0 commit comments

Comments
 (0)
0