Coder Social home page Coder Social logo

keycloak-adapter's Introduction

KeycloakAdapter

Adaptador de Keycloak para o Laravel. Esse adaptador utiliza os pacotes:

(as versões do oauth2-client e do random_compatforam fixadas devido a uma limitação do oauth2-keycloak)

Para projetos com login de SSO, utilizando o Keycloak em aplicações construídas com a framework Laravel.

Instalação

  1. O pacote não está hospedado em um repositório externo (p.ex. packagist), portanto, devemos configurar um repositório local para o composer.

    No arquivo composer.json na raiz da sua aplicação, adicionar:

       ...
       // adicionar repositorio local
        "repositories": {
            "local": {
                "type": "vcs",
                "url": "https://gitlab.pbh.gov.br/prodabel-laravel-pacotes/keycloak-adapter.git"
            }
        },
        ...
        
        "require": {
            "php": "^7.1.3",
            "fideloper/proxy": "^4.0",
            "laravel/framework": "5.7.*",
            "laravel/tinker": "^1.0",
            // adicionar pacote
            "prodabel/keycloakadapter": "*"
        },
        
        ...
        
        "autoload": {
            "psr-4": {
                // adicionar classe no autoload
                "Prodabel\\KeycloakAdapter\\": "packages/Prodabel/KeycloakAdapter/src",
                "App\\": "app/"
            },
            "classmap": [
                "database/seeds",
                "database/factories"
            ]
        },
  2. Agora sim, podemos baixar o pacote local, via Composer:

    $ composer update

Configuração

  1. A fim de publicar as configurações do Keycloak, executar o comando:
    $ php artisan vendor:publish --provider="Prodabel\KeycloakAdapter\KeycloakAdapterServiceProvider"
    Esse comando, criará:
    • o arquivo config/keycloak.php, com configurações do servidor Keycloak;

    • o arquivo config/keycloak_auth.php, com configurações para a autenticação em Laravel.

      Para que a autenticação funcione automaticamente, substitua o arquivo config/auth.php pelo arquivo config/keycloak_auth.php.

      (O Laravel não permite a substituição automática para evitar que as configurações do desenvolvedor sejam sobrescritas erradamente)

  2. No arquivo .env, adicionar:
    KEYCLOAK_AUTHSERVERURL=http://keycloak.qa.pbh/auth
    KEYCLOAK_REALM=teste_cecilia
    KEYCLOAK_CLIENTID=teste2_dsv
    KEYCLOAK_CLIENTSECRET=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    KEYCLOAK_RSA_PUBLIC_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    KEYCLOAK_REDIRECTURI=http://localhost:7000/login
    KEYCLOAK_REDIRECTLOGOUTURI=http://localhost:7000
    (Preencher as informações com os parâmetros da sua aplicação)
  3. Por fim, é importante garantir que os cookies sejam sempre decriptados antes da autenticação. No arquivo app/Http/Kernel.php:
        protected $middlewarePriority = [
            \Illuminate\Session\Middleware\StartSession::class,
            // adicionar middleware no array de prioridades
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\Authenticate::class,
            \Illuminate\Session\Middleware\AuthenticateSession::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
            \Illuminate\Auth\Middleware\Authorize::class,
        ];

Informações adicionais

O pacote prodabel/keycloakadapter já registra as seguintes rotas:

  • /oi => Rota de teste para usuários não autenticados. Imprime "Hello World!" na tela.
  • /teste => Rota de teste para usuários autenticados. Imprime "rota protegida / usuário autenticado" na tela.
  • /infousu => Rota para usuários autenticados. Imprime os dados do usuário logado na tela.
  • /login => Rota de login. Se autenticado, redireciona para a tela /home, caso contrário, redireciona para o login do Keycloak.
  • /logout => Rota de logout. Realiza logout no Keycloak, limpa os cookies e a sessão.

Uma vez que o pacote esteja instalado e configurado, você já pode acessar essas rotas, ou sobrescrevê-las.

Change log

Please see the changelog for more information on what has changed recently.

Credits

License

license. Please see the license file for more information.

keycloak-adapter's People

Contributors

ceciliarb avatar

Stargazers

Thiago Porto avatar

Watchers

James Cloos avatar  avatar

Forkers

pauloboss

keycloak-adapter's Issues

is this project open for public?

I tried to follow your instruction, but seems required credentials. I get following msg where perform composer update.
Authentication required (gitlab.pbh.gov.br): Username:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.