Browse Source

refactor: merge master branch into local

pull/354/head
Richard Nemeth 2 years ago
parent
commit
0a1f123716
  1. 12
      .readthedocs.yaml
  2. 13
      README.md
  3. 1
      src/keycloak/keycloak_admin.py
  4. 20
      src/keycloak/keycloak_openid.py
  5. 1
      src/keycloak/urls_patterns.py

12
.readthedocs.yaml

@ -4,7 +4,11 @@ build:
os: "ubuntu-20.04"
tools:
python: "3.10"
python:
install:
- requirements: docs-requirements.txt
jobs:
pre_create_environment:
- asdf plugin add poetry
- asdf install poetry latest
- asdf global poetry latest
- poetry config virtualenvs.create false
post_install:
- poetry install -E docs

13
README.md

@ -72,6 +72,19 @@ keycloak_openid = KeycloakOpenID(server_url="http://localhost:8080/auth/",
# Get WellKnow
config_well_known = keycloak_openid.well_known()
# Get Code With Oauth Authorization Request
auth_url = keycloak_openid.auth_url(
redirect_uri="your_call_back_url",
scope="email",
state="your_state_info")
# Get Access Token With Code
access_token = keycloak_openid.token(
grant_type='authorization_code',
code='the_code_you_get_from_auth_url_callback',
redirect_uri="your_call_back_url")
# Get Token
token = keycloak_openid.token("user", "password")
token = keycloak_openid.token("user", "password", totp="012345")

1
src/keycloak/keycloak_admin.py

@ -58,6 +58,7 @@ class KeycloakAdmin:
:param user_realm_name: The realm name of the user, if different from realm_name
:param auto_refresh_token: list of methods that allows automatic token refresh.
Ex: ['get', 'put', 'post', 'delete']
:param timeout: connection timeout in seconds
"""
PAGE_SIZE = 100

20
src/keycloak/keycloak_openid.py

@ -67,6 +67,7 @@ class KeycloakOpenID:
:param verify: True if want check connection SSL
:param custom_headers: dict of custom header to pass to each HTML request
:param proxies: dict of proxies to sent the request by.
:param timeout: connection timeout in seconds
"""
def __init__(
@ -183,17 +184,24 @@ class KeycloakOpenID:
data_raw = self.connection.raw_get(URL_WELL_KNOWN.format(**params_path))
return raise_error_from_response(data_raw, KeycloakGetError)
def auth_url(self, redirect_uri):
"""Get the authentication URL endpoint.
http://openid.net/specs/openid-connect-core-1_0.html#AuthorizationEndpoint
:return:
def auth_url(self, redirect_uri, scope="email", state=""):
"""Get authorization URL endpoint.
:param redirect_uri: Redirect url to receive oauth code
:type redirect_uri: str
:param scope: Scope of authorization request, split with the blank space
:type: scope: str
:param state: State will be returned to the redirect_uri
:type: str
:returns: Authorization URL Full Build
:rtype: str
"""
params_path = {
"authorization-endpoint": self.well_known()["authorization_endpoint"],
"client-id": self.client_id,
"redirect-uri": redirect_uri,
"scope": scope,
"state": state,
}
return URL_AUTH.format(**params_path)

1
src/keycloak/urls_patterns.py

@ -34,6 +34,7 @@ URL_INTROSPECT = "realms/{realm-name}/protocol/openid-connect/token/introspect"
URL_ENTITLEMENT = "realms/{realm-name}/authz/entitlement/{resource-server-id}"
URL_AUTH = (
"{authorization-endpoint}?client_id={client-id}&response_type=code&redirect_uri={redirect-uri}"
"&scope={scope}&state={state} "
)
# ADMIN URLS

Loading…
Cancel
Save