Browse Source

Merge pull request #353 from Zerek-Cheng/master

fix: Support the auth_url method called with scope & state params now
pull/357/head v1.8.1
Richard Nemeth 2 years ago
committed by GitHub
parent
commit
bd2dd07ce9
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 13
      README.md
  2. 16
      src/keycloak/keycloak_openid.py
  3. 1
      src/keycloak/urls_patterns.py

13
README.md

@ -72,6 +72,19 @@ keycloak_openid = KeycloakOpenID(server_url="http://localhost:8080/auth/",
# Get WellKnow # Get WellKnow
config_well_known = keycloak_openid.well_known() 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 # Get Token
token = keycloak_openid.token("user", "password") token = keycloak_openid.token("user", "password")
token = keycloak_openid.token("user", "password", totp="012345") token = keycloak_openid.token("user", "password", totp="012345")

16
src/keycloak/keycloak_openid.py

@ -174,17 +174,25 @@ class KeycloakOpenID:
return raise_error_from_response(data_raw, KeycloakGetError) return raise_error_from_response(data_raw, KeycloakGetError)
def auth_url(self, redirect_uri):
def auth_url(self, redirect_uri, scope="email", state=""):
""" """
Get authorization URL endpoint.
http://openid.net/specs/openid-connect-core-1_0.html#AuthorizationEndpoint
:return:
: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 = { params_path = {
"authorization-endpoint": self.well_known()["authorization_endpoint"], "authorization-endpoint": self.well_known()["authorization_endpoint"],
"client-id": self.client_id, "client-id": self.client_id,
"redirect-uri": redirect_uri, "redirect-uri": redirect_uri,
"scope": scope,
"state": state,
} }
return URL_AUTH.format(**params_path) return URL_AUTH.format(**params_path)

1
src/keycloak/urls_patterns.py

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

Loading…
Cancel
Save