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.
Files changed (94) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/Dockerfile +24 -24
  3. data/.github/workflows/ci.yml +80 -83
  4. data/.gitignore +9 -9
  5. data/.rspec +2 -2
  6. data/CHANGELOG.md +194 -188
  7. data/Dockerfile +12 -12
  8. data/Gemfile +3 -3
  9. data/Gemfile.lock +51 -49
  10. data/MIT-LICENSE +20 -20
  11. data/README.md +748 -748
  12. data/bin/console +9 -9
  13. data/keycloak-admin.gemspec +24 -24
  14. data/lib/keycloak-admin/client/attack_detection_client.rb +41 -41
  15. data/lib/keycloak-admin/client/client.rb +56 -56
  16. data/lib/keycloak-admin/client/client_authz_permission_client.rb +80 -80
  17. data/lib/keycloak-admin/client/client_authz_policy_client.rb +75 -75
  18. data/lib/keycloak-admin/client/client_authz_resource_client.rb +92 -92
  19. data/lib/keycloak-admin/client/client_authz_scope_client.rb +70 -70
  20. data/lib/keycloak-admin/client/client_client.rb +71 -71
  21. data/lib/keycloak-admin/client/client_role_client.rb +20 -20
  22. data/lib/keycloak-admin/client/client_role_mappings_client.rb +32 -32
  23. data/lib/keycloak-admin/client/configurable_token_client.rb +35 -35
  24. data/lib/keycloak-admin/client/group_client.rb +148 -131
  25. data/lib/keycloak-admin/client/identity_provider_client.rb +51 -51
  26. data/lib/keycloak-admin/client/realm_client.rb +122 -122
  27. data/lib/keycloak-admin/client/role_client.rb +59 -59
  28. data/lib/keycloak-admin/client/role_mapper_client.rb +47 -45
  29. data/lib/keycloak-admin/client/token_client.rb +29 -29
  30. data/lib/keycloak-admin/client/user_client.rb +266 -266
  31. data/lib/keycloak-admin/configuration.rb +52 -52
  32. data/lib/keycloak-admin/representation/attack_detection_representation.rb +17 -17
  33. data/lib/keycloak-admin/representation/camel_json.rb +12 -12
  34. data/lib/keycloak-admin/representation/client_authz_permission_representation.rb +33 -33
  35. data/lib/keycloak-admin/representation/client_authz_policy_config_representation.rb +14 -14
  36. data/lib/keycloak-admin/representation/client_authz_policy_representation.rb +26 -26
  37. data/lib/keycloak-admin/representation/client_authz_resource_representation.rb +25 -25
  38. data/lib/keycloak-admin/representation/client_authz_scope_representation.rb +16 -16
  39. data/lib/keycloak-admin/representation/client_representation.rb +71 -71
  40. data/lib/keycloak-admin/representation/credential_representation.rb +38 -38
  41. data/lib/keycloak-admin/representation/federated_identity_representation.rb +15 -15
  42. data/lib/keycloak-admin/representation/group_representation.rb +21 -21
  43. data/lib/keycloak-admin/representation/identity_provider_mapper_representation.rb +19 -19
  44. data/lib/keycloak-admin/representation/identity_provider_representation.rb +67 -67
  45. data/lib/keycloak-admin/representation/impersonation_redirection_representation.rb +16 -16
  46. data/lib/keycloak-admin/representation/impersonation_representation.rb +43 -43
  47. data/lib/keycloak-admin/representation/protocol_mapper_representation.rb +19 -19
  48. data/lib/keycloak-admin/representation/realm_representation.rb +14 -14
  49. data/lib/keycloak-admin/representation/representation.rb +23 -23
  50. data/lib/keycloak-admin/representation/role_representation.rb +19 -19
  51. data/lib/keycloak-admin/representation/session_representation.rb +22 -22
  52. data/lib/keycloak-admin/representation/token_representation.rb +39 -39
  53. data/lib/keycloak-admin/representation/user_representation.rb +47 -47
  54. data/lib/keycloak-admin/resource/base_role_containing_resource.rb +28 -28
  55. data/lib/keycloak-admin/resource/group_resource.rb +11 -11
  56. data/lib/keycloak-admin/resource/user_resource.rb +7 -7
  57. data/lib/keycloak-admin/version.rb +3 -3
  58. data/lib/keycloak-admin.rb +84 -84
  59. data/spec/client/attack_detection_client_spec.rb +102 -102
  60. data/spec/client/client_authz_permission_client_spec.rb +170 -170
  61. data/spec/client/client_authz_policy_client_spec.rb +169 -169
  62. data/spec/client/client_authz_resource_client_spec.rb +150 -150
  63. data/spec/client/client_authz_scope_client_spec.rb +133 -133
  64. data/spec/client/client_client_spec.rb +133 -133
  65. data/spec/client/client_role_mappings_client_spec.rb +82 -82
  66. data/spec/client/client_spec.rb +28 -28
  67. data/spec/client/configurable_token_client_spec.rb +34 -34
  68. data/spec/client/group_client_spec.rb +328 -258
  69. data/spec/client/identity_provider_client_spec.rb +92 -92
  70. data/spec/client/realm_client_spec.rb +155 -155
  71. data/spec/client/role_client_spec.rb +79 -79
  72. data/spec/client/role_mapper_client_spec.rb +113 -68
  73. data/spec/client/token_client_spec.rb +68 -68
  74. data/spec/client/user_client_spec.rb +373 -373
  75. data/spec/configuration_spec.rb +113 -113
  76. data/spec/integration/client_authorization_spec.rb +93 -95
  77. data/spec/representation/attack_detection_representation_spec.rb +15 -15
  78. data/spec/representation/client_authz_permission_representation_spec.rb +52 -52
  79. data/spec/representation/client_authz_policy_representation_spec.rb +46 -46
  80. data/spec/representation/client_authz_resource_representation_spec.rb +33 -33
  81. data/spec/representation/client_authz_scope_representation_spec.rb +18 -18
  82. data/spec/representation/client_representation_spec.rb +119 -119
  83. data/spec/representation/group_representation_spec.rb +22 -22
  84. data/spec/representation/identity_provider_mapper_representation_spec.rb +24 -24
  85. data/spec/representation/identity_provider_representation_spec.rb +113 -113
  86. data/spec/representation/impersonation_representation_spec.rb +163 -163
  87. data/spec/representation/protocol_mapper_representation_spec.rb +57 -57
  88. data/spec/representation/role_representation_spec.rb +37 -37
  89. data/spec/representation/session_representation_spec.rb +15 -15
  90. data/spec/representation/user_representation_spec.rb +15 -15
  91. data/spec/resource/group_resource_spec.rb +14 -14
  92. data/spec/resource/user_resource_spec.rb +14 -14
  93. data/spec/spec_helper.rb +37 -37
  94. 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
- method: :delete,
27
- url: realm_level_url,
28
- payload: create_payload(role_representation_list),
29
- headers: headers
30
- )
31
- end
32
- end
33
-
34
- def remove_all_realm_roles
35
- execute_http do
36
- RestClient::Resource.new(realm_level_url, @configuration.rest_client_options).delete(headers)
37
- end
38
- true
39
- end
40
-
41
- def realm_level_url
42
- "#{@user_resource.resource_url}/role-mappings/realm"
43
- end
44
- end
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