Giter VIP home page Giter VIP logo

eidas-keycloak-extension's Introduction

Eidas Keycloak Extension

This repository contains a keycloak extension which adds support for the SAML v2.0 dialect of the eIDAS nodes. It provides an identity provider extension which allows keycloak to be setup as an "identity broker".

Keycloak is an open source Identity and Access Management system for modern applications.

eIDAS-Nodes are operated from EU member states according to the eIDAS Regulation in order to ensure that people and businesses can use their own national eIDs (electronic identification schemes) to access public services available online in other countries.

The eIDAS Nodes use an extended version of SAML v2.0 which defines a number of SAML elements and attribute definitions which are not supported by default in standard SAML implementations. This extension provides support for these extensions, by offering a custom IdP which can use this extended dialect.

See eIDAS+eID+Profile and the following documents for the v1.2 technical specifications:

Installation

Download the latest release jar from the releases page. Then deploy it in keycloak by copying it at folder KEYCLOAK_HOME/standalone/deployments/. See the keycloak documentation for the directory structure of the keycloak server.

Compatibility

Extension version Keycloak version
0.5 15.0.2 - 18.0.2
0.6 18.0.2, 19.0.2 (partial admin UI)
0.7 20.0.2 (partial admin UI)
0.8 21.0.1 (partial admin UI)
0.9 22.0.3 (partial admin UI)
0.10 23.0.2 (partial admin UI)

Configuring this extension is not yet compatible with the new AdminUI (keycloak.v2) from Keycloak. You might be able to use it by enabling the old Admin UI. See Keycloak 19.0.0 release. Another possibility is to import your realm from json and thus be able to configure the extension. See this example for an example.

Providers

The extension provides the following components which are needed in order to connect to an eIDAS node using the extended definitions of the eIDAS technical specifications:

  • Identity provider "eIDAS SAML v2.0" which is an extended version of the default "SAML v2.0" IdP.
  • Mapper "Username Template Importer" which can be used to setup the ID or username for federated user lookup.
  • Mapper "Attribute Importer" which can be used to import additional attributes.
  • Authenticator "Citizen Country Selection" which can collect the citizen country before authentication.

Setup

  • Setup the keycloak realm key provider for signing requests according to the eIDAS specifications. Depending on the setup of the eIDAS node that you are trying to connect, it might be important that the certificate contains the correct country code.
  • Add the "eIDAS SAML v2.0" identity provider.
  • Setup the "eIDAS SAML v2.0" identity provider by setting the classic "SAML v2.0" options and the additional eIDAS specific options.
  • Add a "Username Template Importer" with template something like ${ALIAS}.${ATTRIBUTE.PersonIdentifier} and target BROKER_ID. You can also adjust the username in a similar fashion.
  • Add "Attribute Importer" for the attributes you want to consume, e.g. "DateOfBirth".
  • Go to "Authentication" and copy the "Browser" flow.
  • After the "Cookie" execution add an "eIDAS" flow which contains the following two executions:
    • Citizen Country Selection. Use the "Actions" menu to configure this by adjusting the available country codes. These codes are two letter names.
    • Identity Provider Redirector. Use the "Actions" menu to adjust the "Default Identity Provider" to "eidas-saml", in order for the redirection to happen automatically.
  • Set the new flow as default in the "Browser Flow" bindings.
  • Adjust depending on your use case the "First Broker Login" and additional properties.

You can find a very simple howto guide at howto/README.md.

Build and Install

Build the project using maven

mvn install

You can find the jar under target/keycloak-eidas-idp-x.x.x.jar.

License

Apache License, Version 2.0

eidas-keycloak-extension's People

Contributors

d-michail avatar dhm-msd avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

eidas-keycloak-extension's Issues

clarification on compatibility with eIDAS node

The extension version 0.6 is compatible with keycloak 18.0.2 but it is not clarified what eIDAS node version it is.
The documentation can be improved by clarifying the compatibility with eIDAS node versions.

Missing parts for a 1.0 version

Hello,

Thank you for your great work on this plugin. We are currently looking into integrating eID into our Keycloak and stumbled upon your it. It seems to fit our needs perfectly, but we are wondering, what is missing for a release above version 1.0. Can you add some information regarding this, please? It would be great to have somekind of ToDo section in the read-me.
If you need some help, we are willing to take over parts of the implementation as well.

Best regards
Florian

Missing eIDAS SAML Extensions Config options

Hello,

First of all, thank you for your good work.

I am working on a project to integrate the Spanish public identity provider Cl@ve (using SAML 2.0 - eIDAS) with our private services.

To familiarise myself with the environment, I am following the steps mentioned in the howto guide.

I find that I don't see the "eIDAS Specific Settings" that you refer to.

I have tried the following versions:

  • Keycloak (windows bare-metal) 19.0.3 with the 0.5 release you provide.
  • Keycloak (windows bare-metal) 20.0.1 with a release compiled by myself from the 20.0.1 branch you have in the repo.

In both cases I have the same problem, so I'm not even able to complete the basic configuration steps.

Regards.

image

Keycloak new GUI support

First of all thanks for all the job you have done.

Is there any plan to support new GUI of Keycloak? There is no support from version 18.0.2 (19+) at least for initial setup.

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.