mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-05-05 00:31:37 -07:00
[PR #7126/721108d9 backport][stable-7] Add keycloak_authz_custom_policy module (#7290)
Add keycloak_authz_custom_policy module (#7126)
* Add keycloak_authz_custom_policy module
* keycloak.py: add linefeed to keep linter happy
* keycloak_authz_custom_policy: add basic integration tests
* keycloak_authz_custom_policy: add support for check_mode
* keycloak_authz_custom_policy: add check_mode-specific integration tests
Signed-off-by: Samuli Seppänen <samuli.seppanen@puppeteers.net>
* keycloak_authz_custom_policy: improve logging
Signed-off-by: Samuli Seppänen <samuli.seppanen@puppeteers.net>
* keycloak_authz_custom_policy: fix typo
* keycloak_authz_custom_policy: add licensing information
This should make this module REUSE compliant
* keycloak_authz_custom_policy: remove comment markers from license files
* keycloak_authz_custom_policy: fix typo in the example
* keycloak_authz_custom_policy: fix typos in metadata
* keycloak_authz_custom_policy: change version_added to 7.5.0
* Update plugins/modules/keycloak_authz_custom_policy.py
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Signed-off-by: Samuli Seppänen <samuli.seppanen@puppeteers.net>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 721108d92e
)
Co-authored-by: Samuli Seppänen <samuli.seppanen@gmail.com>
This commit is contained in:
parent
e83bb285b2
commit
4381ac1bf3
17 changed files with 485 additions and 0 deletions
|
@ -116,6 +116,9 @@ URL_AUTHZ_PERMISSIONS = "{url}/admin/realms/{realm}/clients/{client_id}/authz/re
|
|||
|
||||
URL_AUTHZ_RESOURCES = "{url}/admin/realms/{realm}/clients/{client_id}/authz/resource-server/resource"
|
||||
|
||||
URL_AUTHZ_CUSTOM_POLICY = "{url}/admin/realms/{realm}/clients/{client_id}/authz/resource-server/policy/{policy_type}"
|
||||
URL_AUTHZ_CUSTOM_POLICIES = "{url}/admin/realms/{realm}/clients/{client_id}/authz/resource-server/policy"
|
||||
|
||||
|
||||
def keycloak_argument_spec():
|
||||
"""
|
||||
|
@ -2922,6 +2925,27 @@ class KeycloakAPI(object):
|
|||
list_of_groups.append(group_dict)
|
||||
return list_of_groups
|
||||
|
||||
def create_authz_custom_policy(self, policy_type, payload, client_id, realm):
|
||||
"""Create a custom policy for a Keycloak client"""
|
||||
url = URL_AUTHZ_CUSTOM_POLICY.format(url=self.baseurl, policy_type=policy_type, client_id=client_id, realm=realm)
|
||||
|
||||
try:
|
||||
return open_url(url, method='POST', http_agent=self.http_agent, headers=self.restheaders, timeout=self.connection_timeout,
|
||||
data=json.dumps(payload), validate_certs=self.validate_certs)
|
||||
except Exception as e:
|
||||
self.module.fail_json(msg='Could not create permission %s for client %s in realm %s: %s' % (payload['name'], client_id, realm, str(e)))
|
||||
|
||||
def remove_authz_custom_policy(self, policy_id, client_id, realm):
|
||||
"""Remove a custom policy from a Keycloak client"""
|
||||
url = URL_AUTHZ_CUSTOM_POLICIES.format(url=self.baseurl, client_id=client_id, realm=realm)
|
||||
delete_url = "%s/%s" % (url, policy_id)
|
||||
|
||||
try:
|
||||
return open_url(delete_url, method='DELETE', http_agent=self.http_agent, headers=self.restheaders, timeout=self.connection_timeout,
|
||||
validate_certs=self.validate_certs)
|
||||
except Exception as e:
|
||||
self.module.fail_json(msg='Could not delete custom policy %s for client %s in realm %s: %s' % (id, client_id, realm, str(e)))
|
||||
|
||||
def get_authz_permission_by_name(self, name, client_id, realm):
|
||||
"""Get authorization permission by name"""
|
||||
url = URL_AUTHZ_POLICIES.format(url=self.baseurl, client_id=client_id, realm=realm)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue