keycloak 2.2.3 → 2.2.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/README.md +136 -2
- data/lib/keycloak.rb +4 -4
- data/lib/keycloak/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c12d7d40888c54116b3acf7b8c557f5cc3f8cf3e
|
4
|
+
data.tar.gz: '087f959c26357e9b0b42dd1d75bd3f5c092ac8e6'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 56adbcfc6faf37f64fe34946ec479442d7a174af62cb9160e340b2439304bd3d2c3c9cf0908f8e869cd55e31553219aab065bb268e4eb72cf8d8856f084aac34
|
7
|
+
data.tar.gz: c47d7d3e4b8dd908f75fb447cf6b6102ed90faca575c75cd5b81881426734180bb3d2d58dd3b8a07d3b2bbf21fc931bf49a4adabca0fd19a8335af23d346750b
|
data/README.md
CHANGED
@@ -88,9 +88,9 @@ end
|
|
88
88
|
<b>Observação:</b> Os atributos `Keycloak.proc_cookie_token` e `Keycloak.proc_external_attributes` podem ser definidos no `initialize` do controler `ApplicationController`.
|
89
89
|
|
90
90
|
|
91
|
-
### Client
|
91
|
+
### Keycloak::Client
|
92
92
|
|
93
|
-
|
93
|
+
O módulo `Keycloak::Client` possui os métodos que representam os serviços de <b>endpoints</b>. Esses serviços são fundamentais para a criação e atualização de tokens, efetuação de login e logout, e, também para a obtenção de informações sintéticas de um usuário logado. O que habilita a gem a fazer uso de todos esses serviços é o arquivo de instalação do client citado anteriormente.
|
94
94
|
|
95
95
|
Vamos ao detalhamento de cada um desses métodos:
|
96
96
|
|
@@ -191,3 +191,137 @@ Keycloak::Client.external_attributes
|
|
191
191
|
```
|
192
192
|
|
193
193
|
Quando implementado o método `Keycloak.proc_external_attributes`, o método `external_attributes` o retornará. A finalidade desse método é retornar os atributos específicos da aplicação não mapeados no Keycloak.
|
194
|
+
|
195
|
+
|
196
|
+
### Keycloak::Admin
|
197
|
+
|
198
|
+
O módulo `Keycloak::Admin`disponibiliza métodos que representam as [REST APIs do Keycloak](http://www.keycloak.org/docs-api/3.2/rest-api/index.html). Para a utilização dessas APIs, será necessário um `access_token` ativo, ou seja, a autenticação deverá ocorrer antes da utilização dos métodos para que um token válido seja utilizado como credencial. Caso o `access_token` não seja informado, então a gem utilizará o `access_token` do cookie. O usuário autenticado deverá ter o `role` do respectivo serviço invocado - roles do client `realm-management`, que representa o gerênciamento do reino.
|
199
|
+
|
200
|
+
Segue abaixo a lista dos métodos. O parâmetro de rota `{realm}` de todas as APIs será obtido do arquivo de instalação `keycloak.json`:
|
201
|
+
|
202
|
+
|
203
|
+
```ruby
|
204
|
+
# GET /admin/realms/{realm}/users
|
205
|
+
Keycloak::Admin.get_users(query_parameters = nil, access_token = nil)
|
206
|
+
```
|
207
|
+
|
208
|
+
`get_users` retorna uma lista de usuários, filtrada de acordo com o hash de parâmetros passado em `query_parameters`.
|
209
|
+
|
210
|
+
|
211
|
+
```ruby
|
212
|
+
# POST /admin/realms/{realm}/users
|
213
|
+
Keycloak::Admin.create_user(user_representation, access_token = nil)
|
214
|
+
```
|
215
|
+
|
216
|
+
`create_user` cria um novo usuário no Keycloak. O parâmetro `user_representation` deve ser um hash conforme o [UserRepresentation](http://www.keycloak.org/docs-api/3.2/rest-api/index.html#_userrepresentation) do Keycloak. O retorno deste método será `true` para o caso de sucesso.
|
217
|
+
|
218
|
+
|
219
|
+
```ruby
|
220
|
+
# GET /admin/realms/{realm}/users/count
|
221
|
+
Keycloak::Admin.count_users(access_token = nil)
|
222
|
+
```
|
223
|
+
|
224
|
+
`count_users` retorna a quantidade de usuários do reino.
|
225
|
+
|
226
|
+
|
227
|
+
```ruby
|
228
|
+
# GET /admin/realms/{realm}/users/{id}
|
229
|
+
Keycloak::Admin.get_user(id, access_token = nil)
|
230
|
+
```
|
231
|
+
|
232
|
+
`get_user` retorna a representação do usuário identificado pelo parâmetro `id` - que é o <b>ID</b> criado pelo Keycloak ao criar um novo usuário.
|
233
|
+
|
234
|
+
|
235
|
+
```ruby
|
236
|
+
# PUT /admin/realms/{realm}/users/{id}
|
237
|
+
Keycloak::Admin.update_user(id, user_representation, access_token = nil)
|
238
|
+
```
|
239
|
+
|
240
|
+
`update_user` atualiza o cadastro do usuário identificado pelo `id` - que é o <b>ID</b> criado pelo Keycloak ao criar um novo usuário. No parâmetro `user_representation` deverá ser uma hash com os campos que serão alterados, respeitando o [UserRepresentation](http://www.keycloak.org/docs-api/3.2/rest-api/index.html#_userrepresentation) do Keycloak. O retorno deste método será `true` para o caso de sucesso.
|
241
|
+
|
242
|
+
|
243
|
+
```ruby
|
244
|
+
# DELETE /admin/realms/{realm}/users/{id}
|
245
|
+
Keycloak::Admin.delete_user(id, access_token = nil)
|
246
|
+
```
|
247
|
+
|
248
|
+
`delete_user` exclui o cadastro do usuário identificado pelo `id` - que é o <b>ID</b> criado pelo Keycloak ao criar um novo usuário. O retorno deste método será `true` para o caso de sucesso.
|
249
|
+
|
250
|
+
|
251
|
+
```ruby
|
252
|
+
# DELETE /admin/realms/{realm}/users/{id}/consents/{client}
|
253
|
+
Keycloak::Admin.revoke_consent_user(id, client_id = nil, access_token = nil)
|
254
|
+
```
|
255
|
+
|
256
|
+
`revoke_consent_user` revoga os tokens de um usuário identificado pelo `id` - que é o <b>ID</b> criado pelo Keycloak ao criar um novo usuário - no client identificado pelo parâmetro `client_id`.
|
257
|
+
|
258
|
+
|
259
|
+
```ruby
|
260
|
+
# PUT /admin/realms/{realm}/users/{id}/execute-actions-email
|
261
|
+
Keycloak::Admin.update_account_email(id, actions, redirect_uri = '', client_id = nil, access_token = nil)
|
262
|
+
```
|
263
|
+
|
264
|
+
`update_account_email` envia um e-mail de atualização da conta para o usuário representado pelo parâmetro `id`. O email contém um link que o usuário poderá clicar para executar um conjunto de ações representados pelo parâmetro `actions` - que aguarda um `array` de [ações definidas pelo Keycloak](http://www.keycloak.org/docs/3.2/server_admin/topics/users/required-actions.html). Um exemplo de valor que pode ser passado para o parâmetro `actions` é `['UPDATE_PASSWORD']`, que indica que a ação que o usuário deverá tomar ao clicar o link do e-mail é de alterar a sua senha. No parâmetro `redirect_uri`, caso necessário, deverá ser passada uma <b>url</b> para que, ao término do envio do e-mail, a aplicação seja redirecionada. O parâmetro `client_id` deverá ser informado caso o Client responsável pela as ações que deverão ser executadas não seja o mesmo do arquivo de instalação `keycloak.json`.
|
265
|
+
|
266
|
+
|
267
|
+
```ruby
|
268
|
+
# GET /admin/realms/{realm}/users/{id}/role-mappings
|
269
|
+
Keycloak::Admin.get_role_mappings(id, access_token = nil)
|
270
|
+
```
|
271
|
+
|
272
|
+
`get_role_mappings` retorna todas as <b>Role Mappings</b> do reino atribuídas ao usuário identificado pelo parâmetro `id`, independentemente do Client.
|
273
|
+
|
274
|
+
|
275
|
+
```ruby
|
276
|
+
# GET /admin/realms/{realm}/clients
|
277
|
+
Keycloak::Admin.get_clients(query_parameters = nil, access_token = nil)
|
278
|
+
```
|
279
|
+
|
280
|
+
`get_clients` retorna uma lista de [ClientRepresentation](http://www.keycloak.org/docs-api/3.2/rest-api/index.html#_clientrepresentation) Clients pertencentes ao reino. O parâmetro `query_parameters` espera um hash com os atributos `clientId` - caso deseje que a lista seja filtrada pelo `client_id` - e `viewableOnly` - para filtrar se os Clients de administração do Keycloak serão ou não retornados na lista.
|
281
|
+
|
282
|
+
|
283
|
+
```ruby
|
284
|
+
# GET /admin/realms/{realm}/clients/{id}/roles
|
285
|
+
Keycloak::Admin.get_all_roles_client(id, access_token = nil)
|
286
|
+
```
|
287
|
+
|
288
|
+
`get_all_roles_client` retorna uma lista de [RoleRepresentation](http://www.keycloak.org/docs-api/3.2/rest-api/index.html#_rolerepresentation) com todos os <b>roles</b> do client identidicado pelo parâmetro `id` - deve ser passado nesse parâmetro o `ID` do Client e não o `client_id`.
|
289
|
+
|
290
|
+
|
291
|
+
```ruby
|
292
|
+
# GET /admin/realms/{realm}/clients/{id}/roles/{role-name}
|
293
|
+
Keycloak::Admin.get_roles_client_by_name(id, role_name, access_token = nil)
|
294
|
+
```
|
295
|
+
|
296
|
+
`get_roles_client_by_name` retorna a [RoleRepresentation](http://www.keycloak.org/docs-api/3.2/rest-api/index.html#_rolerepresentation) do role identificado pelo parâmetro `role_name` - que é o nome do role.
|
297
|
+
|
298
|
+
|
299
|
+
```ruby
|
300
|
+
# POST /admin/realms/{realm}/users/{id}/role-mappings/clients/{client}
|
301
|
+
Keycloak::Admin.add_client_level_roles_to_user(id, client, role_representation, access_token = nil)
|
302
|
+
```
|
303
|
+
|
304
|
+
`add_client_level_roles_to_user` insere um <b>role</b> do Client (representado pelo parâmetro `client`) ao usuário representado pelo parâmetro `id`. O parâmetro `role_representation` deverá receber um `array` de [RoleRepresentation](http://www.keycloak.org/docs-api/3.2/rest-api/index.html#_rolerepresentation) que serão inseridos no usuário. Em caso de sucesso, o retorno será `true`.
|
305
|
+
|
306
|
+
|
307
|
+
```ruby
|
308
|
+
# DELETE /admin/realms/{realm}/users/{id}/role-mappings/clients/{client}
|
309
|
+
Keycloak::Admin.delete_client_level_roles_from_user(id, client, role_representation, access_token = nil)
|
310
|
+
```
|
311
|
+
|
312
|
+
`delete_client_level_roles_from_user` exclui um <b>Client-Role</b> (representado pelo parâmetro `client`) do usuário representado pelo parâmetro `id`. O parâmetro `role_representation` deverá receber um `array` de [RoleRepresentation](http://www.keycloak.org/docs-api/3.2/rest-api/index.html#_rolerepresentation) que serão retirados do usuário. Em caso de sucesso, o retorno será `true`.
|
313
|
+
|
314
|
+
|
315
|
+
```ruby
|
316
|
+
# GET /admin/realms/{realm}/users/{id}/role-mappings/clients/{client}
|
317
|
+
Keycloak::Admin.get_client_level_role_for_user_and_app(id, client, access_token = nil)
|
318
|
+
```
|
319
|
+
|
320
|
+
`get_client_level_role_for_user_and_app` retorna uma lista de [RoleRepresentation](http://www.keycloak.org/docs-api/3.2/rest-api/index.html#_rolerepresentation) dos <b>Client-Roles</b> do Client representado pelo parâmetro `client` vinculados ao usuário representado pelo parâmetro `id`.
|
321
|
+
|
322
|
+
|
323
|
+
```ruby
|
324
|
+
Keycloak::Admin.update_effective_user_roles(id, client_id, roles_names, access_token = nil)
|
325
|
+
```
|
326
|
+
|
327
|
+
`update_effective_user_roles` não está na lista de <b>Admin APIs</b> do Keycloak. Este método vincula ao usuário representado pelo parâmetro `id` todos os roles passados em um `array` no parâmetro `roles_names`. Os roles passados no parâmetro `roles_names` deverão pertencer ao Client representado pelo parâmetro `client_id`. Caso o usuário possua o vínculo com um role que não esteja no parâmetro `roles_names`, esse vínculo será removido, pois a finalidade desse método é que o usuário assuma efetivamente os roles passados nesse parâmetro. Em caso de sucesso, o retorno será `true`.
|
data/lib/keycloak.rb
CHANGED
@@ -404,7 +404,7 @@ module Keycloak
|
|
404
404
|
|
405
405
|
roles = Array.new
|
406
406
|
# Include new role
|
407
|
-
|
407
|
+
roles_names.each do |r|
|
408
408
|
if r && !r.empty?
|
409
409
|
found = false
|
410
410
|
user_roles.each do |ur|
|
@@ -423,7 +423,7 @@ module Keycloak
|
|
423
423
|
# Exclude old role
|
424
424
|
user_roles.each do |ur|
|
425
425
|
found = false
|
426
|
-
|
426
|
+
roles_names.each do |r|
|
427
427
|
if r && !r.empty?
|
428
428
|
found = ur['name'] == r
|
429
429
|
break if found
|
@@ -444,8 +444,8 @@ module Keycloak
|
|
444
444
|
end
|
445
445
|
end
|
446
446
|
|
447
|
-
def self.reset_password(id,
|
448
|
-
generic_put("users/#{id}/reset-password", nil,
|
447
|
+
def self.reset_password(id, credential_representation, access_token = nil)
|
448
|
+
generic_put("users/#{id}/reset-password", nil, credential_representation, access_token)
|
449
449
|
end
|
450
450
|
|
451
451
|
def self.get_effective_client_level_role_composite_user(id, client, access_token = nil)
|
data/lib/keycloak/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: keycloak
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
4
|
+
version: 2.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Guilherme Portugues
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-09-
|
11
|
+
date: 2017-09-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|