Iddawc
Handle the flow of OAuth2 and OpenID Connect authentication process from the client side.
|
#include <jansson.h>
#include <orcania.h>
#include <ulfius.h>
#include <rhonabwy.h>
#include "iddawc-cfg.h"
Go to the source code of this file.
Data Structures | |
struct | _i_session |
Macros | |
#define | I_OK 0 |
Success. More... | |
#define | I_ERROR 1 |
Error. More... | |
#define | I_ERROR_PARAM 2 |
Error in parameters. More... | |
#define | I_ERROR_MEMORY 3 |
Memory error. More... | |
#define | I_ERROR_UNAUTHORIZED 4 |
Request unauthorized. More... | |
#define | I_ERROR_SERVER 5 |
Server error. More... | |
#define | I_RESPONSE_TYPE_NONE 0x00000000 |
No response type. More... | |
#define | I_RESPONSE_TYPE_CODE 0x00000001 |
Response type code. More... | |
#define | I_RESPONSE_TYPE_TOKEN 0x00000010 |
Response type token. More... | |
#define | I_RESPONSE_TYPE_ID_TOKEN 0x00000100 |
Response type id_token. More... | |
#define | I_RESPONSE_TYPE_PASSWORD 0x00001000 |
Grant type password. More... | |
#define | I_RESPONSE_TYPE_CLIENT_CREDENTIALS 0x00010000 |
Grant type client_credentials. More... | |
#define | I_RESPONSE_TYPE_REFRESH_TOKEN 0x00100000 |
Grant type refresh_token. More... | |
#define | I_RESPONSE_TYPE_DEVICE_CODE 0x01000000 |
Grant type urn:ietf:params:oauth:grant-type:device_code. More... | |
#define | I_AUTH_METHOD_GET 0x00000001 |
access auth endpoint using GET method More... | |
#define | I_AUTH_METHOD_POST 0x00000010 |
access auth endpoint using POST method More... | |
#define | I_AUTH_METHOD_JWT_SIGN_SECRET 0x00000100 |
access auth endpoint using a JWT signed with the client secret More... | |
#define | I_AUTH_METHOD_JWT_SIGN_PRIVKEY 0x00001000 |
access auth endpoint using a JWT signed with the client private key More... | |
#define | I_AUTH_METHOD_JWT_ENCRYPT_SECRET 0x00010000 |
access auth endpoint using a JWT encrypted with the client secret More... | |
#define | I_AUTH_METHOD_JWT_ENCRYPT_PUBKEY 0x00100000 |
access auth endpoint using a JWT encrypted with the client private key More... | |
#define | I_TOKEN_AUTH_METHOD_SECRET_BASIC 0 |
access token endpoint using HTTP basic auth with client_id and client password More... | |
#define | I_TOKEN_AUTH_METHOD_SECRET_POST 1 |
access token endpoint using secret send in POST parameters More... | |
#define | I_TOKEN_AUTH_METHOD_SECRET_JWT 2 |
access token endpoint using a JWT signed with the client secret More... | |
#define | I_TOKEN_AUTH_METHOD_PRIVATE_JWT 3 |
access token endpoint using a JWT signed with the client private key More... | |
#define | I_TOKEN_AUTH_METHOD_NONE 4 |
access token endpoint using no authentication More... | |
#define | I_STRICT_NO 0 |
Do not stricly conform to openid config result. More... | |
#define | I_STRICT_YES 1 |
Stricly conform to openid config result. More... | |
#define | I_AUTH_SIGN_ALG_MAX_LENGTH 8 |
Max length of a sign algorithm name. More... | |
#define | I_BEARER_TYPE_HEADER 0 |
Bearer type header, the token will be available in the header. More... | |
#define | I_BEARER_TYPE_BODY 1 |
Bearer type body, the token will be available as a body url-encoded parameter. More... | |
#define | I_BEARER_TYPE_URL 2 |
Bearer type url, the token will be available as a url query parameter. More... | |
#define | I_HEADER_PREFIX_BEARER "Bearer " |
#define | I_HEADER_AUTHORIZATION "Authorization" |
#define | I_BODY_URL_PARAMETER "access_token" |
#define | I_HEADER_DPOP "DPoP" |
Functions | |
int | i_global_init () |
void | i_global_close () |
void | i_free (void *data) |
int | i_init_session (struct _i_session *i_session) |
void | i_clean_session (struct _i_session *i_session) |
int | i_set_response_type (struct _i_session *i_session, uint i_value) |
int | i_set_result (struct _i_session *i_session, uint i_value) |
int | i_set_int_parameter (struct _i_session *i_session, i_option option, uint i_value) |
int | i_set_str_parameter (struct _i_session *i_session, i_option option, const char *s_value) |
int | i_set_additional_parameter (struct _i_session *i_session, const char *s_key, const char *s_value) |
int | i_set_additional_response (struct _i_session *i_session, const char *s_key, const char *s_value) |
int | i_set_rich_authorization_request (struct _i_session *i_session, const char *type, const char *value) |
int | i_remove_rich_authorization_request (struct _i_session *i_session, const char *type) |
char * | i_get_rich_authorization_request (struct _i_session *i_session, const char *type) |
uint | i_get_response_type (struct _i_session *i_session) |
uint | i_get_result (struct _i_session *i_session) |
uint | i_get_int_parameter (struct _i_session *i_session, i_option option) |
const char * | i_get_str_parameter (struct _i_session *i_session, i_option option) |
const char * | i_get_additional_parameter (struct _i_session *i_session, const char *s_key) |
const char * | i_get_additional_response (struct _i_session *i_session, const char *s_key) |
int | i_set_parameter_list (struct _i_session *i_session,...) |
json_t * | i_export_session_json_t (struct _i_session *i_session) |
int | i_import_session_json_t (struct _i_session *i_session, json_t *j_import) |
char * | i_export_session_str (struct _i_session *i_session) |
int | i_import_session_str (struct _i_session *i_session, const char *str_import) |
int | i_load_openid_config (struct _i_session *i_session) |
int | i_build_auth_url_get (struct _i_session *i_session) |
int | i_run_auth_request (struct _i_session *i_session) |
int | i_parse_redirect_to (struct _i_session *i_session) |
int | i_run_token_request (struct _i_session *i_session) |
int | i_verify_id_token (struct _i_session *i_session) |
int | i_load_userinfo (struct _i_session *i_session) |
int | i_load_userinfo_custom (struct _i_session *i_session, const char *http_method, struct _u_map *additional_query, struct _u_map *additional_headers) |
int | i_introspect_token (struct _i_session *i_session, json_t **j_result) |
int | i_revoke_token (struct _i_session *i_session) |
int | i_register_client (struct _i_session *i_session, json_t *j_parameters, int update_session, json_t **j_result) |
char * | i_generate_dpop_token (struct _i_session *i_session, const char *htm, const char *htu, time_t iat) |
int | i_perform_api_request (struct _i_session *i_session, struct _u_request *http_request, struct _u_response *http_response, int refresh_if_expired, int bearer_type, int use_dpop, time_t dpop_iat) |
int | i_run_par_request (struct _i_session *i_session) |
int | i_run_device_auth_request (struct _i_session *i_session) |