さっしーブログ

埼玉県在住のシステムエンジニアです。基本的には技術的な内容を中心に発信していきます。

OpenAMについて調べてみた

目次

 

OpenAMという言葉を見つけたので気になって調べてみた。 

1. OpenAMとは?

「認証」「認可」「フェデレーション」等の機能を持ち、
Webアプリケーションなどのサービスにシングルサインオンの認証機能実現させるためのオープンソースソフトウェアである。
 
以下、Wkipediaのものを引用いたします。
OpenAMはSun MicrosystemsのOpenSSOを起源に持つ。
OracleによるSun Microsystemsの買収後、OracleがOpenSSOの開発中止を決定したため、ForgeRock(英語: ForgeRock)社がその開発とサポートを継続することを2010年2月に発表した。
[1] OpenSSOの製品名はOracleが権利を保持し続けたため、製品名をOpenAMに変更したうえで、ForgeRock社がスポンサーとなるフォークとしてOpenAMがスタートした。
 
ここで、補足として「認証」「認可」「フェデレーション」について、簡単に説明する。
 
※OpenIDやOAuthかじったことのある人は認証認可の違いはご存知かと思います。
 

1-1. 認証

 その人が誰であるかを特定します。
 

1-2. 認可

  プロバイダーがサービスアプリケーションがアクセスできるリソースへの権限を付与します。
 

1-3. フェデレーション

  複数のWebサービス間のユーザー認証連携を指します。
  異なるドメイン間の場合は、異なるドメイン同士の認証情報のやり取りが必要になります2-1.
 
 

2. シングルサインオン(SSO)とは?

あるシステムに一度ログインしてしまえば、それ以降他のシステムを利用する場合は認証を省略することができる仕組み。
 
つまり一回のログインですべてのシステム間でログイン情報を共有しているんですね。
 
これは、複数のシステムを抱えている企業ではログインの一元管理ができて便利ですね。
 
また、シングルサインオン(SSO)の実現方式には、大きく4つの方式があるそうです。
 
  ・エージェント方式
  ・リバースプロキシ方式
  ・代理認証方式
  ・フェデレーション方式
 
下記のサイトにて勉強させていただきました。
ありがとうございます。

2-1.エージェント方式

アプリケーションサーバーに「エージェント」を組み込む方式です。
 
リクエストのたびにエージェントがSSOサーバーへ問い合わせて認証情報の確認を行うことによりシングルサインオンを実現しています。 

2-2.リバースプロキシ方式

ブラウザとアプリケーションサーバーの間にリバースプロキシサーバーを構築して、そこにエージェントを組み込む方式です。
 
リクエスト時にリバースプロキシサーバーが認証状態をチェックして各アプリケーションへ中継を行います。 

2-3.代理認証方式

ログイン画面にてユーザーの代わりにログイン情報の入力を行う方式です。
 
裏側でOpenAMが入力を代行してくれることでシングルサインオンを実現しています。

2-4.フェデレーション方式

クラウドサービス間で認証情報を連携させる方式です。
 
例えばソーシャルアカウントなどでログインを行った場合、そのログインを行ったソーシャルサービス側からログイン対象のアプリケーションへ認証結果が通知されログインを完了させるといったような流れになります。
 
 
では、今回はこの辺で。
 
以上。