keycloak 2.2.3 → 2.2.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|