本発明の目的は、認証を連携させたいサービス間で、適切なID同士でSSOマッピング設定を行うことである。なお、本願におけるシングルサインオンは、他システムでユーザー認証が成功することでシステムでのユーザー認証を行うことなくシステムの機能が提供可能となることを指す。
まず、図8(A)−(B)を使って現状の実施形態、現状の課題を説明し、図8(C)−(D)を使って現状の課題が解決されることを、具体例を挙げて説明する。
図8(A)は、現状のSSOマッピング設定状況を示した図である。
SSOマッピング対象サービスであるサービスB400(IdP)には、テナントAとテナントCがあり、テナントAにはユーザーIDとしてIdP User1−3が含まれる。またテナントCにはユーザーIDとしてIdP User4が含まれている。
SSOマッピングサービスであるサービスA300(SP)には、テナントBとテナントDがあり、テナントBにはユーザーIDとしてSP User1−3が含まれている。またテナントDにはユーザーIDが含まれていない。
ここで本願の処理を用いることなく、図8(A)の状況から、SSOマッピングサービスA300のテナントID BのSP User1を削除し、テナントID Dに同名のユーザーSP User1を作成した状況を図8(B)に示す。
図8(B)の状況では、IdP User1がテナントID DへとSSOできる状況となっている。つまり、図8(A)では、IdP User1はテナントID Bを使うことが規定されていたにも関わらず、当初の規定とは異なるテナントへSSOでアクセスが実行されてしまう問題が発生する。
つづいて、 図8(C)−(D)を用いて、上述した課題がAUIDを用いることで解消されることを説明する。
図8(C)は、本発明の実施例の形態に係るSSOマッピングの設定状況を示した図である。
SSOマッピング対象サービスであるサービスB400(IdP)には、テナントAとテナントCがあり、テナントAにはユーザーIDとしてIdP User1−User3が含まれている。またテナントCにはユーザーIDとしてIdP User4が含まれている。
SSOマッピングサービスであるサービスA300(SP)には、テナントBとテナントDがあり、テナントBにはユーザーIDとしてSP User1−3が含まれている。またテナントDにはユーザーIDが含まれていない。
ここで図7のフローを実施することで、IdP User1とSP User1の間でSSOマッピング設定が実行される。またIdP User2とSP User2の間でも、IdP User3とSP User3の間でもSSOマッピング設定が実行される。これらのマッピングは、第4のIDテーブルと第5のIDテーブルが、それぞれAUIDマッピングテーブル801、およびAUIDマッピングテーブル802に設定されていることから、適切なSSOマッピング設定が行われたこととなる。
図8(D)は、図8(C)の状況が変化した場合の、本発明の実施例に係るSSOマッピングの設定状況を示した図である。
図8(C)の状況から、SSOマッピングサービスA300のテナントID BのSP User1を削除し、テナントID Dに同名のユーザーSP User1を作成する。つまり、図8(B)と同じ操作が行われたことを示している。
本実施例の場合、ユーザーID削除に伴いマッピング状態も削除されるので、SSOマッピングサービスA300のAUIDマッピングテーブル801から、SP User1とAUID1は削除される。このため、例え同名のユーザーSP User1がテナントID Dに再作成されたとしても、SSOマッピング806のような関係は存在し得ない。つまり、図8(A)−(B)において説明した課題の発生を防ぐことができる。従って、図7で示したようなフローでSSOマッピングを設定した場合、SSOマッピングサービスA300がユーザーIDを削除する。そして、同名のユーザーIDを別テナントへ再作成するような、SSOマッピング対象サービスB側が意識しない操作を実行しても、意図しないSSOがされることを防止できる。
以下、本発明を実施するための最良の形態について図面を用いて説明する。
本実施の形態に係る権限委譲システムは、図1に示すような構成のネットワーク上に実現される。
100は、Wide Area Network(WAN100)であり、本発明ではWorld Wide Web(WWW)システムが構築されている。101は各構成要素を接続するLocal Area Network(LAN101)である。
200はユーザーが操作するクライアントPCであり、300および400はユーザー認証するとサービス(機能)を提供するサービスAおよびサービスBである。なお、サービスAやサービスBにより提供されるサービス(機能)は、例えば印刷機能や、帳票機能がある。帳票機能とは、SPがテンプレートを保持しておき、IdPから受信したコンテンツデータとSPが保持するテンプレートを使ってオーバーレイ処理を実行して、帳票を作成する機能である。
またクライアントPC200、サービスA300、サービスB400はそれぞれWANネットワーク100およびLAN101を介して接続されている。なおクライアントPC200およびそれぞれのサービスはそれぞれ個別のLAN上に構成されていてもよいし同一のLAN上に構成されていてもよい。また同一のPC上に構成されていてもよい。サービスA300、サービスB400は、夫々、サーバー群A300、サーバー群B400で動作する。サーバー群Aおよびサーバー群Bは、認証サーバーとサービスを提供するサーバーで構成される。サーバー群AおよびBは、例えば認証サーバーとサービスを提供するサーバーで構成される。認証サーバーおよびサービスを提供するサーバーは、1台で構成されても良いし複数台で構成されても良い。なお、本願では、サーバー群AをSPと称し、サーバー群BをIdPと称して説明するが、逆であっても良い。 サービスB400は、まずユーザーのログインを受け付ける。次にサービスB400はユーザーからSSOマッピング設定要求を受け付けると、第1のIDテーブルを生成する。なお、SSOマッピング設定要求は、後述の図9においてユーザーにより設定ボタンが押されることで発行される。
第1のIDテーブルは、SSOマッピング対象となるサービスA300のユーザーIDと、サービスA300のユーザーIDの各々に対応するサービスB400のユーザーIDのタプル(tuple)のリストから構成される。なお、サービスB400(IdP)を利用するユーザーがサービスA300(SP)のサービスを使うことを要求した段階で、サービスB400(IdP)は、サービスA300のユーザーIDを取得できる。これは、一例であり、第1のIDテーブルを作る前にSPのユーザーIDが取得できていれば良い。
なお、第1のIDテーブルの一例は、後述の図5のB−2である。さらにサービスB400は、SSOマッピング設定要求として第2のIDリストを生成する。第2のIDリストは、第1のIDテーブルのうち、SSOマッピング設定要求対象となるサービスA300のユーザーIDリストから構成される。なお、第2のIDリストの一例は、後述の図5のB−3である。サービスB400は、第2のIDリストと、サービスA300のSSOマッピング実行者情報と、サービスA300におけるサービスB400のエンティティ情報など、SSOマッピングに必要な情報をサービスA300に送信する。なお、サービスA300のSSOマッピング実行者情報は、後述する図9のSPのユーザーIDで指定された情報である。
ここでエンティティ情報とは、SAMLプロトコルで定義されるもので、SPから見た場合、IdPは、エンティティIDと呼ばれるIDで識別される。このエンティティIDは事前に交換したメタデータに記載されている。ここでIdPによっては、認証機能を提供するサーバー群として単一のエンティティIDしか持たないシステムと、複数のエンティティIDを持てるシステムとがある。 サービスB400は、IdPとして単一のエンティティIDを持ち、エンティティIDの取得手段からエンティティ情報としてエンティティIDを取得可能とする。もちろんサービスBが複数のエンティティIDを持っていても良い。
一方、サービスA300は、サービスB400からのSSOマッピング設定要求対象となるサービスA300のユーザーIDリストである第2のIDリストを受け取る。この際、サービスA300は、第2のIDリストと共にサービスA300のSSOマッピング実行者情報と、サービスA300におけるサービスB400のエンティティ情報も受け取る。サービスA300は、受け取った情報のうち、サービスB400のエンティティ情報から登録エンティティであることを確認し、サービスA300のSSOマッピング実行者情報からSSOマッピング実行者を判定し、SSOマッピング実行者の取得可能な第3のユーザーIDリストを取得する。サービスA300は、取得した第2のIDリストの各々のユーザーが、第3のユーザーIDリストに含まれることを確認する。サービスA300は、第2のIDリストの各々のユーザーに対応するAUID(Account Unique Identifier)リストを動的に生成する。AUIDは、ユニークな汎用一意識別子(Universally Unique Identifier、UUID)である。サービスA300は、第4のIDテーブルを生成する。第4のIDテーブルは、第2のIDリストと、第2のIDリストの各々のユーザーIDに対応するAUIDのタプルのリストから構成される。サービスA300は、サービスB400のSSOマッピング設定要求への応答として、第4のIDテーブルを返送する。サービスA300は、第4のIDテーブルを用いてSSOマッピングを行う。
サービスB400は、サービスA300から送信された第4のIDテーブルを受信する。サービスB400は、受信した第4のIDテーブルと、保存していた第1のIDテーブルを比較し、第5のIDテーブルを生成する。第5のIDテーブルは、SSOマッピング設定要求でサービスA300に送信した第2のIDリストの各々のIDと対応するAUIDのタプルのリストから構成される。サービスA300は、第5のIDテーブルを用いてSSOマッピングを行う。
サービスA300、サービスB400はそれぞれ、後述のサーバーコンピューター上で動作する。
ここで、IdPとSPの関係について記載する。
たとえばSAMLはHTTPで実現されるため、エンドポイントはURLで定義される。エンドポイントは、IdPのアドレスを指す。またアサーションを署名するためにEntity IDごとに異なる電子証明書が必要となるが、電子証明書はホスト名に紐づけて発行される。結果として、IdPが複数のEntity IDを持つためにはEntity IDごとに異なるホスト名も持つ。なお、それらのホスト名は、ホスト名解決が可能であり、ホスト名解決の結果、IPアドレスと対応づいている必要がある。IdPがユーザーの求めに応じ動的にEntity IDを追加するのであれば、IdPがDNSサーバーを備え、Entity IDの追加に対応して新しいホスト名とIPアドレスをDNSサーバーに登録するなどの作業が必要になる。よってIdPが複数のEntity IDを持つには比較的規模の大きなIdPでないと対応が難しい。
一方アプリケーションサービスプロバイダーなど第三者にサービスを提供するケースでは、第三者からのアクセスを特定のURLに限定することで利便性を向上させることがある。このような場合は、URLが単一になり、Entity IDが単一になる。
上記のようにEntity IDが単一か複数かは、IdPの構成によって異なる。本実施例の場合、IdPが単一のエンティティIDしか持たないものを考える。
図2は本実施の形態に係るクライアントPC200の構成を示す図である。またサービスA300、サービスB400を提供するサーバーコンピューターの構成も同様である。尚、図2に示されるハードウェアブロック図は一般的な情報処理装置のハードウェアブロック図に相当するものとし、本実施形態のクライアントPC200およびサーバーコンピューターには一般的な情報処理装置のハードウェア構成を適用できる。
図2において、CPU201は、ROM203のプログラム用ROMに記憶された、或いはハードディスク211からRAM202にロードされたOSやアプリケーション等のプログラムを実行する。ここでOSとはコンピュータ上で稼動するオペレーティングシステムの略語であり、以下オペレーティングシステムのことをOSと呼ぶ。後述する各フローチャートの処理はこのプログラムの実行により実現できる。RAM202は、CPU201の主メモリ、ワークエリア等として機能する。キーボードコントローラ(KBC)205は、キーボード(KB)209や不図示のポインティングデバイスからのキー入力を制御する。CRTコントローラ(CRTC)206は、CRTディスプレイ210の表示を制御する。ディスクコントローラ(DKC)207は各種データを記憶するハードディスク(HD)211やフロッピー(登録商標)ディスク(FD)等におけるデータアクセスを制御する。NC212はネットワークに接続されて、ネットワークに接続された他の機器との通信制御処理を実行する。
尚、後述の全ての説明においては、特に断りのない限り実行のハード上の主体はCPU201であり、ソフトウェア上の主体はハードディスク(HD)211にインストールされたアプリケーションプログラムである。例えば、本願のフローチャートの各ステップは、CPUがフローチャートに関連するプログラムを読み出して実行することにより実現される。
図3はSSOマッピング設定を利用した一般的なSSOのログインフローである。以下に、サービスB400がIdPとして、サービスA300がSPとして動作する例を示す。なおサービスA300がIdP、サービスB400がSPであってもよい。
サービスB400がIdPの場合、ユーザーは、サービスB400でユーザー認証を受ければ、サービスA300が提供するサービスを受けることが可能となる。
以下の例では、ユーザーがまずサービスB400でユーザー認証を受け、そののちにSSOによってサービスA300のサービスを受ける場合のフローを説明する。なおユーザーがサービスA300にアクセスしたあとサービスB400にリダイレクトされ、サービスB400でユーザー認証を受けたあとでサービスA300のサービスを受けるフローであってもよい。
図3(A)はSSOのログインフローの、IdP側におけるフローである。なおここではサービスB400がIdPとしている。
ステップS1でサービスB400は、サービスA300のサービスを受けることを望むユーザーからのユーザー認証要求を受け付ける。ここでサービスB400はユーザーからサービスBで認証を受けるためのサービスBのIDとパスワードを受け付ける。
ステップS2でサービスB400は、ステップS1でユーザーから受け付けたサービスBのIDとパスワードの組み合わせが正しいか確認する(ユーザー認証を実行する)。サービスB400は、適切なIDとパスワードの組み合わせを保持しており、S1にて受信した組み合わせが適切な組み合わせとして保存されているか否かによりS1の処理が実現される。組み合わせが正しければステップS3に遷移する。また組み合わせが正しくなければフローを終了する。
ステップS3でサービスB400は、ユーザー認証を実行し、ユーザーからのアクセスをサービスA300にリダイレクトする。またその際、リダイレクトされたアクセスと共にサービスB400がユーザー認証したユーザーのID(またはサービスBがユーザー認証したID相当の情報)が送信される。サービスB400によるリダイレクトが済むとフローを終了する。なお、S2でIDとパスワードのペアが正しいと判断されてから、IdP側のUIを使ってユーザーがSPのサービスを使用することを選択することでS3の処理が実行される。
図3(B)は一般的なSSOのログインフローのSP側でのフローである。なおここではサービスA300がSPとしている。
ステップS4でサービスA300は、サービスB400からリダイレクトされたユーザーのアクセスを受け付ける。
ステップS5でサービスA300は、サービスBでユーザー認証を受けたユーザーのIDを取り出す。
ステップS6でサービスA300は、ステップS5で取り出したユーザーのIDに関するSSOマッピングにより生成されたマッピングテーブルを取り出す。
ステップS7でサービスA300は、ステップS6でSSOマッピング設定が見つかったか判断する。見つかっていればステップS8に遷移し、見つかっていなければフローを終了する。
ステップS8でサービスA300は、ステップS6で見つかったSSOマッピング設定で示されるサービスAのIDを使ってユーザー認証を実行する。そしてステップS4で受け付けたアクセスを許可し、サービスを提供し、フローを終了する。
前述のように、SSOマッピングが設定されていると、ユーザーは、サービスB400のみに対してサービスB400のIDとパスワードを渡すことで、サービスA300が提供するサービスを受けることができる。
図4は本発明の実施の形態に係るモジュール構成図である。なおここではサービスA300がSSOマッピングサービスであり、サービスB400がSSOマッピング対象サービスであるとしているが、サービスの対応関係は前述の関係に限定されるものではない。なお、上述の通り、図4に記載の各モジュールはHDDに保存されており、メモリにロードされてCPUにより実行されることで実現する。
図4(A)は本発明の実施の形態に係るSSOマッピングサービス300のモジュール構成図である。なお、SPがSSOマッピングサービス300のモジュールを備える。SSOマッピングサービス300は第1の認証モジュール301、第2のIDリスト取得モジュール302、第3のIDリスト生成モジュール303、AUIDリスト生成モジュール304、第4のIDテーブル生成モジュール305、SSOマッピング設定モジュール306、IdP登録、選択モジュール307から構成される。SSOマッピング設定モジュール306は、SSOを実現するために必要なマッピングテーブルを生成するためのSSOマッピング用IDテーブル生成要求に対応して第4のIDテーブル307を返すAPIを持つ。SSOマッピング設定モジュール306は、SSOマッピング対象サービス400から第2のIDリストを受け付ける。そして、第3のIDリスト生成モジュール303を用いて第1の認証モジュール301でユーザー認証されたユーザーの権限で取得可能なIDのリストとして第3のIDリストが生成される。第3のIDリストのうち第2のIDリストに含まれるSSOマッピング対象ユーザーIDリストが生成される。SSOマッピング対象ユーザーIDリストの各々のIDに対して動的に生成したAUIDを対応付けた第4のIDテーブルであるSSOマッピング設定ファイル500が生成され、SSOマッピングサービスは、SSOマッピング設定を行って第4のIDテーブルを返す。IdP登録、選択モジュール307は、SSOマッピング対象サービス400を、SAMLプロトコルのIdPとして登録する。さらに、IdP登録、選択モジュール307は、SSOマッピング設定要求において、SP側ユーザーとして複数IdPを使用するユーザーに対して、現在有効なIdPを選択させる機能を提供する。
図4(B)は本発明の実施の形態に係るSSOマッピング対象サービス400のモジュール構成図である。なお、IdPがSSOマッピング対象サービスのモジュールを備える。SSOマッピング対象サービス400は第2の認証モジュール401、SSO設定情報受付モジュール402、第1のIDテーブル生成モジュール403、第2のIDリスト生成モジュール404、第4のIDテーブル取得モジュール405、第5のIDテーブル生成モジュール406、SSOマッピング設定モジュール407から構成される。SSOマッピング設定モジュール407は、SSOマッピングのためのSSOマッピング用IDテーブル生成要求を出す。SSOマッピング設定モジュール407は、SSOマッピングサービス300からSSOマッピングのためのSSOマッピング用IDテーブルを取得すると、第5のIDテーブルを生成してSSOマッピング設定を行う。
図5は本発明の実施の形態に係るSSOマッピング対象となるユーザーリストデータの例である。図5(A−1)の450はSSOマッピングサービスが管理するテナント(グループ)別ユーザーリストデータの、図5(B−1)の350はSSOマッピング対象サービスが管理するテナント別ユーザーリストデータの例である。ここではSSOマッピング対象サービス400にTenantAおよびTenantCの2つのテナントがある。そして、TenantAにはユーザーIdP User1−3が、テナントTenantCにはユーザーIdP User4が所属している場合のデータ例を示している。またSSOマッピングサービス300にTenantBの1つのテナントがあり、テナントTenantBにはユーザーSP User1−3が所属している場合のデータ例を示している。また図5(B−2)の500は、図4(B)の第1のIDテーブル生成モジュール403により生成される第1のIDテーブルの例である。図5(B−3)の550は、図4(B)の第2のIDリスト生成モジュール404により生成される第2のIDリストの例である。さらに図5(A−2)の600は、図4(A)の第3のIDリスト生成モジュール303により生成される第3のIDリストの例である。
図6は本発明の実施の形態に係る第4および第5のIDテーブルの例である。第5のIDテーブル602は、図4(B)で説明した第5のIDテーブル生成モジュール406により生成される第5のIDテーブルの例である。第4のIDテーブル601は、図4(A)で説明した第4のIDテーブル生成モジュール305により生成される第4のIDテーブルの例である。
図7は本発明の実施形態に係るSSOマッピング設定のフローチャートである。なお、SSOマッピング設定とは、図6のAとBを作ることを指す。図7(A)はIdP側SSOのマッピング、すなわちSSOマッピング対象サービス400におけるフローチャートを、図7(B)はSP側のSSOマッピング、すなわちSSOマッピングサービス300におけるフローチャートをそれぞれ示している。
図7(A)は、本発明の実施の形態に係るSSOマッピング対象サービス400におけるSSOマッピングの設定フローを示すフローチャートである。本フローチャートは、SSOマッピング対象サービス400が、SSOマッピングのマッピングテーブルを作成したいユーザーにアクセスされることによって始まる。
ステップS1001において、第2の認証モジュール401は、SSOマッピング対象サービス400にアクセスしたユーザーから、SSOマッピング対象サービス400でユーザー認証を受けるための第1のIDと第1のパスワードを受け付ける。つまり、IdPへのIDとパスワードを受け付ける。
ステップS1002で第2の認証モジュール401は、ステップS1001で受け付けた第1のIDと第1のパスワードの組み合わせが正しいか判断する。組み合わせが正しければ、ステップS1003に遷移する。また組み合わせが正しくなければユーザーのアクセスを拒否して本フローチャートを終了する。
ステップS1003で第2の認証モジュール401は、ユーザーから受け付けた第1のIDとしてSSOマッピングサービス400へのログインを許可する。なおここでは、ユーザーのIDがIdP User1であった場合を考える。
ステップS1004でSSO設定情報受付モジュール402は、ユーザーからSSOマッピング設定情報を受け付ける。SSOマッピング設定情報は、SP側ユーザーID、SP側ユーザーIDに対応するパスワード、SSOマッピング情報ファイルで構成される。SSOマッピング情報ファイルとは、ユーザーが希望するSSOマッピングの対象となるユーザーIDが記述された情報ファイルでCSV、JSON、XML形式などで示される。なおSSOマッピング設定情報をユーザーに入力させる画面は、例えば図9に示すような画面であり、設定ボタンが押されることでSSOマッピング設定情報がアップロードされる。ここではSSOマッピング設定情報500として、IdP User1とSP User1、IdP User2とSP User2、IdP User3とSP User3のそれぞれの組み合わせにSSOマッピング設定させる情報が記述されていた場合を考える。本実施例の場合、CSVファイルで以下のような情報であるとする。
IdP User1,SP User1
IdP User2,SP User2
IdP User3,SP User3
この情報が記述されたSSOマッピング設定情報が、図9を使ってアップロードされる。
ステップS1005でSSO設定情報受付モジュール402は、ステップS1004で受け付けたSSOマッピング設定情報から、第1のIDテーブル生成モジュール402を利用して第1のIDテーブル500を生成する。さらにSSO設定情報受付モジュール402は、第1のIDテーブル500から、後述するサービス300に対するSSO設定要求APIの引数となるSSO設定要求IDリスト550(第2のIDリスト)を生成する。さらにSSO設定情報受付モジュール402は、SSOマッピングサービスB400のエンティティIDを取得する。なお、エンティティIDは、単に特定情報と呼ばれることもある。
ステップS1006でSSO設定情報受付モジュール402は、ステップS1005にて生成した第1のIDテーブル500を一時保存する。ここで保持された第1のIDテーブル500は、後述するSSOマッピング設定モジュール407が、第5のIDテーブル602を生成するために使用する。
ステップS1007でSSO設定情報受付モジュール402は、ステップS1004、ステップS1005で収集した情報を引数にして、SSOマッピング設定要求をサービスA300に送信する。SSOマッピング設定要求と共に送信する情報は、SP実行者情報(SPユーザーID、SPパスワード)と、SSO設定要求IDリスト550と、サービスB400のエンティティIDである。
ここでSSOマッピング対象サービス400は、SSOマッピング設定要求、すなわち第4のIDテーブル生成の要求に対するSSOマッピングサービス300の応答を待つ。
ステップS1008でSSO設定情報受付モジュール402は、図7(B)で後述するSSOマッピングサービス300の処理結果により、第4のIDテーブル601を受信する。
ステップS1009でSSO設定情報受付モジュール402は、受信した第4のIDテーブルの判定を行う。本判定は、S1008にて受信された第4のIDテーブルに含まれるSPのユーザー、SP User1−3がステップS1006にて保存した第1のIDテーブル500に含まれるかどうかを判定する。もし判定の結果、IdPのユーザーが誤りであれば、処理を中止し、ステップS1011にてエラーメッセージを表示して(図示せず)、本フローチャートを終了する。もし判定の結果が正常であったなら、次のステップS1010に遷移する。例えば、第4のIDテーブルにSP User1とSP User4が含まれていた場合、SP User1については以降の処理へと進めるが、SP User4については第1のIDテーブル500に含まれない。そのため、エラーとなる。
ステップS1010でSSO設定情報受付モジュール402は、第5のIDテーブル生成モジュール406を使用して、第5のIDテーブルを生成する。第5のIDテーブルの生成には、ステップS1006にて保存した第1のIDテーブル500と、ステップS1008にて受信した第4のIDテーブル601を利用する。第5のIDテーブル生成モジュール406は、S1008にて受信した第4のIDテーブル601とS1006にて保存した第1のIDテーブル500を使って第4のIDテーブル601を生成する。具体的には、第4のIDテーブル601のSP User1、SP User2、SP User3に対応する第1のIDテーブル500のIdP User1、IdP User2、IdP User3を抽出する。さらに、抽出したIdP User1、IdP User2、IdP User3に、第4のIDテーブル601のAUID1、AUID2、AUID3を対応付けする。以上の処理により、SSO設定情報受付モジュール402は、第5のIDテーブル602を生成し、SSOマッピング設定を行う。
本SSOマッピング設定を終了し、本フローチャートを終了する。なお、本SSOマッピング設定は、ユーザーIDの削除、移動に伴いAUID上の設定も削除される。具体的には、AUIDマッピングテーブル上にIdP User1とAUID1の設定が存在した場合、IdP User1の削除に伴い、IdP User1とAUID1の設定も、AUIDマッピングテーブルから削除される。
その結果、例えば、一度SSOマッピングが行われた後にユーザーIDが削除され、かつ、再度同じユーザーIDが登録された場合であっても、削除前のユーザーIDと再登録されたユーザーIDには異なるAUIDが発行される。よって、適切なSSOを実現できる。
なお、図7Aの処理は1台のサーバーで処理される前提で説明したが、複数のサーバーで構成されるシステムを使って図7Aの処理を実現しても構わない。複数のサーバーで構成されるシステムが図7Aの処理を実現する場合、各サーバーが図4Aの各モジュールを備えることとなる。
図7(B)は本発明の実施の形態に係る、SSOマッピングサービス300における第4のIDテーブルの生成フローチャートである。本フローチャートは、ステップS1101にて、SSOマッピングサービス300が、SSOマッピング対象サービス400から第4のIDリストの生成要求を受けることで始まる。第4のIDテーブル生成要求には、ステップS1007で述べたSPユーザーIDと、SPパスワードと、SSO設定要求IDリスト(第2のIDリスト)550と、サービスB400のエンティティIDが含まれる。
ステップS1102で、第1の認証モジュール301は、第4のIDリストの生成要求に含まれるSPユーザーIDとSPパスワードの組合せが正しいか判断する。組み合わせが正いと判断されればステップS2003に遷移し、正しくないと判断されれば、第4のIDテーブルをSSOマッピング対象サービス400に返さずにステップS1114にてエラーを返却して本フローチャートを終了する。なお、このSPユーザーIDとSPパスワードを用いることでテナントIDが特定される。
ステップS1103で、第1の認証モジュールは、第4のIDリストの生成要求に含まれるエンティティIDの判定のためSSOマッピング設定モジュール306を利用して既に登録されているエンティティIDのリストを取得する。本エンティティIDリストに登録されているエンティティIDは、SSOマッピングサービス300にSSOが許可されているものとする。つまり、エンティティIDのリストには、エンティティIDごとにSSOを許可するか否かが設定されている。
ステップS1104で、第1の認証モジュールは、ステップS1103で取得したエンティティIDリストに第4のIDリストの生成要求に含まれるエンティティIDが含まれるかどうか判定する。もしエンティティIDが含まれていると判定されればステップS1105に遷移し、含まれないと判定されれば、第4のIDテーブルをSSOマッピング対象サービス400に返さずにステップS1114にてエラーを返却して本フローチャートを終了する。
ステップS1105でIdP登録、選択モジュール307は、第4のIDリストの生成要求に含まれるSPユーザーのIdP登録状態を確認する。具体的には、SPは、テナントIDごとにIdPが登録されたリストを備える。SPは、S1105にてそのリストを参照し、今回の対象のテナントIDにIdPが登録されているか否かを判定する。登録されている場合、S1105の処理はYesと判定され、登録されていない場合、S1105の処理はNoと判定される。
ステップS1106で、第3のIDリスト生成モジュールは、第1の認証モジュール301でユーザー認証されたユーザーの権限(つまり、SP実行者情報)で取得可能なIDのリストを示す第3のIDリストを生成する。例えば、本願の図5のA−2が第3のIDリストに相当し、今回のSP実行者情報によりSP User1−3の情報が取得されたことを示す。さらに詳細に説明する。第3のIDリスト生成モジュールは、SP実行者情報の権限(例えば、管理者か否か)を確認し、SP実行者情報が属するテナントIDを特定する。そして、特定されたテナントIDに属するIDリストから今回のSP実行者情報の権限で取得可能なIDを取得することで第3のIDリストが生成される。
ステップS1107で、SSOマッピング設定モジュール306は、第2のIDリスト取得モジュール302を利用して、第4のIDテーブルの生成要求に含まれるSSO設定要求IDリスト(第2のIDリスト)550を取得する。なお、第2のIDリストは、単にユーザー情報と呼ばれることもある。
さらにSSOマッピング設定モジュール306は、ステップS1106で生成した第3のIDリストと第2のIDリストを比較し、両者が一致していればステップS1108に遷移する。もしリストが不一致であれば、ステップS1111に遷移する。
ステップS1111でSSOマッピング設定モジュール306は、ステップS1107で取得した第2のIDリストのユーザーが第3のIDリストに含まれるかどうか確認する。もし第2のIDリストのユーザーが第3のIDリストに含まれる場合、ステップS1112に遷移する。もし第2のIDリストのユーザーが第3のIDリストに含まれない場合、ステップS1114にてエラーを返却して本フローチャートを終了する。
ステップS1112でSSOマッピング設定モジュール306は、ステップS1111で確認した第2のIDリストに含まれるユーザーのうち、第3のIDリストに含まれるユーザーを選出する。そして、SSOマッピング設定モジュール306は、第2のIDリストとして再生成し、ステップS1108に遷移する。
ステップS1108でSSOマッピング設定モジュール306は、第2のIDリストに対するSSOマッピング処理を行う。本SSOマッピング処理は、第4のIDテーブル生成モジュール305が、第2のIDリストに含まれる各ユーザーIDに対してAUIDを設定する処理である。
ステップS1109でSSOマッピング設定モジュール306は、生成したAUIDを対応付けた第4のIDテーブルであるSSOマッピング設定情報601を生成してIdSへ送信する。
以上の処理により第4のIDテーブル(図6のA)と第5のIDテーブル(図6のB)が生成されたため、SSOマッピング設定が終了する。
本SSOマッピング設定は、ユーザーIDの削除、移動に伴いAUID上の設定も削除される。具体的には、AUIDマッピングテーブル上にSP User1とAUID1の設定が存在した場合、SP User1の削除に伴い、SP User1とAUID1の設定も、AUIDマッピングテーブルから削除される。
なお、本願では、SSOマッピング設定がSPに要求される前に、SPがSPユーザーIDを作成した段階で各SPユーザーIDにAUIDを設定しておいても良い。
SSOマッピング設定がSPに要求される前に各SPユーザーIDにAUIDが設定されていた場合、SPは、SPユーザーIDにAUIDが設定されたテーブルを保持する。
そしてSPがSSOマッピング設定要求を受信した場合、SSOマッピング設定モジュール306は、第2のIDリストの各SPユーザーIDに、事前に登録したテーブルを使ってAUIDを設定する。
なお、図7Bの処理は1台のサーバーで処理される前提で説明したが、複数のサーバーで構成されるシステムを使って図7Bの処理を実現しても構わない。複数のサーバーで構成されるシステムが図7Bの処理を実現する場合、各サーバーが図4Aの各モジュールを備えることとなる。
本実施の形態によれば、ユーザーが既に持っているSP用のIDに対してSSOマッピングを設定することができる。また企業のテナント内で管理者が代理でSSOマッピングを設定しようとした場合、各ユーザーのパスワードを知らなくても代理でSSOマッピング設定を行える。さらにSSOマッピングを設定後、SSO対象サービスでユーザーを削除後、同名のユーザーを再作成しても、誤ってSSOマッピングが設定されることもない。
図9は本発明の実施の形態に係るSSOマッピング設定用の画面例である。図9はSPのユーザーIDおよびパスワード、SSOマッピング設定情報500を受け付ける。なおここでSSOマッピング対象サービスがIdPであることを想定したため画面例にもIdPと記載しているが、SSOマッピング対象サービスはIdPであることに限定されない。またSSOマッピング設定情報500も、ファイル以外の形態で指定されてもよい。
なお、本願の図7Bでは、S1105においてNoと判断された場合、SPはIdPへエラーを返却していたが、自動的にIdPを登録しても良い。以下に図10の表、および図11のフローチャートを使ってSPが自動的にIdPを登録する方法について説明する。
図10(A)は、SSOマッピングサービス300における、SSOマッピング対象のテナントIDとIdPの対応を記憶する表である。本表は、SSOマッピングサービス側(SP側)に存在し、SSOマッピング設定要求のテナントIDと、SSOマッピング対象のIdPのIDの対応付けを保存している。本対応は、SSOマッピング処理に先立って設定されている。図10(A)の場合、SP側に登録したテナントAはIdP_Aに対応し、テナントBにはIdPが登録されていない。
図10(B)は、SSOマッピングサービス300における、自動登録可能なIdPのリストを示す表である。本表は、SSOマッピングサービス側(SP側)に存在する。本リストは、SSOマッピング処理に先立って設定されている。図10(B)の場合、IdP_A とIdP_Bが自動登録可能なIdPであることを示す。
図11は、IdP自動登録処理を表すフローチャートである。図7BのステップS1105においてNoと判断された場合、第1の認証モジュールは、本フローチャートの処理を開始する。なお、図11の処理を実現するためには、S1007で上述した情報に加えてIdPの識別情報も取得しておく必要がある。
ステップS1201にて第1の認証モジュールは、図10(B)の自動登録可能なIdPリストを参照する。
次にステップS1202において、第1の認証モジュールは、IdPの識別情報が図10(B)に含まれているか判定する。もし含まれていない場合、第1の認証モジュールは、S1204にてエラーを返却する。
S1202において含まれると判定された場合、ステップS1203において、第1の認証モジュールは、自動登録可能と判定してS1007で渡されたIdPの識別情報をテナントIDに対して登録する。例えば、図10(A)の状況において、SSOマッピング対象のテナントIDがテナントBであり、かつ、IdPの識別情報としてIdP_BがIdPから渡された場合、図10(A)のテナントBに対応するIdPとしてIdP_Bが登録される。
[他の実施形態]
また、本発明は、以下の処理を実行することによっても実現される。
即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。