こんにちは、tatsumiです。
私は普段、チャットディーラーAIという製品の開発に携わっています。
先日、チャットディーラーAIにシングルサインオンの機能を実装したのですが、機能開発を行うまではシングルサインオンの仕組みについて何となくでしか理解していませんでした。 機能開発を行うにあたって、シングルサインオンの仕組みを調べたので、当ブログでまとめたいと思います。
シングルサインオン(SSO)とは?
シングルサインオン(SSO)とは、1つのIDとパスワードで複数のサービスにログインできる仕組みのことです。
通常であれば、サービスごとに個別にログインが必要で、IDやパスワードもそれぞれで設定・管理しなければならず、ユーザーにとって大きな負担となります。 シングルサインオンを利用すれば、このような負担が解消されます。
シングルサインオン(SSO)の認証方式と仕組み
シングルサインオンを実現する方法として、5つの認証方式があります。 それぞれの仕組みと特徴を紹介します。
代行認証方式
代行認証方式は、ユーザーが利用する端末に導入したエージェントが、対象システムのログイン画面を監視して、ログイン画面が起動したらユーザーの代わりにID/パスワードを自動入力して認証する仕組みです。
リバースプロキシ方式
リバースプロキシ方式は、リバースプロキシと呼ばれる中継サーバを介して認証を行う方式です。 PCからリバースプロキシサーバに対してWeb認証を実施すると、リバースプロキシサーバから認証済みの Cookieが発行されます。 その後、ログインしたい各サービスにおいて、リバースプロキシサーバを経由し、対象のシステムにアクセスすることでシングルサインオンでのログインを行います。
エージェント方式
エージェント方式は、Webサーバやアプリケーションサーバにエージェントを導入する方式です。 代行認証方式では、ユーザーが利用する端末にエージェントを導入しますが、エージェント方式の場合は対象のシステム側にエージェントを導入します。
初回ログイン時にSSOサーバからCookieが発行されます。 2回目以降のログイン時や他システムへのログイン時には、システム側のエージェントがユーザーが保持しているCookieを利用してSSOサーバーにユーザー認証を行うことでシングルサインオンを実現します。
フェデレーション方式
フェデレーション方式は、対象サービス(SP)と認証を行うサービス(IdP)の間で認証情報をやり取りする方式です。 IdPにログインすれば、各サービスはIdPから認証情報を取得することで、ユーザーは各サービスをログインなしで利用することができます。
フェデレーション方式では、SAMLやOpenID Connectといったプロトコルがよく利用されます。 ラクスのサービスでは、楽楽精算、楽楽販売、メールディーラー、チャットディーラーAIといったサービスでシングルサインオンを利用することができますが、何れもSAML認証によるフェデレーション方式でシングルサインオンを実現しています。
まとめ
今回の記事で紹介した通り、一口にシングルサインオンと言っても様々な方式が存在しています。 導入する際は、それぞれの方式のメリット/デメリットを把握した上でどの方式を採用するか判断した方がよいでしょう。
次回は、私が開発に携わっているチャットディーラーAIを含め、ラクスのその他サービスで実装されているSAML認証について詳しく解説したいと思います。
エンジニア中途採用サイト
ラクスでは、エンジニア・デザイナーの中途採用を積極的に行っております!
ご興味ありましたら是非ご確認をお願いします。
https://career-recruit.rakus.co.jp/career_engineer/
カジュアル面談お申込みフォーム
どの職種に応募すれば良いかわからないという方は、カジュアル面談も随時行っております。
以下フォームよりお申込みください。
rakus.hubspotpagebuilder.com
ラクスDevelopers登録フォーム
https://career-recruit.rakus.co.jp/career_engineer/form_rakusdev/
イベント情報
会社の雰囲気を知りたい方は、毎週開催しているイベントにご参加ください!
◆TECH PLAY
techplay.jp
◆connpass
rakus.connpass.com