When considering an SSO platform, we should analyze the following aspects/ requirements:
Support for login once to multiple applications.
The platform also should support for Single-Sign Out, which means that it should have options to force the log out of a single user (or all users) of the system.
Use of standard protocols like OpenID Connect, OAuth 2.0 and SAML 2.0.
Availability and features for admins and users.
The platform should offer features like:
-
Determine how many active sessions our system currently has.
-
Options to force the logout of a single user (or all users) of the system.
-
Centralized password policy
-
One time password (OTP) policies
-
Authorization policies per resource or per scope
-
Timed access policy (users or group of users can login only between certain time slots)
-
JavaScript-Based policy
-
Rule-Based policy
Extensibility points to add secure applications and services easily.
The SSO platform should offer adapters (libraries that makes it very easy to secure applications and service) for the application platforms we use: Spring Boot and JavaScript.
Facility to do integration with existing user directories.
The platform should support Kerberos logins and federate LDAP or Active Directory in just one configuration page.
The platform should enable us to login using social networks like Google, Facebook, Twitter, GitHub, etc.
OpenID Connect and SAML 2.0 IdPs.
Customize through code.
The platform should be extensible enabling we to write our own authenticator or federator. We should have options to integrate our own code that authenticate a user with SSL client certificate. Also, maybe we should integrate a user database from a legacy system and use it as an identity source.
| Feature | Keycloak support, references and/or samples | UAA support, references and/or samples |
|---|---|---|
Single Sign-On. |
Yes. |
Yes. |
Single Sign-Out. |
Yes. |
|
OpenID Connect support. |
Yes. |
|
SAML support. |
Yes. |
Yes. Refs: [UaaVA] |
Identity Brokering - Authenticate with external OpenID Connect or SAML Identity Providers. |
Yes. |
Yes. |
Social Login - Enable login with Google, GitHub, Facebook, Twitter, and other social networks. |
No. |
|
User Federation - Sync users from LDAP and Active Directory servers. |
Yes. |
Yes. |
Kerberos bridge - Automatically authenticate users that are logged-in to a Kerberos server. |
Yes. |
No. |
Admin UI for central management of users, roles, role mappings, clients and configuration. |
Yes. |
No. |
Event notification |
Yes. |
No. |
Account Management UI that allows users to centrally manage their account. |
Yes. |
Yes (but with many restrictions) |
Theme support - Customize all user facing pages to integrate with your applications and branding. |
Yes (with UAA fork) |
|
Two-factor Authentication - Support for TOTP/HOTP via Google Authenticator or FreeOTP. |
Yes. |
Yes. |
Login flows - optional user self-registration, recover password, verify email, require password update, etc. |
Yes. |
|
Session management - Admins and users themselves can view and manage user sessions. |
Yes. |
No. |
Opaque Tokens support. |
Yes. |
|
Token exchange support. |
Yes. |
Yes. |
Token mappers - Map user attributes, roles, etc. how you want into tokens and statements. |
Yes. |
No. |
Access system based on a subset of assigned user roles |
Yes. |
Yes. |
Role-based access control (RBAC) support |
Yes. |
Yes. |
Not-before revocation policies per realm, application and user. |
Yes.
|
No. |
CORS support - Client adapters have built-in support for CORS. |
Yes. |
No. |
Service Provider Interfaces (SPI) - A number of SPIs to enable customizing various aspects of the server. Authentication flows, user federation providers, protocol mappers. |
Yes. |
No. |
Client adapters for JavaScript applications, WildFly, JBoss EAP, Fuse, Tomcat, Jetty, Spring, etc. |
Yes. |
Yes. |
Supports any platform/language that has an OpenID Connect Resource Provider library or SAML 2.0 Service Provider library. |
Yes. |
|
Cloud Foundry support |
Yes. |
Yes. |
Kubernetes support |
Yes. |
|
Istio support |
Yes. |
-
-
GitHub:
-
Documents:
-
[UaaDA] High Level Features of the UAA
-
[UaaDB] UAA API Reference
-
[UaaDC] UAA Blog Posts
-
[UaaDF] Enabling the SSO Feature
-
-
Videos:
-
-
-
GitHub:
-
Documents:
-
[KcDA] Admin Console
-
[KcDB] Keycloak features
-
[KcDD] OpenID Connect Identity Brokering with Red Hat Single Sign-On
-
[KcDF] User Management
-
[KcDG] Configuring NGINX for OAuth/OpenID Connect SSO with Keycloak/Red Hat SSO
-
[KcDH] Social Identity Providers
-
[KcDI] SAML
-
[KcDK] What are Client Adapters?
-
[KcDL] OpenID Connect
-
[KcDM] User Session Management
-
[KcDO] Identity Management and Two-Factor Authentication Using One-Time Passwords
-
[KcDP] Securing apps and services with Keycloak (Watch DevNation Live video)
-
[KcDQ] LDAP and Active Directory
-
[KcDR] Identity Brokering
-
[KcDS] SSO Protocols
-
-
Videos:
-
-
-
Documents:
-
-
-
Documents:
-
-
-
Documents:
-
-
-
Videos:
-
-
-
Documents:
-
-
-
Documents:
-
-
-
Documents:
-