定制 agrodata/keycloak-guard 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

agrodata/keycloak-guard

最新稳定版本:1.10

Composer 安装命令:

composer require agrodata/keycloak-guard

包简介

Pacote para utilização de permissões via autorização do keycloak

README 文档

README

logo

&nbsp;<img src="https://img.shields.io/packagist/v/agrodata/keycloak-guard.svg" />
 <img src="https://img.shields.io/packagist/dt/agrodata/keycloak-guard.svg" />

Keycloak Guard

Biblioteca responsável por realizar a autenticação e permissionamento do keycloak nos projetos laravel. Para a autenticação foi utilizado a biblioteca do Robson Tenorio (keycloak-guard), para autorização (permissionamento) foi feita uma extensão dessa biblioteca, onde é feita uma busca do permissionamento do usuário autenticado no keycloak.

Instalação

Instale o pacote através do composer com o seguinte comando:

composer require agrodata/keycloak-guard

Na sequencia adicione a seguinte linha no arquivo `config/app.php`

<?php #config/app.php

'providers' => [
    ...
    Agrodata\Keycloak\KeycloakGuardServiceProvider::class
]

No arquivo `config/auth.phpadicione o guardagrodata-keycloak`:

<?php #config/auth.php
...
'guards' => [
    'api' => [
        'driver' => 'agrodata-keycloak',
        'provider' => 'users'
    ]
    ...
],

Configuração

Para entender como configurar o permissionamento no keycloak, consultar o seguinte artigo: https://www.appsdeveloperblog.com/fine-grained-authorization-services-in-keycloak/

Configuração da autenticação

Para configurar a autenticação deverá utilizar a documentação da biblioteca pai: https://github.com/robsontenorio/laravel-keycloak-guard#configuration

Configuração da autorização

O configuração do permissionamento ficará em um arquivo de configuração separado, pois, é uma funcionalidade opcional.

<?php # config/agrodata-keycloak.php

return [
    'enabled' => env('AGRODATA_KC_ENABLED', true),
    'endpoint' => env('AGRODATA_KC_ENDPOINT'),
    'client-id' => env('AGRODATA_KC_CLIENT_ID'),
    'realm' => env('AGRODATA_KC_REALM'),
    'concat-resource-scope' => env('AGRODATA_KC_CONCAT_RESOURCE_SCOPE', true),
];


  • 
    
  • 
    
  • ">
    
  • 
    
  • 
    
  • . Resultará em string de permissões: ```book.read```, ```book.write```<br>
    

Recursos/Serviços

Proteção de Recursos

Após a configuração da biblioteca, as permissões do usuários serão registrados no `Gate` do Laravel, portanto, será possível proteger os recursos da api com tais permissões. Um exemplo protegendo as rotas:

<?php #routes\api.php
    Route::middleware('can:book.read')->get('/book/list');
    Route::middleware('can:book.write')->post('/book/store', 'Gravação do recurso');

Serviço

A biblioteca utiliza a seguinte classe de serviço para realizar a busca das permissões e recursos no keycloak após a autenticação. Porém, caso deseje utilizar o serviço em qualquer outro lugar do sistema não há problemas. Exemplos:

<?php

/**
* Autenticação | Buscar Bearer token do usuário
*/
$bearerToken = (new \Agrodata\Keycloak\KeycloakAuthService($username, $passwrd))->auth($clientSecret)


/**
* Instanciar Serviço
 * 
 * Recebe token por parametro. Caso nulo, busca em cache o token do usuário autenticddo
*/
$kcService = new Agrodata\Keycloak\KeycloakService($bearerToken = null);

/**
* Buscar permissões 
*/
$permissions = $kcService->getOpenIdPermissions(); #busca permissões do token informado na api do keycloak
ou
$permissions = array_keys(Gate::abilities()) #busca permissões de cache registrados após autenticação


/**
*  Criar subgrupo no keycloak
*/
$kcService->createSubGroup('Novo subgrupo 1', 'Grupo A'); 

统计信息

  • 总下载量: 3.35k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2023-01-02

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固