libwebsockets
Lightweight C library for HTML5 websockets
Toggle main menu visibility
Loading...
Searching...
No Matches
lws-jwt-auth.h
Go to the documentation of this file.
1
/*
2
* libwebsockets - small server side websockets and web server implementation
3
*
4
* Copyright (C) 2010 - 2026 Andy Green <andy@warmcat.com>
5
*
6
* Permission is hereby granted, free of charge, to any person obtaining a copy
7
* of this software and associated documentation files (the "Software"), to
8
* deal in the Software without restriction, including without limitation the
9
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10
* sell copies of the Software, and to permit persons to whom the Software is
11
* furnished to do so, subject to the following conditions:
12
*
13
* The above copyright notice and this permission notice shall be included in
14
* all copies or substantial portions of the Software.
15
*/
16
17
#if !defined(_LWS_JWT_AUTH_H_)
18
#define _LWS_JWT_AUTH_H_
19
20
#define LWS_SSO_MAX_COOKIE 4096
21
struct
lws_jwt_auth;
22
23
/* States emitted via the callback */
24
#define LWS_JWT_AUTH_STATE_REAUTH 1
25
#define LWS_JWT_AUTH_STATE_EXPIRED 2
26
27
typedef
int (*
lws_jwt_auth_cb_t
)(
struct
lws_jwt_auth *ja,
int
state,
void
*user);
28
29
/*
30
* The "pur" claim the lws auth server signs into its session and device
31
* tokens, and that its in-tree relying parties (lws-login, deaddrop, hls,
32
* oauth-preauth, dht-dnssec-monitor, the auth server itself) require. Any
33
* other kind of token signed with the same jwk carries a different purpose,
34
* or none, and is refused by them.
35
*/
36
#define LWS_JWT_AUTH_PURPOSE_SSO "sso"
37
44
struct
lws_jwt_auth_info
{
45
struct
lws_jwk
*
jwk
;
47
const
char
*
cookie_name
;
49
const
char
*
iss
;
51
const
char
*
aud
;
54
const
char
*
purpose
;
61
lws_jwt_auth_cb_t
cb
;
63
void
*
user
;
65
};
66
82
LWS_VISIBLE
LWS_EXTERN
struct
lws_jwt_auth *
83
lws_jwt_auth_create_via_info
(
struct
lws *wsi,
const
struct
lws_jwt_auth_info
*i,
84
const
char
**reason);
85
118
LWS_VISIBLE
LWS_EXTERN
struct
lws_jwt_auth *
119
lws_jwt_auth_create
(
struct
lws *wsi,
struct
lws_jwk
*jwk,
120
const
char
*cookie_name,
121
lws_jwt_auth_cb_t
cb,
void
*user,
122
const
char
**reason);
123
133
LWS_VISIBLE
LWS_EXTERN
int
134
lws_jwt_auth_query_grant
(
struct
lws_jwt_auth *ja,
const
char
*service_name);
135
144
LWS_VISIBLE
LWS_EXTERN
const
char
*
145
lws_jwt_auth_get_sub
(
struct
lws_jwt_auth *ja);
146
154
LWS_VISIBLE
LWS_EXTERN
const
char
*
155
lws_jwt_auth_get_did
(
struct
lws_jwt_auth *ja);
156
164
LWS_VISIBLE
LWS_EXTERN
uint32_t
165
lws_jwt_auth_get_uid
(
struct
lws_jwt_auth *ja);
166
174
LWS_VISIBLE
LWS_EXTERN
uint64_t
175
lws_jwt_auth_get_exp
(
struct
lws_jwt_auth *ja);
176
184
LWS_VISIBLE
LWS_EXTERN
uint32_t
185
lws_jwt_auth_get_sec
(
struct
lws_jwt_auth *ja);
186
192
LWS_VISIBLE
LWS_EXTERN
uint32_t
193
lws_jwt_auth_count_grants
(
struct
lws_jwt_auth *ja);
194
206
LWS_VISIBLE
LWS_EXTERN
int
207
lws_jwt_auth_update
(
struct
lws_jwt_auth *ja,
const
char
*jwt,
const
char
**reason);
208
214
LWS_VISIBLE
LWS_EXTERN
void
215
lws_jwt_auth_destroy
(
struct
lws_jwt_auth **ja);
216
217
#endif
/* _LWS_JWT_AUTH_H_ */
lws_jwk
Definition
lws-jwk.h:50
uint32_t
unsigned int uint32_t
Definition
libwebsockets.h:744
LWS_EXTERN
#define LWS_EXTERN
Definition
libwebsockets.h:327
LWS_VISIBLE
#define LWS_VISIBLE
Definition
libwebsockets.h:322
lws_jwt_auth_cb_t
int(* lws_jwt_auth_cb_t)(struct lws_jwt_auth *ja, int state, void *user)
Definition
lws-jwt-auth.h:27
lws_jwt_auth_info::aud
const char * aud
Definition
lws-jwt-auth.h:51
lws_jwt_auth_info::cb
lws_jwt_auth_cb_t cb
Definition
lws-jwt-auth.h:61
lws_jwt_auth_update
LWS_VISIBLE LWS_EXTERN int lws_jwt_auth_update(struct lws_jwt_auth *ja, const char *jwt, const char **reason)
lws_jwt_auth_info::user
void * user
Definition
lws-jwt-auth.h:63
lws_jwt_auth_get_sec
LWS_VISIBLE LWS_EXTERN uint32_t lws_jwt_auth_get_sec(struct lws_jwt_auth *ja)
lws_jwt_auth_get_uid
LWS_VISIBLE LWS_EXTERN uint32_t lws_jwt_auth_get_uid(struct lws_jwt_auth *ja)
lws_jwt_auth_get_exp
LWS_VISIBLE LWS_EXTERN uint64_t lws_jwt_auth_get_exp(struct lws_jwt_auth *ja)
lws_jwt_auth_info::iss
const char * iss
Definition
lws-jwt-auth.h:49
lws_jwt_auth_info::purpose
const char * purpose
Definition
lws-jwt-auth.h:54
lws_jwt_auth_create
LWS_VISIBLE LWS_EXTERN struct lws_jwt_auth * lws_jwt_auth_create(struct lws *wsi, struct lws_jwk *jwk, const char *cookie_name, lws_jwt_auth_cb_t cb, void *user, const char **reason)
lws_jwt_auth_create_via_info
LWS_VISIBLE LWS_EXTERN struct lws_jwt_auth * lws_jwt_auth_create_via_info(struct lws *wsi, const struct lws_jwt_auth_info *i, const char **reason)
lws_jwt_auth_info::jwk
struct lws_jwk * jwk
Definition
lws-jwt-auth.h:45
lws_jwt_auth_query_grant
LWS_VISIBLE LWS_EXTERN int lws_jwt_auth_query_grant(struct lws_jwt_auth *ja, const char *service_name)
lws_jwt_auth_info::cookie_name
const char * cookie_name
Definition
lws-jwt-auth.h:47
lws_jwt_auth_get_did
LWS_VISIBLE LWS_EXTERN const char * lws_jwt_auth_get_did(struct lws_jwt_auth *ja)
lws_jwt_auth_get_sub
LWS_VISIBLE LWS_EXTERN const char * lws_jwt_auth_get_sub(struct lws_jwt_auth *ja)
lws_jwt_auth_count_grants
LWS_VISIBLE LWS_EXTERN uint32_t lws_jwt_auth_count_grants(struct lws_jwt_auth *ja)
lws_jwt_auth_destroy
LWS_VISIBLE LWS_EXTERN void lws_jwt_auth_destroy(struct lws_jwt_auth **ja)
lws_jwt_auth_info
Definition
lws-jwt-auth.h:44
include
libwebsockets
lws-jwt-auth.h
Generated on
for libwebsockets by
1.18.0