[JAVA] Qu'est-ce que Keycloak

introduction

Soudain, cette fois, un membre bénévole de NRI OpenStandia écrira un calendrier de l'Avent pour Keycloak. Au cours des 25 derniers jours, je voudrais vous parler des fonctions de Keycloak, de ce que vous pouvez comprendre en le touchant et des efforts de Keycloak chez NRI OpenStandia.

Pourquoi Keycloak?

Keycloak est un logiciel de gestion d'accès d'identité open source. Il réalise l'authentification unique et le contrôle d'authentification / d'autorisation d'accès à l'API et est l'un des retardataires dans ce domaine. Le développement communautaire est actuellement en cours et est considéré comme l'un des logiciels les plus dynamiques dans ce domaine. Le radar technologique de Thoutht Works, une source bien connue de tendances technologiques, s'est également fait un nom pour la première fois en mars (mars 2017). De plus, dans la dernière version, l'autre jour, l'évaluation est passée de ASSESS à TRIAL, et elle retient de plus en plus l'attention. https://www.thoughtworks.com/radar/platforms/keycloak image.png

Quel est le degré d'attention dans le monde et au Japon?

Pour référence, j'ai regardé le niveau d'attention des 5 dernières années sur Google Trends. (Par rapport à OpenAM, qui est récemment passé à une gestion commerciale)

■ Open AM contre Keycloak dans le monde entier, version 5 ans WS000034_枠.jpg

■ Open AM contre Keycloak Japan, version 5 ans WS000035_枠.jpg

Bien qu'il suscite une attention mondiale, il semble qu'il ne soit pas encore répandu au Japon. NRI espère également contribuer à l'excitation de Keycloak au Japon.

: point_up_2: NRI continuera à gérer ForgeRock Open AM comme auparavant. ForgeRock est un leader incontesté du marché dans ce domaine, avec une fonctionnalité et une expérience exceptionnelles. Nous pensons qu'il est nécessaire de les utiliser correctement selon les exigences du client.

Efforts d'autres entreprises

Hitachi est célèbre en tant qu'entreprise qui diffuse des informations relatives à Keycloak au Japon. Veuillez vous référer à l'article @IT ci-dessous pour plus d'informations. http://www.atmarkit.co.jp/ait/articles/1708/31/news011.html

Fonctionnalités fournies par Keycloak

Fonction dans Admin Serveur (version japonaise) du document Keycloak Puisqu'il y a une description sur, je vais citer à partir de là.

Je pense que je peux introduire quelques détails dans ce Keycloak by OpenStandia Advent Calendar 2017. Attendez-le avec impatience!

Licence Keycloak

Keycloak est distribué sous la licence Apache 2.0. Vous pouvez librement modifier et publier le code source à condition que la licence d'utilisation soit clairement indiquée, donc je pense qu'il est facile de l'utiliser en l'incorporant dans votre propre produit.

Comparaison des fonctions avec OpenAM

Comparons-le avec OpenAM, qui est un produit représentatif de SSO, avec une fonction un peu plus détaillée.

Catégorie une fonction Keycloak OpenAM
Authentification 多要素Authentification
OTP
Certification basée sur les risques
Bureau SSO
Authentification IdP externe
Authentification proxy ○※1
Autorisation Contrôle d'accès aux attributs utilisateur △※2
Contrôle d'accès basé sur les rôles △※2
Autre contrôle d'accès (URL, adresse IP, fuseau horaire, etc.) △※2
en libre service Enregistrement du Compte
Réinitialisation du mot de passe
Gestion des attributs utilisateur
Agent/Adaptateur client Plateformes prises en charge Peu Beaucoup
Autre Prise en charge des protocoles standard(SAML2.0/OIDC1.0/OAuth2.0)
Prise en charge des protocoles standard hérités(SAML1.x/WS-Fédération etc.)
Base de code petit Énorme
ouvert/fermé ouvert バージョン13系まではouvert、以降は最新版はfermé

En regardant les choses comme ça, en termes de fonctionnalités, OpenAM déborde de ○. Pour être honnête, il est toujours inférieur à OpenAM en termes de fonctionnalités, mais je pense que c'est facile à maintenir car la base de code est petite car il s'agit d'un nouveau logiciel avec peu de chaînes passées.

De plus, malheureusement, il a été fermé après la version 13 d'OpenAM à la fin de l'année dernière (la dernière version sera publiée en tant que OSS environ deux ans après sa sortie). Par conséquent, en ce qui concerne les produits ** OSS ** SSO, je pense que Keycloak sera un candidat sérieux à l'avenir. En fait, Keycloak fonctionne déjà en production dans notre entreprise, mais cela fonctionne de manière très stable: sourire:

À propos, notre @wadahiro a annoncé un cas d'utilisation lors de la 2e session d'étude de l'OSS Security Technology Association qui s'est tenue l'autre jour. Donc, veuillez vous référer à ce Matériel.

Principales caractéristiques de la cape

Dans Keycloak, en plus du serveur d'authentification / d'autorisation SAML2.0 / OAuth2.0 / OIDC principal, ** adaptateur client ** est distribué. L'adaptateur client équivaut à un agent dans OpenAM et est utilisé en l'incorporant dans une application ou un serveur d'applications soumis à la protection SSO. Il s'agit de la méthode dite de l'agent, souvent appelée méthode SSO. L'adaptateur client communique avec le serveur Keycloak en utilisant le protocole standard au lieu de l'application et réalise l'authentification unique.

Il existe deux grands adaptateurs client, un pour OpenID Connect et un pour SAML 2.0. Vous trouverez ci-dessous une liste des plates-formes prises en charge et de leurs versions (à partir de Keycloak 3.4.0.Final).

Pour OpenID Connect

Plateformes prises en charge Version correspondante
Keycloak Proxy -
WildFly 10, 9, 8
JBoss EAP 7, 6
JBoss AS 7.1
JBoss Fuse 6.2, 6.3
JavaScript -
Jetty 9.4, 9.3, 9.2, 9.1, 8.1
Tomcat 8, 7, 6

Pour SAML 2.0

Plateformes prises en charge Version correspondante
WildFly 10, 9
JBoss EAP 7, 6
JBoss AS 7.1
Jetty 9.4, 9.3, 9.2, 8.1
Tomcat 8, 7, 6

L'un des adaptateurs légèrement plus spéciaux est le Keycloak Proxy. Il s'agit d'un proxy inverse qui fonctionne indépendamment et effectue un SSO de type proxy inverse. Les détails seront rédigés par @yagiaoskywalker le 7ème jour, veuillez donc le lire également.

De plus, je souhaite utiliser des applications SSO autres que les plates-formes prises en charge ci-dessus avec Keycloak! À ce moment-là, ne vous inquiétez pas. Keycloak prend en charge les protocoles standard (ou ne peut parler que), donc si votre application prend en charge SAML 2.0 ou OpenID Connect, vous pouvez facilement SSO. S'il s'agit d'un package logiciel ou d'un service cloud d'un endroit célèbre, je pense qu'il existe de nombreux endroits qui prennent en charge SAML 2.0 ou OpenID Connect. Même pour les applications de développement scratch, les frameworks et bibliothèques modernes devraient être relativement faciles à prendre en charge SAML 2.0 ou OpenID Connect.

En revanche, lorsqu'il s'agit de prendre en charge des applications existantes, vous souhaiterez souvent réduire la portée de la modification en réduisant la portée de l'impact. Dans un tel cas, il peut être préférable de configurer un serveur proxy inverse devant l'application et d'exécuter SSO avec la méthode SSO de type proxy inverse. Dans ce cas, si l'application est légèrement modifiée pour s'authentifier avec l'ID utilisateur lié dans l'en-tête HTTP de la requête, il sera possible de prendre en charge SSO.

En plus du proxy Keycloak fourni par Keycloak, il existe plusieurs serveurs proxy qui prennent en charge SAML2.0 / OpenID Connect dans OSS pour réaliser un SSO de type proxy inverse. Il y a mod_auth_openidc pour Apache comme un exemple typique que nous utilisons souvent, mais @yagiaoskywalker l'écrira également le 8ème jour. S'il vous plaît restez à l'écoute!

Membres de la rédaction du calendrier de l'Avent

Enfin, je voudrais vous présenter les membres qui rédigeront (planifieront) le calendrier de l'Avent au cours des 25 derniers jours. Sur Qiita, il y a des gens qui ne veulent utiliser que le nom du handle, alors nous allons le présenter ici en fonction du nom du handle!

Nom de la poignée Auto-introduction
@daian183 J'ai récemment géré les ventes externes et les membres internes de Keycloak, etc.
@wadahiro Ouvrez le fier évangéliste technique de Standia(J'aime toutes les directions)
@tamura__246 Ouvrez le fier évangéliste technique de Standia(J'aime OpenAM)
@kabao Ouvrez le fier évangéliste technique de Standia(Amateur de DB)
@mamomamo Un jeune leader actif à la fois dans le support et l'IS
@izey0306 Jeunes membres actifs à la fois dans le soutien et dans l'IS
@yoonis SSO/Expérience de projet IDM, vérification Keycloak(Dans notre entreprise)Principaux membres de
@naokiiiii SSO/Expérience de projet IDM, vérification Keycloak(Dans notre entreprise)Leader leader
@rawr Une personne incroyable qui peut tout faire rapidement tout en se plaignant de l'application à la base
@katakura__pro SI réalisé par OpenStandia/soutien/Un leader qui gère un large éventail de tâches telles que la maintenance
@masuo3 Des ingénieurs et des leaders qui peuvent tout faire quel que soit le produit
@yagiaoskywalker Le fier artisan de soutien d'OpenStandia, des produits liés au SSO aux produits récemment liés à l'IDM
@rkato L'unité Sapporo d'OpenStandia, obtenez un article écrit de Sapporo

De plus, cette fois, j'écrirai des articles principalement pour les membres de NRI OpenStandia, mais Hitachi participera également! Il devrait paraître vers le 20e jour, alors attendez-le avec impatience.

Eh bien, merci pour 25 jours!

Recommended Posts

Qu'est-ce que Keycloak
Qu'est-ce que Cubby
Qu'est-ce que 'java
Qu'est-ce que maven?
Qu'est-ce que Jackson?
Qu'est-ce que soi
Qu'est-ce que Jenkins
Qu'est-ce que ArgumentMatcher?
Qu'est-ce que IM-Juggling?
Qu'est-ce que les paramètres
Qu'est-ce que SLF4J?
Qu'est-ce que la façade? ??
Qu'est-ce que Java <>?
Qu'est-ce que Gradle?
Qu'est-ce que POJO
Qu'est-ce que 'java
Qu'est-ce que centOS
Qu'est-ce que RubyGem?
Qu'est-ce que before_action?
Qu'est-ce que Docker
Qu'est-ce que Byte?
Qu'est-ce que Tomcat
Qu'est-ce que l'assemblage Maven?
Qu'est-ce que `docker-compose up`?
Qu'est-ce qu'un constructeur
Qu'est-ce que vue cli
Qu'est-ce qu'une interface
Qu'est-ce que le moi de Ruby?
Qu'est-ce que le codage en dur?
Qu'est-ce qu'un flux
Qu'est-ce que l'attr_accessor de Ruby?
Qu'est-ce que l'encapsulation Java?
Qu'est-ce qu'une permission refusée?
Qu'est-ce que le contrôle d'instance?
Qu'est-ce qu'un initialiseur?
Qu'est-ce que Spring Tools 4
Qu'est-ce qu'un opérateur?
Qu'est-ce que l'orientation objet?
Qu'est-ce que le @VisibleForTesting de Guava?
Qu'est-ce qu'un modèle MVC?
Qu'est-ce qu'une annotation?
Qu'est-ce que la technologie Java?
Qu'est-ce que Java API-java
Qu'est-ce que @ (variable d'instance)?
Qu'est-ce que l'artefact de Gradle?
Qu'est-ce que l'audit JPA?
[Java] Qu'est-ce que flatMap?
Qu'est-ce qu'un servlet?
Qu'est-ce que le développement Web?
[Java] Qu'est-ce que ArrayList?
Qu'est-ce que l'orientation objet après tout?
Qu'est-ce que HttpSession session = request.getSession ();
Qu'est-ce que l'assertion Java? Résumé.