mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-05-03 16:28:01 +00:00
This new converter takes a JSON Web Token, an algorithm (among the ones specified for JWS tokens in RFC 7518) and a public key or a secret, and it returns a verdict about the signature contained in the token. It does not simply return a boolean because some specific error cases cas be specified by returning an integer instead, such as unmanaged algorithms or invalid tokens. This enables to distinguich malformed tokens from tampered ones, that would be valid format-wise but would have a bad signature. This converter does not perform a full JWT validation as decribed in section 7.2 of RFC 7519. For instance it does not ensure that the header and payload parts of the token are completely valid JSON objects because it would need a complete JSON parser. It only focuses on the signature and checks that it matches the token's contents.
38 lines
1.4 KiB
C
38 lines
1.4 KiB
C
/*
|
|
* include/haproxy/jwt.h
|
|
* Functions for JSON Web Token (JWT) management.
|
|
*
|
|
* Copyright (C) 2021 HAProxy Technologies, Remi Tricot-Le Breton <rlebreton@haproxy.com>
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation, version 2.1
|
|
* exclusively.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*/
|
|
|
|
#ifndef _HAPROXY_JWT_H
|
|
#define _HAPROXY_JWT_H
|
|
|
|
#include <haproxy/jwt-t.h>
|
|
#include <haproxy/buf-t.h>
|
|
|
|
#ifdef USE_OPENSSL
|
|
enum jwt_alg jwt_parse_alg(const char *alg_str, unsigned int alg_len);
|
|
int jwt_tokenize(const struct buffer *jwt, struct jwt_item *items, unsigned int *item_num);
|
|
int jwt_tree_load_cert(char *path, int pathlen, char **err);
|
|
|
|
enum jwt_vrfy_status jwt_verify(const struct buffer *token, const struct buffer *alg,
|
|
const struct buffer *key);
|
|
#endif /* USE_OPENSSL */
|
|
|
|
#endif /* _HAPROXY_JWT_H */
|