keycloak-admin 1.1.3 → 1.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/Dockerfile +24 -24
- data/.github/workflows/ci.yml +80 -83
- data/.gitignore +9 -9
- data/.rspec +2 -2
- data/CHANGELOG.md +194 -188
- data/Dockerfile +12 -12
- data/Gemfile +3 -3
- data/Gemfile.lock +51 -49
- data/MIT-LICENSE +20 -20
- data/README.md +748 -748
- data/bin/console +9 -9
- data/keycloak-admin.gemspec +24 -24
- data/lib/keycloak-admin/client/attack_detection_client.rb +41 -41
- data/lib/keycloak-admin/client/client.rb +56 -56
- data/lib/keycloak-admin/client/client_authz_permission_client.rb +80 -80
- data/lib/keycloak-admin/client/client_authz_policy_client.rb +75 -75
- data/lib/keycloak-admin/client/client_authz_resource_client.rb +92 -92
- data/lib/keycloak-admin/client/client_authz_scope_client.rb +70 -70
- data/lib/keycloak-admin/client/client_client.rb +71 -71
- data/lib/keycloak-admin/client/client_role_client.rb +20 -20
- data/lib/keycloak-admin/client/client_role_mappings_client.rb +32 -32
- data/lib/keycloak-admin/client/configurable_token_client.rb +35 -35
- data/lib/keycloak-admin/client/group_client.rb +148 -131
- data/lib/keycloak-admin/client/identity_provider_client.rb +51 -51
- data/lib/keycloak-admin/client/realm_client.rb +122 -122
- data/lib/keycloak-admin/client/role_client.rb +59 -59
- data/lib/keycloak-admin/client/role_mapper_client.rb +47 -45
- data/lib/keycloak-admin/client/token_client.rb +29 -29
- data/lib/keycloak-admin/client/user_client.rb +266 -266
- data/lib/keycloak-admin/configuration.rb +52 -52
- data/lib/keycloak-admin/representation/attack_detection_representation.rb +17 -17
- data/lib/keycloak-admin/representation/camel_json.rb +12 -12
- data/lib/keycloak-admin/representation/client_authz_permission_representation.rb +33 -33
- data/lib/keycloak-admin/representation/client_authz_policy_config_representation.rb +14 -14
- data/lib/keycloak-admin/representation/client_authz_policy_representation.rb +26 -26
- data/lib/keycloak-admin/representation/client_authz_resource_representation.rb +25 -25
- data/lib/keycloak-admin/representation/client_authz_scope_representation.rb +16 -16
- data/lib/keycloak-admin/representation/client_representation.rb +71 -71
- data/lib/keycloak-admin/representation/credential_representation.rb +38 -38
- data/lib/keycloak-admin/representation/federated_identity_representation.rb +15 -15
- data/lib/keycloak-admin/representation/group_representation.rb +21 -21
- data/lib/keycloak-admin/representation/identity_provider_mapper_representation.rb +19 -19
- data/lib/keycloak-admin/representation/identity_provider_representation.rb +67 -67
- data/lib/keycloak-admin/representation/impersonation_redirection_representation.rb +16 -16
- data/lib/keycloak-admin/representation/impersonation_representation.rb +43 -43
- data/lib/keycloak-admin/representation/protocol_mapper_representation.rb +19 -19
- data/lib/keycloak-admin/representation/realm_representation.rb +14 -14
- data/lib/keycloak-admin/representation/representation.rb +23 -23
- data/lib/keycloak-admin/representation/role_representation.rb +19 -19
- data/lib/keycloak-admin/representation/session_representation.rb +22 -22
- data/lib/keycloak-admin/representation/token_representation.rb +39 -39
- data/lib/keycloak-admin/representation/user_representation.rb +47 -47
- data/lib/keycloak-admin/resource/base_role_containing_resource.rb +28 -28
- data/lib/keycloak-admin/resource/group_resource.rb +11 -11
- data/lib/keycloak-admin/resource/user_resource.rb +7 -7
- data/lib/keycloak-admin/version.rb +3 -3
- data/lib/keycloak-admin.rb +84 -84
- data/spec/client/attack_detection_client_spec.rb +102 -102
- data/spec/client/client_authz_permission_client_spec.rb +170 -170
- data/spec/client/client_authz_policy_client_spec.rb +169 -169
- data/spec/client/client_authz_resource_client_spec.rb +150 -150
- data/spec/client/client_authz_scope_client_spec.rb +133 -133
- data/spec/client/client_client_spec.rb +133 -133
- data/spec/client/client_role_mappings_client_spec.rb +82 -82
- data/spec/client/client_spec.rb +28 -28
- data/spec/client/configurable_token_client_spec.rb +34 -34
- data/spec/client/group_client_spec.rb +328 -258
- data/spec/client/identity_provider_client_spec.rb +92 -92
- data/spec/client/realm_client_spec.rb +155 -155
- data/spec/client/role_client_spec.rb +79 -79
- data/spec/client/role_mapper_client_spec.rb +113 -68
- data/spec/client/token_client_spec.rb +68 -68
- data/spec/client/user_client_spec.rb +373 -373
- data/spec/configuration_spec.rb +113 -113
- data/spec/integration/client_authorization_spec.rb +93 -95
- data/spec/representation/attack_detection_representation_spec.rb +15 -15
- data/spec/representation/client_authz_permission_representation_spec.rb +52 -52
- data/spec/representation/client_authz_policy_representation_spec.rb +46 -46
- data/spec/representation/client_authz_resource_representation_spec.rb +33 -33
- data/spec/representation/client_authz_scope_representation_spec.rb +18 -18
- data/spec/representation/client_representation_spec.rb +119 -119
- data/spec/representation/group_representation_spec.rb +22 -22
- data/spec/representation/identity_provider_mapper_representation_spec.rb +24 -24
- data/spec/representation/identity_provider_representation_spec.rb +113 -113
- data/spec/representation/impersonation_representation_spec.rb +163 -163
- data/spec/representation/protocol_mapper_representation_spec.rb +57 -57
- data/spec/representation/role_representation_spec.rb +37 -37
- data/spec/representation/session_representation_spec.rb +15 -15
- data/spec/representation/user_representation_spec.rb +15 -15
- data/spec/resource/group_resource_spec.rb +14 -14
- data/spec/resource/user_resource_spec.rb +14 -14
- data/spec/spec_helper.rb +37 -37
- metadata +10 -10
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
module KeycloakAdmin
|
|
2
|
-
class RoleClient < Client
|
|
3
|
-
def initialize(configuration, realm_client)
|
|
4
|
-
super(configuration)
|
|
5
|
-
raise ArgumentError.new("realm must be defined") unless realm_client.name_defined?
|
|
6
|
-
@realm_client = realm_client
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
def list
|
|
10
|
-
response = execute_http do
|
|
11
|
-
RestClient::Resource.new(roles_url, @configuration.rest_client_options).get(headers)
|
|
12
|
-
end
|
|
13
|
-
JSON.parse(response).map { |role_as_hash| RoleRepresentation.from_hash(role_as_hash) }
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
# Returns the role representation for the specified role name
|
|
17
|
-
def get(name)
|
|
18
|
-
# allows special characters in the name like space
|
|
19
|
-
name = URI.encode_uri_component(name)
|
|
20
|
-
response = execute_http do
|
|
21
|
-
RestClient::Resource.new(role_name_url(name), @configuration.rest_client_options).get(headers)
|
|
22
|
-
end
|
|
23
|
-
RoleRepresentation.from_hash JSON.parse(response)
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
# Lists all groups that have the specified role name assigned
|
|
27
|
-
def list_groups(name)
|
|
28
|
-
# allows special characters in the name like space
|
|
29
|
-
name = URI.encode_uri_component(name)
|
|
30
|
-
response = execute_http do
|
|
31
|
-
RestClient::Resource.new("#{role_name_url(name)}/groups", @configuration.rest_client_options).get(headers)
|
|
32
|
-
end
|
|
33
|
-
JSON.parse(response).map { |role_as_hash| GroupRepresentation.from_hash(role_as_hash) }
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def save(role_representation)
|
|
37
|
-
execute_http do
|
|
38
|
-
payload = create_payload(role_representation)
|
|
39
|
-
if role_representation.id
|
|
40
|
-
RestClient::Resource.new(role_id_url(role_representation.id), @configuration.rest_client_options).put(payload, headers)
|
|
41
|
-
else
|
|
42
|
-
RestClient::Resource.new(roles_url, @configuration.rest_client_options).post(payload, headers)
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def roles_url
|
|
48
|
-
"#{@realm_client.realm_admin_url}/roles"
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def role_id_url(id)
|
|
52
|
-
"#{@realm_client.realm_admin_url}/roles-by-id/#{id}"
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
def role_name_url(name)
|
|
56
|
-
"#{@realm_client.realm_admin_url}/roles/#{name}"
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
|
1
|
+
module KeycloakAdmin
|
|
2
|
+
class RoleClient < Client
|
|
3
|
+
def initialize(configuration, realm_client)
|
|
4
|
+
super(configuration)
|
|
5
|
+
raise ArgumentError.new("realm must be defined") unless realm_client.name_defined?
|
|
6
|
+
@realm_client = realm_client
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def list
|
|
10
|
+
response = execute_http do
|
|
11
|
+
RestClient::Resource.new(roles_url, @configuration.rest_client_options).get(headers)
|
|
12
|
+
end
|
|
13
|
+
JSON.parse(response).map { |role_as_hash| RoleRepresentation.from_hash(role_as_hash) }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Returns the role representation for the specified role name
|
|
17
|
+
def get(name)
|
|
18
|
+
# allows special characters in the name like space
|
|
19
|
+
name = URI.encode_uri_component(name)
|
|
20
|
+
response = execute_http do
|
|
21
|
+
RestClient::Resource.new(role_name_url(name), @configuration.rest_client_options).get(headers)
|
|
22
|
+
end
|
|
23
|
+
RoleRepresentation.from_hash JSON.parse(response)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Lists all groups that have the specified role name assigned
|
|
27
|
+
def list_groups(name)
|
|
28
|
+
# allows special characters in the name like space
|
|
29
|
+
name = URI.encode_uri_component(name)
|
|
30
|
+
response = execute_http do
|
|
31
|
+
RestClient::Resource.new("#{role_name_url(name)}/groups", @configuration.rest_client_options).get(headers)
|
|
32
|
+
end
|
|
33
|
+
JSON.parse(response).map { |role_as_hash| GroupRepresentation.from_hash(role_as_hash) }
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def save(role_representation)
|
|
37
|
+
execute_http do
|
|
38
|
+
payload = create_payload(role_representation)
|
|
39
|
+
if role_representation.id
|
|
40
|
+
RestClient::Resource.new(role_id_url(role_representation.id), @configuration.rest_client_options).put(payload, headers)
|
|
41
|
+
else
|
|
42
|
+
RestClient::Resource.new(roles_url, @configuration.rest_client_options).post(payload, headers)
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def roles_url
|
|
48
|
+
"#{@realm_client.realm_admin_url}/roles"
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def role_id_url(id)
|
|
52
|
+
"#{@realm_client.realm_admin_url}/roles-by-id/#{id}"
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def role_name_url(name)
|
|
56
|
+
"#{@realm_client.realm_admin_url}/roles/#{name}"
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -1,45 +1,47 @@
|
|
|
1
|
-
module KeycloakAdmin
|
|
2
|
-
class RoleMapperClient < Client
|
|
3
|
-
def initialize(configuration, user_resource)
|
|
4
|
-
super(configuration)
|
|
5
|
-
@user_resource = user_resource
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
def list
|
|
9
|
-
response = execute_http do
|
|
10
|
-
RestClient::Resource.new(realm_level_url, @configuration.rest_client_options).get(headers)
|
|
11
|
-
end
|
|
12
|
-
JSON.parse(response).map { |role_as_hash| RoleRepresentation.from_hash(role_as_hash) }
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def save_realm_level(role_representation_list)
|
|
16
|
-
execute_http do
|
|
17
|
-
RestClient::Resource.new(realm_level_url, @configuration.rest_client_options).post(
|
|
18
|
-
create_payload(role_representation_list), headers
|
|
19
|
-
)
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def remove_realm_level(role_representation_list)
|
|
24
|
-
execute_http do
|
|
25
|
-
RestClient::Request.execute(
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
end
|
|
1
|
+
module KeycloakAdmin
|
|
2
|
+
class RoleMapperClient < Client
|
|
3
|
+
def initialize(configuration, user_resource)
|
|
4
|
+
super(configuration)
|
|
5
|
+
@user_resource = user_resource
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def list
|
|
9
|
+
response = execute_http do
|
|
10
|
+
RestClient::Resource.new(realm_level_url, @configuration.rest_client_options).get(headers)
|
|
11
|
+
end
|
|
12
|
+
JSON.parse(response).map { |role_as_hash| RoleRepresentation.from_hash(role_as_hash) }
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def save_realm_level(role_representation_list)
|
|
16
|
+
execute_http do
|
|
17
|
+
RestClient::Resource.new(realm_level_url, @configuration.rest_client_options).post(
|
|
18
|
+
create_payload(role_representation_list), headers
|
|
19
|
+
)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def remove_realm_level(role_representation_list)
|
|
24
|
+
execute_http do
|
|
25
|
+
RestClient::Request.execute(
|
|
26
|
+
@configuration.rest_client_options.merge(
|
|
27
|
+
method: :delete,
|
|
28
|
+
url: realm_level_url,
|
|
29
|
+
payload: create_payload(role_representation_list),
|
|
30
|
+
headers: headers
|
|
31
|
+
)
|
|
32
|
+
)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def remove_all_realm_roles
|
|
37
|
+
execute_http do
|
|
38
|
+
RestClient::Resource.new(realm_level_url, @configuration.rest_client_options).delete(headers)
|
|
39
|
+
end
|
|
40
|
+
true
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def realm_level_url
|
|
44
|
+
"#{@user_resource.resource_url}/role-mappings/realm"
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
require "rest-client"
|
|
2
|
-
|
|
3
|
-
module KeycloakAdmin
|
|
4
|
-
class TokenClient < Client
|
|
5
|
-
def initialize(configuration, realm_client)
|
|
6
|
-
super(configuration)
|
|
7
|
-
raise ArgumentError.new("realm must be defined") unless realm_client.name_defined?
|
|
8
|
-
@realm_client = realm_client
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def token_url
|
|
12
|
-
"#{realm_url}/protocol/openid-connect/token"
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def realm_url
|
|
16
|
-
@realm_client.realm_url
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def get
|
|
20
|
-
response = execute_http do
|
|
21
|
-
RestClient::Resource.new(token_url, @configuration.rest_client_options).post(
|
|
22
|
-
@configuration.body_for_token_retrieval,
|
|
23
|
-
@configuration.headers_for_token_retrieval
|
|
24
|
-
)
|
|
25
|
-
end
|
|
26
|
-
TokenRepresentation.from_json(response.body)
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
1
|
+
require "rest-client"
|
|
2
|
+
|
|
3
|
+
module KeycloakAdmin
|
|
4
|
+
class TokenClient < Client
|
|
5
|
+
def initialize(configuration, realm_client)
|
|
6
|
+
super(configuration)
|
|
7
|
+
raise ArgumentError.new("realm must be defined") unless realm_client.name_defined?
|
|
8
|
+
@realm_client = realm_client
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def token_url
|
|
12
|
+
"#{realm_url}/protocol/openid-connect/token"
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def realm_url
|
|
16
|
+
@realm_client.realm_url
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def get
|
|
20
|
+
response = execute_http do
|
|
21
|
+
RestClient::Resource.new(token_url, @configuration.rest_client_options).post(
|
|
22
|
+
@configuration.body_for_token_retrieval,
|
|
23
|
+
@configuration.headers_for_token_retrieval
|
|
24
|
+
)
|
|
25
|
+
end
|
|
26
|
+
TokenRepresentation.from_json(response.body)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|