|
|
@ -4,7 +4,7 @@ |
|
|
|
|
|
|
|
from keycloak.exceptions import raise_error_from_response, KeycloakGetError |
|
|
|
from .urls_patterns import URL_AUTH, URL_TOKEN, URL_USERINFO, URL_WELL_KNOWN, URL_LOGOUT, \ |
|
|
|
URL_CERTS, URL_ENTITLEMENT |
|
|
|
URL_CERTS, URL_ENTITLEMENT, URL_INTROSPECT |
|
|
|
from .connection import ConnectionManager |
|
|
|
|
|
|
|
|
|
|
@ -131,7 +131,7 @@ class Keycloak: |
|
|
|
|
|
|
|
return raise_error_from_response(data_raw, KeycloakGetError) |
|
|
|
|
|
|
|
def instropect(self, token, token_type_hint="requesting_party_token"): |
|
|
|
def instropect(self, token, rpt, token_type_hint="requesting_party_token"): |
|
|
|
""" |
|
|
|
The introspection endpoint is used to retrieve the active state of a token. It is can only be |
|
|
|
invoked by confidential clients. |
|
|
@ -139,6 +139,20 @@ class Keycloak: |
|
|
|
https://tools.ietf.org/html/rfc7662 |
|
|
|
|
|
|
|
:param token: |
|
|
|
:param rpt: |
|
|
|
:param token_type_hint: |
|
|
|
|
|
|
|
:return: |
|
|
|
""" |
|
|
|
return None |
|
|
|
params_path = {"realm-name": self.__realm_name} |
|
|
|
payload = {"client_id": self.__client_id, "token": rpt, |
|
|
|
'token_type_hint': token_type_hint} |
|
|
|
|
|
|
|
if self.__client_secret_key: |
|
|
|
payload.update({"client_secret": self.__client_secret_key}) |
|
|
|
|
|
|
|
self.__connection.add_param_headers("Authorization", "Bearer " + token) |
|
|
|
data_raw = self.__connection.raw_post(URL_INTROSPECT.format(**params_path), |
|
|
|
data=payload) |
|
|
|
|
|
|
|
return raise_error_from_response(data_raw, KeycloakGetError) |