| Did you know ... | Search Documentation: |
| Pack logtalk -- logtalk-3.101.0/docs/apis/_sources/open_id_0.rst.txt |
.. index:: single: open_id .. _open_id/0:
.. rst-class:: right
object
open_idFacade predicates for a portable OpenID Connect Authorization Code + PKCE client.
| Availability:
| logtalk_load(open_id(loader))
| Author: Paulo Moura | Version: 1:0:0 | Date: 2026-07-12
| Compilation flags:
| static, context_switching_calls
| Uses: | :ref:`open_id_client <open_id_client/0>` | :ref:`open_id_jwks_cache <open_id_jwks_cache/0>` | :ref:`open_id_jwt <open_id_jwt/0>` | :ref:`open_id_logout <open_id_logout/0>` | :ref:`open_id_pkce <open_id_pkce/0>` | :ref:`open_id_response <open_id_response/0>`
| Remarks: | (none)
| Inherited public predicates: | (none)
.. contents:: :local: :backlinks: top
.. index:: discover/3 .. _open_id/0::discover/3:
discover/3 ^^^^^^^^^^^^^^
Discovers and validates OpenID Provider metadata for the given issuer.
| Compilation flags:
| static
| Template:
| discover(Issuer,Provider,Options)
| Mode and number of proofs:
| discover(+atom,-compound,+list(compound)) - one_or_error
| Exceptions:
| Options is a variable or a partial list:
| instantiation_error
| Options is neither a variable nor a list:
| type_error(list,Options)
| An element Option of the list Options is neither a variable nor a compound term:
| type_error(compound,Option)
| An element Option of the list Options is a compound term but not a valid option:
| domain_error(option,Option)
| Issuer is a variable:
| instantiation_error
| Issuer is not an absolute or allowed issuer URL:
| domain_error(open_id_issuer,Issuer)
| The discovery endpoint returned a non-success status:
| domain_error(open_id_http_status,Code)
| The discovery endpoint response body is not JSON:
| domain_error(open_id_json_response,Body)
| The discovered issuer does not match Issuer:
| domain_error(open_id_issuer,DiscoveredIssuer)
| A provider metadata URL is not secure:
| domain_error(open_id_provider_metadata_url,URL)
.. index:: authorization_url/5 .. _open_id/0::authorization_url/5:
authorization_url/5 ^^^^^^^^^^^^^^^^^^^^^^^
Builds an authorization URL and returns the session data needed for the code exchange and ID-token validation.
| Compilation flags:
| static
| Template:
| authorization_url(Provider,Request,URL,Session,Options)
| Mode and number of proofs:
| authorization_url(+compound,+compound,-atom,-compound,+list(compound)) - one_or_error
| Exceptions:
| Request is neither a direct options list nor a request wrapper term containing an options list:
| domain_error(open_id_options,Request)
| Options is a variable or a partial list:
| instantiation_error
| Options is neither a variable nor a list:
| type_error(list,Options)
| An element Option of the list Options is neither a variable nor a compound term:
| type_error(compound,Option)
| An element Option of the list Options is a compound term but not a valid option:
| domain_error(option,Option)
| Request is missing a required authorization request option:
| domain_error(open_id_authorization_request,missing(Name))
| A request value that must be an atom is not an atom:
| type_error(atom,Value)
| A scope value is neither an atom nor a list of atoms:
| domain_error(open_id_space_separated_atom,Value)
| The PKCE code verifier is a variable:
| instantiation_error
| The PKCE code verifier is not valid:
| domain_error(open_id_code_verifier,Verifier)
.. index:: authorization_response/3 .. _open_id/0::authorization_response/3:
authorization_response/3 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Parses an authorization callback URL into either an authorization response or an authorization error term.
| Compilation flags:
| static
| Template:
| authorization_response(CallbackURL,Response,Options)
| Mode and number of proofs:
| authorization_response(+atom,-compound,+list(compound)) - one_or_error
| Exceptions:
| Options is a variable or a partial list:
| instantiation_error
| Options is neither a variable nor a list:
| type_error(list,Options)
| An element Option of the list Options is neither a variable nor a compound term:
| type_error(compound,Option)
| An element Option of the list Options is a compound term but not a valid option:
| domain_error(option,Option)
| CallbackURL is not a valid callback URL or relative reference:
| domain_error(open_id_authorization_response,CallbackURL)
.. index:: authorization_code/4 .. _open_id/0::authorization_code/4:
authorization_code/4 ^^^^^^^^^^^^^^^^^^^^^^^^
Parses an authorization callback URL, validates the session state, and returns the authorization code.
| Compilation flags:
| static
| Template:
| authorization_code(CallbackURL,Session,Code,Options)
| Mode and number of proofs:
| authorization_code(+atom,+compound,-atom,+list(compound)) - one_or_error
| Exceptions:
| Options is a variable or a partial list:
| instantiation_error
| Options is neither a variable nor a list:
| type_error(list,Options)
| An element Option of the list Options is neither a variable nor a compound term:
| type_error(compound,Option)
| An element Option of the list Options is a compound term but not a valid option:
| domain_error(option,Option)
| Session is missing required state data:
| domain_error(open_id_session,missing(Session,state))
| The callback response is an authorization error:
| domain_error(open_id_authorization_response,authorization_error(Response))
| The callback response state does not match the session state:
| domain_error(open_id_authorization_response,state_mismatch(Expected,Actual))
.. index:: exchange_code/5 .. _open_id/0::exchange_code/5:
exchange_code/5 ^^^^^^^^^^^^^^^^^^^
Exchanges an authorization code for token response data.
| Compilation flags:
| static
| Template:
| exchange_code(Provider,Code,Session,Tokens,Options)
| Mode and number of proofs:
| exchange_code(+compound,+atom,+compound,-compound,+list(compound)) - one_or_error
| Exceptions:
| Options is a variable or a partial list:
| instantiation_error
| Options is neither a variable nor a list:
| type_error(list,Options)
| An element Option of the list Options is neither a variable nor a compound term:
| type_error(compound,Option)
| An element Option of the list Options is a compound term but not a valid option:
| domain_error(option,Option)
| Session is missing required authorization-code exchange data:
| domain_error(open_id_session,missing(Session,Name))
| The token endpoint returned a non-success status:
| domain_error(open_id_http_status,Code)
| The token endpoint response body is not JSON:
| domain_error(open_id_json_response,Body)
| The token endpoint JSON response is missing a required member:
| domain_error(open_id_token_response,missing(Name))
.. index:: refresh_token/4 .. _open_id/0::refresh_token/4:
refresh_token/4 ^^^^^^^^^^^^^^^^^^^
Exchanges a refresh token for token response data.
| Compilation flags:
| static
| Template:
| refresh_token(Provider,RefreshToken,Tokens,Options)
| Mode and number of proofs:
| refresh_token(+compound,+atom,-compound,+list(compound)) - one_or_error
| Exceptions:
| Options is a variable or a partial list:
| instantiation_error
| Options is neither a variable nor a list:
| type_error(list,Options)
| An element Option of the list Options is neither a variable nor a compound term:
| type_error(compound,Option)
| An element Option of the list Options is a compound term but not a valid option:
| domain_error(option,Option)
| The client_id option is missing:
| domain_error(open_id_refresh_token,missing(client_id))
| The token endpoint returned a non-success status:
| domain_error(open_id_http_status,Code)
| The token endpoint response body is not JSON:
| domain_error(open_id_json_response,Body)
| The token endpoint JSON response is missing a required member:
| domain_error(open_id_token_response,missing(Name))
.. index:: userinfo/4 .. _open_id/0::userinfo/4:
userinfo/4 ^^^^^^^^^^^^^^
Fetches UserInfo claims using the given access token.
| Compilation flags:
| static
| Template:
| userinfo(Provider,AccessToken,Claims,Options)
| Mode and number of proofs:
| userinfo(+compound,+atom,-term,+list(compound)) - one_or_error
| Exceptions:
| Options is a variable or a partial list:
| instantiation_error
| Options is neither a variable nor a list:
| type_error(list,Options)
| An element Option of the list Options is neither a variable nor a compound term:
| type_error(compound,Option)
| An element Option of the list Options is a compound term but not a valid option:
| domain_error(option,Option)
| The provider metadata is missing a UserInfo endpoint:
| domain_error(open_id_provider,missing(userinfo_endpoint))
| The UserInfo endpoint returned a non-success status:
| domain_error(open_id_http_status,Code)
| The UserInfo endpoint response body is not JSON:
| domain_error(open_id_json_response,Body)
.. index:: logout_url/4 .. _open_id/0::logout_url/4:
logout_url/4 ^^^^^^^^^^^^^^^^
Builds a logout URL for an RP-initiated logout request.
| Compilation flags:
| static
| Template:
| logout_url(Provider,Request,URL,Options)
| Mode and number of proofs:
| logout_url(+compound,+compound,-atom,+list(compound)) - one_or_error
| Exceptions:
| Request is neither a direct options list nor a request wrapper term containing an options list:
| domain_error(open_id_options,Request)
| Options is a variable or a partial list:
| instantiation_error
| Options is neither a variable nor a list:
| type_error(list,Options)
| An element Option of the list Options is neither a variable nor a compound term:
| type_error(compound,Option)
| An element Option of the list Options is a compound term but not a valid option:
| domain_error(option,Option)
| The provider metadata is missing an end-session endpoint:
| domain_error(open_id_provider,missing(end_session_endpoint))
| A request value that must be an atom is not an atom:
| type_error(atom,Value)
| A ui_locales value is neither an atom nor a list of atoms:
| domain_error(open_id_space_separated_atom,Value)
| The post_logout_redirect_uri is not secure:
| domain_error(open_id_post_logout_redirect_uri,URL)
.. index:: jwks/3 .. _open_id/0::jwks/3:
jwks/3 ^^^^^^^^^^
Fetches the JSON Web Key Set for the provider.
| Compilation flags:
| static
| Template:
| jwks(Provider,JWKSet,Options)
| Mode and number of proofs:
| jwks(+compound,-term,+list(compound)) - one_or_error
| Exceptions:
| Options is a variable or a partial list:
| instantiation_error
| Options is neither a variable nor a list:
| type_error(list,Options)
| An element Option of the list Options is neither a variable nor a compound term:
| type_error(compound,Option)
| An element Option of the list Options is a compound term but not a valid option:
| domain_error(option,Option)
| The JWKS endpoint returned a non-success status:
| domain_error(open_id_http_status,Code)
| The JWKS endpoint response body is not JSON:
| domain_error(open_id_json_response,Body)
.. index:: cached_jwks/3 .. _open_id/0::cached_jwks/3:
cached_jwks/3 ^^^^^^^^^^^^^^^^^
Returns a cached JWKS for a provider, refreshing it when needed.
| Compilation flags:
| static
| Template:
| cached_jwks(Provider,JWKSet,Options)
| Mode and number of proofs:
| cached_jwks(+compound,-term,+list(compound)) - one_or_error
| Exceptions:
| Options is a variable or a partial list:
| instantiation_error
| Options is neither a variable nor a list:
| type_error(list,Options)
| An element Option of the list Options is neither a variable nor a compound term:
| type_error(compound,Option)
| An element Option of the list Options is a compound term but not a valid option:
| domain_error(option,Option)
| The provider metadata is missing a JWKS endpoint:
| domain_error(open_id_provider,missing(jwks_uri))
| The JWKS endpoint returned a non-success status:
| domain_error(open_id_http_status,Code)
| The JWKS endpoint response body is not JSON:
| domain_error(open_id_json_response,Body)
.. index:: verify_id_token/4 .. _open_id/0::verify_id_token/4:
verify_id_token/4 ^^^^^^^^^^^^^^^^^^^^^
Verifies an ID-token using cached JWKS data, refreshing the JWKS once when the token key identifier is unknown.
| Compilation flags:
| static
| Template:
| verify_id_token(Token,Provider,Claims,Options)
| Mode and number of proofs:
| verify_id_token(+atom,+compound,-term,+list(compound)) - zero_or_one_or_error
| Exceptions:
| Options is a variable or a partial list:
| instantiation_error
| Options is neither a variable nor a list:
| type_error(list,Options)
| An element Option of the list Options is neither a variable nor a compound term:
| type_error(compound,Option)
| An element Option of the list Options is a compound term but not a valid option:
| domain_error(option,Option)
| The provider metadata is missing a JWKS endpoint:
| domain_error(open_id_provider,missing(jwks_uri))
| The JWKS endpoint returned a non-success status:
| domain_error(open_id_http_status,Code)
| The JWKS endpoint response body is not JSON:
| domain_error(open_id_json_response,Body)
| Token is a variable:
| instantiation_error
| Token is neither a variable nor an atom:
| type_error(atom,Token)
| Token is an atom but not a valid compact JWT:
| domain_error(jwt_compact_serialization,Token)
| Token contains Base64URL data with characters outside the Base64URL alphabet:
| representation_error(base64)
| The JWT header does not contain a valid alg member:
| domain_error(jwt_header,Header)
| The JWT algorithm is unsupported or disallowed:
| domain_error(open_id_jwt_algorithm,Algorithm)
| JWKSet is not a JSON Web Key Set with a keys list:
| domain_error(jwt_jwks,JWKSet)
| No compatible key exists for the JWT header:
| existence_error(jwt_jwk,Header)
| The selected JWK is not a supported public key:
| domain_error(jwt_jwk_public_key,Key)
| The ES256 signature is not 64 bytes long:
| domain_error(jwt_es256_signature,Signature)
| The OpenSSL executable does not exist:
| existence_error(os_command,Executable)
| The iss claim does not match the provider issuer:
| domain_error(open_id_claim(iss),Value)
| A required OpenID ID-token claim is missing:
| domain_error(open_id_claims,missing(Name))
| The expected audience option is missing:
| domain_error(open_id_claims,missing(expected_audience))
| An OpenID ID-token claim has an invalid value:
| domain_error(open_id_claim(Name),Value)
| An OpenID ID-token time claim value is not a number:
| type_error(time_number,Name-Time)
.. index:: verify_id_token/5 .. _open_id/0::verify_id_token/5:
verify_id_token/5 ^^^^^^^^^^^^^^^^^^^^^
Verifies an ID-token signature and claims using the given provider metadata and JWKS.
| Compilation flags:
| static
| Template:
| verify_id_token(Token,Provider,JWKSet,Claims,Options)
| Mode and number of proofs:
| verify_id_token(+atom,+compound,+term,-term,+list(compound)) - zero_or_one_or_error
| Exceptions:
| Options is a variable or a partial list:
| instantiation_error
| Options is neither a variable nor a list:
| type_error(list,Options)
| An element Option of the list Options is neither a variable nor a compound term:
| type_error(compound,Option)
| An element Option of the list Options is a compound term but not a valid option:
| domain_error(option,Option)
| Token is a variable:
| instantiation_error
| Token is neither a variable nor an atom:
| type_error(atom,Token)
| Token is an atom but not a valid compact JWT:
| domain_error(jwt_compact_serialization,Token)
| Token contains Base64URL data with characters outside the Base64URL alphabet:
| representation_error(base64)
| The JWT header does not contain a valid alg member:
| domain_error(jwt_header,Header)
| The JWT algorithm is unsupported or disallowed:
| domain_error(open_id_jwt_algorithm,Algorithm)
| JWKSet is not a JSON Web Key Set with a keys list:
| domain_error(jwt_jwks,JWKSet)
| No compatible key exists for the JWT header:
| existence_error(jwt_jwk,Header)
| The selected JWK is not a supported public key:
| domain_error(jwt_jwk_public_key,Key)
| The ES256 signature is not 64 bytes long:
| domain_error(jwt_es256_signature,Signature)
| The OpenSSL executable does not exist:
| existence_error(os_command,Executable)
| The iss claim does not match the provider issuer:
| domain_error(open_id_claim(iss),Value)
| A required OpenID ID-token claim is missing:
| domain_error(open_id_claims,missing(Name))
| The expected audience option is missing:
| domain_error(open_id_claims,missing(expected_audience))
| An OpenID ID-token claim has an invalid value:
| domain_error(open_id_claim(Name),Value)
| An OpenID ID-token time claim value is not a number:
| type_error(time_number,Name-Time)
(no local declarations; see entity ancestors if any)
(no local declarations; see entity ancestors if any)
(none)