|
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 |
| auth endpoint using GET method More... | |
| #define | I_AUTH_METHOD_POST 0x00000010 |
| auth endpoint using POST method More... | |
| #define | I_AUTH_METHOD_JWT_SIGN_SECRET 0x00000100 |
| auth endpoint using a JWT signed with the client secret More... | |
| #define | I_AUTH_METHOD_JWT_SIGN_PRIVKEY 0x00001000 |
| auth endpoint using a JWT signed with the client private key More... | |
| #define | I_AUTH_METHOD_JWT_ENCRYPT_SECRET 0x00010000 |
| auth endpoint using a JWT encrypted with the client secret More... | |
| #define | I_AUTH_METHOD_JWT_ENCRYPT_PUBKEY 0x00100000 |
| auth endpoint using a JWT encrypted with the server public key More... | |
| #define | I_TOKEN_AUTH_METHOD_NONE 0x00000000 |
| token endpoint using no authentication More... | |
| #define | I_TOKEN_AUTH_METHOD_SECRET_BASIC 0x00000001 |
| token endpoint using HTTP basic auth with client_id and client password More... | |
| #define | I_TOKEN_AUTH_METHOD_SECRET_POST 0x00000010 |
| token endpoint using secret send in POST parameters More... | |
| #define | I_TOKEN_AUTH_METHOD_TLS_CERTIFICATE 0x00000100 |
| token endpoint using TLS Certificate authentication More... | |
| #define | I_TOKEN_AUTH_METHOD_JWT_SIGN_SECRET 0x00001000 |
| token endpoint using a JWT signed with the client secret More... | |
| #define | I_TOKEN_AUTH_METHOD_JWT_SIGN_PRIVKEY 0x00010000 |
| token endpoint using a JWT signed with the client private key More... | |
| #define | I_TOKEN_AUTH_METHOD_JWT_ENCRYPT_SECRET 0x00100000 |
| token endpoint using a JWT encrypted with the client secret More... | |
| #define | I_TOKEN_AUTH_METHOD_JWT_ENCRYPT_PUBKEY 0x01000000 |
| token endpoint using a JWT signed with the client private key and encrypted with the server public key or the client secret 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_INTROSPECT_REVOKE_AUTH_NONE 0 |
| Introspection/Revocation - no authentication. More... | |
| #define | I_INTROSPECT_REVOKE_AUTH_ACCESS_TOKEN 1 |
| Introspection/Revocation - authentication using access token. More... | |
| #define | I_INTROSPECT_REVOKE_AUTH_CLIENT_TARGET 2 |
| Introspection/Revocation - authentication with client credentials. More... | |
| #define | I_TOKEN_TYPE_ACCESS_TOKEN 0 |
| #define | I_TOKEN_TYPE_ID_TOKEN 1 |
| #define | I_TOKEN_TYPE_USERINFO 2 |
| #define | I_TOKEN_TYPE_INTROSPECTION 3 |
| #define | I_HEADER_PREFIX_BEARER "Bearer " |
| #define | I_HEADER_AUTHORIZATION "Authorization" |
| #define | I_CONTENT_TYPE_JWKS "application/jwk-set+json" |
| #define | I_BODY_URL_PARAMETER "access_token" |
| #define | I_HEADER_DPOP "DPoP" |
| #define | I_REMOTE_VERIFY_NONE 0x0000 |
| No TLS Verification. More... | |
| #define | I_REMOTE_HOST_VERIFY_PEER 0x0001 |
| Verify TLS session with peers. More... | |
| #define | I_REMOTE_HOST_VERIFY_HOSTNAME 0x0010 |
| Verify TLS session with hostname. More... | |
| #define | I_REMOTE_PROXY_VERIFY_PEER 0x0100 |
| Verify TLS session with peers. More... | |
| #define | I_REMOTE_PROXY_VERIFY_HOSTNAME 0x1000 |
| Verify TLS session with hostname. More... | |
| #define | I_PKCE_NONE 0 |
| No PKCE. More... | |
| #define | I_PKCE_METHOD_PLAIN 1 |
| PKCE using method plain. More... | |
| #define | I_PKCE_METHOD_S256 2 |
| PKCE using method SHA256. More... | |
| #define | I_CLAIM_TARGET_ALL 0 |
| Add claim to userinfo and id_token. More... | |
| #define | I_CLAIM_TARGET_USERINFO 1 |
| Add claim to userinfo. More... | |
| #define | I_CLAIM_TARGET_ID_TOKEN 2 |
| Add claim to id_token. More... | |
| #define | I_CLAIM_ESSENTIAL_NULL 0 |
| Set claim value to null. More... | |
| #define | I_CLAIM_ESSENTIAL_TRUE 1 |
| Set claim essential value to true. More... | |
| #define | I_CLAIM_ESSENTIAL_FALSE 2 |
| Set claim essential value to false. More... | |
| #define | I_CLAIM_ESSENTIAL_IGNORE 3 |
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_add_claim_request (struct _i_session *i_session, int target, const char *claim, int essential, const char *value) |
| int | i_remove_claim_request (struct _i_session *i_session, int target, const char *claim) |
| int | i_set_rich_authorization_request_json_t (struct _i_session *i_session, const char *type, json_t *j_value) |
| int | i_set_rich_authorization_request_str (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) |
| json_t * | i_get_rich_authorization_request_json_t (struct _i_session *i_session, const char *type) |
| char * | i_get_rich_authorization_request_str (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) |
| json_t * | i_get_server_configuration (struct _i_session *i_session) |
| json_t * | i_get_server_jwks (struct _i_session *i_session) |
| int | i_set_server_jwks (struct _i_session *i_session, json_t *j_jwks) |
| json_t * | i_get_client_jwks (struct _i_session *i_session) |
| int | i_set_client_jwks (struct _i_session *i_session, json_t *j_jwks) |
| 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_get_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_verify_jwt_access_token (struct _i_session *i_session, const char *aud) |
| int | i_get_userinfo (struct _i_session *i_session, int get_jwt) |
| int | i_get_userinfo_custom (struct _i_session *i_session, const char *http_method, struct _u_map *additional_query, struct _u_map *additional_headers) |
| int | i_get_token_introspection (struct _i_session *i_session, json_t **j_result, int authentication, int get_jwt) |
| int | i_revoke_token (struct _i_session *i_session, int authentication) |
| int | i_register_client (struct _i_session *i_session, json_t *j_parameters, int update_session, json_t **j_result) |
| int | i_manage_registration_client (struct _i_session *i_session, json_t *j_parameters, int update_session, json_t **j_result) |
| int | i_get_registration_client (struct _i_session *i_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_verify_dpop_proof (const char *dpop_header, const char *htm, const char *htu, time_t max_iat, const char *jkt) |
| int | i_perform_resource_service_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) |