1. 概要

複数のアプリケーションを使用する組織ユーザーは、多くの場合、複数のシステム間で認証する必要があります。 その結果、ユーザーは複数のアカウントとパスワードを覚えておく必要があります。 シングルサインオン( SSO )テクノロジは、この問題の解決策です。 SSOは、一連のシステムに単一のログインクレデンシャルを提供します。

このチュートリアルでは、SSOとは何かを簡単に説明してから、Javaアプリケーション用の7つの異なるSSOソリューションを見ていきます。

2. シングル・サインオン

SSOソリューションの実装は、次の2つのプロトコルのいずれかを使用して実行できます。

  • SAML 2.0
  • OpenIDコネクト

SAML 2.0 (セキュリティアサーションマークアップ言語)は、ユーザー認証を簡素化します。 これにより、ユーザーはIDプロバイダーでの登録と認証のみが可能になり、複数のサービスにアクセスできます。 XMLに基づいています。 OpenID Connect (OIDC)は、SAML2.0の後継です。 また、認証に使用される OAuth2.0プロトコルの拡張です。 OIDCは、SAML2.0よりも構成が簡単です。

3. Keycloak

Keycloakは、オープンソースのIDおよびアクセス管理(IAM)システムです。 SSO、ユーザーフェデレーション、きめ細かい認証、ソーシャルログイン二要素認証(2FA)などの機能を提供します。 さらに、OpenID Connect、OAuth 2.0、およびSAMLをサポートします。 サードパーティのツールとの統合が良好です。 たとえば、 SpringBootアプリケーションと非常によく統合されています。 最新のリリースはここにあります。 さらに、管理者と開発者がKeycloakを構成および管理するための使いやすい管理コンソールを提供します。 ソースコードはGitHubで入手できます。

4. WSO2 Identity Server

WSO2 Identity Serverは、WSO2によって開発されたオープンソースのIAMシステムです。 SSO、2FA、IDフェデレーション、ソーシャルログインなどを提供します。 また、ほとんどすべての一般的なID標準をサポートします。 さらに、管理コンソールが付属し、他のアプリケーションと統合するためのAPIを公開します。 ただし、主にJavaで記述されており、ソースコードはGitHubで入手できます。

5. Gluu

Gluuは、アクセス管理のためのさまざまな機能を備えたオープンソースのクラウドネイティブIAMソリューションです。 強力な認証、モバイル認証、2FA、およびIDブローカリングを提供します。 さらに、OpenID Connect、SAML 2.0、FIDO、User-ManagedAccessなどのオープンWeb標準もサポートしています。 Python言語で書かれています。 また、Gluuサーバーの展開と構成を自動化するためのスクリプトは、GitHubで入手できます。

6. アペレオCAS

Apereo CASは、オープンソースのエンタープライズグレードのSSOシステムです。 また、これはCentral Authentication Service(CAS)プロジェクトの一部です。 以前のソリューションと同様に、SAML、OAuth 2.0、OpenIDConnectなどのいくつかのプロトコルをサポートします。 また、uPortal、BlueSocket、TikiWiki、Mule、Liferay、Moodleなどと統合できます。 SpringBootとSpringCloudの上に構築されています。 ソースコードはGitHubで入手できます。

7. Spring Security OAuth2

Spring Security OAuth プロジェクトを使用して、SSOソリューションを実装できます。 OAuthプロバイダーとOAuthコンシューマーをサポートします。 さらに、2FA機能をソフトトークンとSpringSecurityで実装できます。

8. OpenAM

OpenAMは、認証、承認、SSO、およびIDプロバイダーを含むオープンアクセス管理ソリューションです。クロスドメインシングルサインオン(CDSSO)、SAML 2.0、OAuth 2.0、およびOpenIDConnectをサポートします。 最新のリリースとソースコードはここにあります。

9. Authelia

Autheliaは、SSOと2FAを提供するオープンソースの認証および承認サーバーです。 FIDO2 Webauthn互換のセキュリティキーを活用するいくつかのハードウェアベースの2FAを提供します。 さらに、Google認証システムなどのアプリによって生成される時間ベースのワンタイムパスワードをサポートします。 AutheliaサーバーはGo言語で記述されており、そのすべてのソースコードはGitHubで入手できます。

10. 結論

現在、多くの組織がSSOを使用しています。 この記事では、JavaエコシステムのSSOソリューションについて非常に高レベルで説明しました。 一部のソリューションは完全なIAMを提供し、その他のソリューションはSSOサーバーと認証方法のみを提供します。