{ "info": { "author": "c0mpiler", "author_email": "c0mpiler@outlook.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Utilities" ], "description": "[![PyPI version](https://badge.fury.io/py/py-keycloak.svg)](https://badge.fury.io/py/py-keycloak)\n[![Documentation Status](https://readthedocs.org/projects/py-keycloak/badge/?version=latest)](http://py-keycloak.readthedocs.io/en/latest/?badge=latest)\n[![GitHub issues](https://img.shields.io/github/issues/c0mpiler/py-keycloak.svg)](https://github.com/c0mpiler/py-keycloak/issues)\n[![GitHub license](https://img.shields.io/github/license/c0mpiler/py-keycloak.svg)](https://github.com/c0mpiler/py-keycloak/blob/master/LICENSE)\n\n\n\n\n\nPython client - Keycloak\n====================\n\nFor review- see https://github.com/c0mpiler/py-keycloak\n\n**py-keycloak** is a Python package providing access to the Keycloak API.\n\n## Installation\n\n### Via Pypi Package:\n\n``` $ pip install py-keycloak ```\n\n### Manually\n\n``` $ python setup.py install ```\n\n## Dependencies\n\npy-keycloak depends on:\n\n* Python 3\n* [requests](http://docs.python-requests.org/en/master/)\n* [python-jose](http://python-jose.readthedocs.io/en/latest/)\n\n### Tests Dependencies\n\n* unittest\n* [httmock](https://github.com/patrys/httmock)\n\n## Bug reports\n\nPlease report bugs and feature requests at\nhttps://github.com/c0mpiler/py-keycloak/issues\n\n## Documentation\n\nThe documentation for py-keycloak is available on [readthedocs](http://py-keycloak.readthedocs.io).\n\n## Usage\n\n```python\nfrom keycloak import KeycloakOpenID as KeyCloak\n\n# Configure client\nkeycloak = KeyCloak(server_url=\"http://localhost:8080/auth/\",\n client_id=\"example_client\",\n realm_name=\"example_realm\",\n client_secret_key=\"secret\")\n\n# Get WellKnow\nconfig_well_know = keycloak.well_know()\n\n# Get Token\ntoken = keycloak.token(\"user\", \"password\")\n\n# Get Userinfo\nuserinfo = keycloak.userinfo(token['access_token'])\n\n# Refresh token\ntoken = keycloak.refresh_token(token['refresh_token'])\n\n# Logout\nkeycloak.logout(token['refresh_token'])\n\n# Get Certs\ncerts = keycloak.certs()\n\n# Get RPT (Entitlement)\ntoken = keycloak.token(\"user\", \"password\")\nrpt = keycloak.entitlement(token['access_token'], \"resource_id\")\n\n# Instropect RPT\ntoken_rpt_info = keycloak.introspect(keycloak.introspect(token['access_token'], rpt=rpt['rpt'],\n token_type_hint=\"requesting_party_token\"))\n\n# Introspect Token\ntoken_info = keycloak.introspect(token['access_token']))\n\n# Decode Token\nKEYCLOAK_PUBLIC_KEY = \"secret\"\noptions = {\"verify_signature\": True, \"verify_aud\": True, \"exp\": True}\ntoken_info = keycloak.decode_token(token['access_token'], key=KEYCLOAK_PUBLIC_KEY, options=options)\n\n# Get permissions by token\ntoken = keycloak.token(\"user\", \"password\")\nkeycloak.load_authorization_config(\"example-authz-config.json\")\npolicies = keycloak.get_policies(token['access_token'], method_token_info='decode', key=KEYCLOAK_PUBLIC_KEY)\npermissions = keycloak.get_permissions(token['access_token'], method_token_info='introspect')\n\n# KEYCLOAK ADMIN\n\nfrom keycloak import KeycloakAdmin\n\nkeycloak_admin = KeycloakAdmin(server_url=\"http://localhost:8080/auth/\",\n username='example-admin',\n password='secret',\n realm_name=\"example_realm\",\n verify=True)\n\n# Add user \nnew_user = keycloak_admin.create_user({\"email\": \"example@example.com\",\n \"username\": \"example@example.com\",\n \"enabled\": True,\n \"firstName\": \"Example\",\n \"lastName\": \"Example\",\n \"realmRoles\": [\"user_default\", ],\n \"attributes\": {\"example\": \"1,2,3,3,\"}}) \n\n\n# Add user and set password \nnew_user = keycloak_admin.create_user({\"email\": \"example@example.com\",\n \"username\": \"example@example.com\",\n \"enabled\": True,\n \"firstName\": \"Example\",\n \"lastName\": \"Example\",\n \"credentials\": [{\"value\": \"secret\",\"type\": \"password\",}],\n \"realmRoles\": [\"user_default\", ],\n \"attributes\": {\"example\": \"1,2,3,3,\"}}) \n\n# User counter\ncount_users = keycloak_admin.users_count()\n\n# Get users Returns a list of users, filtered according to query parameters\nusers = keycloak_admin.get_users({})\n\n# Get user ID from name\nuser-id-keycloak = keycloak_admin.get_user_id(\"example@example.com\")\n\n# Get User\nuser = keycloak_admin.get_user(\"user-id-keycloak\")\n\n# Update User\nresponse = keycloak_admin.update_user(user_id=\"user-id-keycloak\",\n payload={'firstName': 'Example Update'})\n\n# Update User Password\nresponse = set_user_password(user_id=\"user-id-keycloak\", password=\"secret\", temporary=True)\n\n# Delete User\nresponse = keycloak_admin.delete_user(user_id=\"user-id-keycloak\")\n\n# Get consents granted by the user\nconsents = keycloak_admin.consents_user(user_id=\"user-id-keycloak\")\n\n# Send User Action\nresponse = keycloak_admin.send_update_account(user_id=\"user-id-keycloak\",\n payload=json.dumps(['UPDATE_PASSWORD']))\n\n# Send Verify Email\nresponse = keycloak_admin.send_verify_email(user_id=\"user-id-keycloak\")\n\n# Get sessions associated with the user\nsessions = keycloak_admin.get_sessions(user_id=\"user-id-keycloak\")\n\n# Get themes, social providers, auth providers, and event listeners available on this server\nserver_info = keycloak_admin.get_server_info()\n\n# Get clients belonging to the realm Returns a list of clients belonging to the realm\nclients = keycloak_admin.get_clients()\n\n# Get client - id (not client-id) from client by name\nclient_id=keycloak_admin.get_client_id(\"my-client\")\n\n# Get representation of the client - id of client (not client-id)\nclient = keycloak_admin.get_client(client_id=\"client_id\")\n\n# Get all roles for the realm or client\nrealm_roles = keycloak_admin.get_realm_roles()\n\n# Get all roles for the client\nclient_roles = keycloak_admin.get_client_roles(client_id=\"client_id\")\n\n# Get client role\nrole = keycloak_admin.get_client_role(client_id=\"client_id\", role_name=\"role_name\")\n\n# Warning: Deprecated\n# Get client role id from name\nrole_id = keycloak_admin.get_client_role_id(client_id=\"client_id\", role_name=\"test\")\n\n# Create client role\nkeycloak_admin.create_client_role(client_id, \"test\")\n\n# Assign client role to user. Note that BOTH role_name and role_id appear to be required.\nkeycloak_admin.assign_client_role(client_id=\"client_id\", user_id=\"user_id\", role_id=\"role_id\", role_name=\"test\")\n\n# Create new group\ngroup = keycloak_admin.create_group(name=\"Example Group\")\n\n# Get all groups\ngroups = keycloak_admin.get_groups()\n\n# Get group\ngroup = keycloak_admin.get_group(group_id='group_id')\n\n# Get group by name\ngroup = keycloak_admin.get_group_by_name(name_or_path='group_id', search_in_subgroups=True)\n\n# Function to trigger user sync from provider\nsync_users(storage_id=\"storage_di\", action=\"action\")\n```\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/c0mpiler/py-keycloak", "keywords": "keycloak openid", "license": "Apache License 2.0", "maintainer": "", "maintainer_email": "", "name": "py-keycloak", "package_url": "https://pypi.org/project/py-keycloak/", "platform": "", "project_url": "https://pypi.org/project/py-keycloak/", "project_urls": { "Homepage": "https://github.com/c0mpiler/py-keycloak" }, "release_url": "https://pypi.org/project/py-keycloak/0.0.1.6/", "requires_dist": [ "requests (==2.18.4)", "httmock (==1.2.5)", "python-jose (==1.4.0)" ], "requires_python": "", "summary": "py-keycloak is a Python package providing access to the Keycloak API.", "version": "0.0.1.6" }, "last_serial": 4038145, "releases": { "0.0.1.3": [ { "comment_text": "", "digests": { "md5": "44eea742285525275b6716b36b557ebc", "sha256": "c6228150a9f3c96cc6184c8755b50b310e4ab8b7c04890f32f83fe5f449719ce" }, "downloads": -1, "filename": "py_keycloak-0.0.1.3-py2-none-any.whl", "has_sig": false, "md5_digest": "44eea742285525275b6716b36b557ebc", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 17318, "upload_time": "2018-07-05T01:11:05", "url": "https://files.pythonhosted.org/packages/f3/a5/c8b4408510ddb8f3a88c0a5276676e6429a3d578cc60fc6a08c3374897bc/py_keycloak-0.0.1.3-py2-none-any.whl" } ], "0.0.1.4": [ { "comment_text": "", "digests": { "md5": "8d885ebf6a8b485317d63c78f6e3aa4b", "sha256": "e1f2f9a53a634122b53aa57dd229248d4adc06dc7f0d84e21bd389ce12eb2879" }, "downloads": -1, "filename": "py_keycloak-0.0.1.4-py2-none-any.whl", "has_sig": false, "md5_digest": "8d885ebf6a8b485317d63c78f6e3aa4b", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 17318, "upload_time": "2018-07-06T23:57:27", "url": "https://files.pythonhosted.org/packages/5b/9e/368e9d4317ffaa2761bb3c107ef68869e90bdd0498b71320353235beb2bf/py_keycloak-0.0.1.4-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "266901f53a9ac778dc79c70fb44a0102", "sha256": "aac02f15dacd7f3864bd0ae376b52acdf560ea207fa15a71afc0eba66d9584ff" }, "downloads": -1, "filename": "py-keycloak-0.0.1.4.tar.gz", "has_sig": false, "md5_digest": "266901f53a9ac778dc79c70fb44a0102", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13710, "upload_time": "2018-07-06T23:56:50", "url": "https://files.pythonhosted.org/packages/ff/aa/0dcec4f2cac63f57942e6ea5fb2e7e538f8670fb0e496ea2edc185d4dc6c/py-keycloak-0.0.1.4.tar.gz" } ], "0.0.1.5": [ { "comment_text": "", "digests": { "md5": "9f66e3d4ba8804aff1a2574cab4ad95d", "sha256": "dc60d5b9a48170f6a65935130da78bb26b48eb4cab4437170723121cd1a5a661" }, "downloads": -1, "filename": "py_keycloak-0.0.1.5-py2-none-any.whl", "has_sig": false, "md5_digest": "9f66e3d4ba8804aff1a2574cab4ad95d", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 17316, "upload_time": "2018-07-07T00:15:13", "url": "https://files.pythonhosted.org/packages/0d/5c/ac9397fe8c44ac4f68bb7c77e0cc642f65dcb62a51090268e638727a9c8c/py_keycloak-0.0.1.5-py2-none-any.whl" } ], "0.0.1.6": [ { "comment_text": "", "digests": { "md5": "9354ae75e3a770594be6ce8762a87f37", "sha256": "1417e69e453147e1a97dad30e32bd613c844d51d23cb880f71a562dba0ac9c6c" }, "downloads": -1, "filename": "py_keycloak-0.0.1.6-py2-none-any.whl", "has_sig": false, "md5_digest": "9354ae75e3a770594be6ce8762a87f37", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 17318, "upload_time": "2018-07-07T00:44:10", "url": "https://files.pythonhosted.org/packages/49/c2/3ae1d1c88b134c3fc8f372591b746f5281cd9792f8d4e4225ff69f9d74ec/py_keycloak-0.0.1.6-py2-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9354ae75e3a770594be6ce8762a87f37", "sha256": "1417e69e453147e1a97dad30e32bd613c844d51d23cb880f71a562dba0ac9c6c" }, "downloads": -1, "filename": "py_keycloak-0.0.1.6-py2-none-any.whl", "has_sig": false, "md5_digest": "9354ae75e3a770594be6ce8762a87f37", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 17318, "upload_time": "2018-07-07T00:44:10", "url": "https://files.pythonhosted.org/packages/49/c2/3ae1d1c88b134c3fc8f372591b746f5281cd9792f8d4e4225ff69f9d74ec/py_keycloak-0.0.1.6-py2-none-any.whl" } ] }