異種又は複数のアイデンティティサービスに基づいてユーザの仮想アイデンティティを作成するための方法及び装置が、本明細書に記載される。認証とは、あるタイプの認証機構のソース(例えば、アイデンティティサービス)を使用することによって、あるエンティティ又はユーザが、そのエンティティ又はユーザが主張する者であるという検証を指し得る。例えば、ユーザは、複数のタイプ又はソースの認証機構を利用することによって、複数の独立したソフトウェア又はネットワークシステムに、単一のサインオンアクセス制御機構を提供する、集中型認証サーバにログインし得る。認証機構のタイプ又はソースは、アイデンティティサービスとも称され得る。したがって、集中型認証サーバは、それが複数のアイデンティティサービスを管理し得るため、アイデンティティサービスブローカと称され得る。
一度ユーザがアイデンティティサービスブローカ(例えば、SSOアクセス制御を通じて)にログインすると、ユーザは、アイデンティティサービスブローカによって管理されるアイデンティティサービスを通じて、又はそれに対しても認証され得る。いくつかの実施形態では、アイデンティティサービスは、あるタイプ又は役割のアイデンティティサービスにカテゴリ化又はグループ化され得る。例えば、アイデンティティサービスは、一次認証サービス、二次認証サービス、又は補足的属性サービスとしてカテゴリ化され得るが、これらに限定されない。
アイデンティティサービスは、単一の役割又は複数の役割と関連付けられ得る。例えば、アイデンティティサービスは、認証サービスを提供するのみであり得るか、又はユーザの情報(例えば、属性)を提供する補足的属性サービスを提供するのみであり得る。いくつかの実施形態では、アイデンティティサービスは、認証サービス並びに補足的属性サービスの両方を提供し得る。
いくつかの実施形態では、アイデンティティサービスブローカは、ソフトウェア又はネットワークアプリケーションへのアクセス制御(例えば、承認)も提供し得る。アイデンティティサービスブローカのアドミニストレータは、ユーザがソフトウェア又はネットワークアプリケーションにアクセスするために満たされなければならないソフトウェア又はネットワークアプリケーションの各々に割り当てられるべきポリシーを指定し得る。例えば、アドミニストレータは、アイデンティティサービスによっても提供されるユーザの属性に基づいてポリシーを指定又は定義し得る。かかる属性は、補足的属性とも称され得る。更に、アイデンティティサービスブローカは、アイデンティティサービスによって提供されるユーザの属性を、ユーザがアクセスしようとしているソフトウェア又はネットワークアプリケーションに伝送し得る。いくつかの実施形態では、属性は、役割ベースアクセス、資格付与、ジャストインタイムプロビジョニング、アプリケーションアカウント、識別及びマッピングなどの目的で、アプリケーションに伝送され得る。
しかしながら、アイデンティティサービスによって提供されるユーザの属性は、異なる形式で記憶され得る。例えば、ユーザのユーザ名に対応する属性は、第1のアイデンティティサービスにおいて「username」というフィールドに記憶され得、第2のアイデンティティサービスにおいて「name」というフィールドに記憶され得る。第1のアイデンティティサービスは、同じユーザに対する「email」というフィールド内の属性を更に含み得、第2のアイデンティティサービスは、同じユーザに対する「location」というフィールド内の属性を含み得る。
本開示の実施態様は、アイデンティティサービスの属性フィールド間のリンク又は関係を識別するように、かつアイデンティティサービスからの属性フィールドに基づいて仮想アイデンティティを生成するように、仮想アイデンティティ、及び以下で更に詳細に記載されるコンテキストモジュールを含み得る。仮想アイデンティティの使用は、アプリケーションのためのポリシーを定義するために使用され得る、正規化された仮想属性フィールドセットをもたらし得る。仮想アイデンティティ、及び以下で更に詳細に記載されるコンテキストモジュールの特性は、アイデンティティサービス識別子サブモジュール、生成器サブモジュール、記入サブモジュール、リンクサブモジュール、伝送器サブモジュール、及びセッションデータサブモジュールを含み得る。
図1は、種々の実施態様のための例示的なシステムアーキテクチャ100を例解する。システムアーキテクチャ100は、1つ若しくは2つ以上のコンピューティングデバイス110と、アイデンティティサービスブローカ150と、ネットワーク120を介して互いに連結されるネットワークアプリケーション130及び140と、を含み得る。ネットワーク120は、公的ネットワーク、私的ネットワーク、無線ネットワーク、セルラネットワーク、又はこれらの組み合わせであってもよい。
アイデンティティサービスブローカは、コンピューティングデバイス110のクライアントに対して、独立した及び別個のネットワーク又はソフトウェアシステムによってホスト又は提供されるアプリケーション130及び140への仮想アイデンティティ生成及び認証を提供する、中央認証サーバであり得る。例えば、アイデンティティサービスブローカは、遠隔ネットワーク又はソフトウェアシステムにアクセスするためのアイデンティティサービスを管理する、クラウドベースのコンピューティングシステムであると考えられ得る。コンピューティングデバイス110は、デスクトップコンピュータ、ラップトップコンピュータ、又はポータブルコンピューティングデバイス、例えば、限定されないが、モバイル電話、携帯情報端末(PDA)、ポータブルメディアプレーヤ、ネットブック、タブレットコンピュータ、ポータブルゲームコンソール、ポータブルテレビ、電子書籍リーダなどであってもよい。示されるように、1人若しくは2人以上のユーザは、コンピューティングデバイス110を使用して、アイデンティティサービスブローカ150で認証し、アプリケーション130及び140にアクセスするための承認を受信し得る。
アイデンティティサービスブローカ150は、1つ若しくは2つ以上のアイデンティティサービス160、170、及び180に基づいて、ユーザを認証し得る。例えば、アイデンティティサービスブローカ150は、アイデンティティサービス160、170、及び180によって提供される、異なるタイプ若しくはソースの認証機構又は認証情報を管理し得る。認証機構の例としては、一次認証、二次認証、及び補足的属性情報が挙げられるが、これらに限定されない。一次認証とは、ユーザ名及びパスワードを提供するユーザに基づく認証を指し得る。例えば、ユーザは、ユーザ名及びパスワードを入力し得、ユーザ名及びパスワードは、認証機構又はソース、例えば、ユーザ名及びパスワードの有効な組み合わせのレポジトリを含み得るアクティブディレクトリ(AD)と照合され得る。いくつかの実施形態では、二次認証とは、一次認証に加えて提供されなければならない認証機構を指し得る。例えば、一次認証は、ユーザ名及びパスワードに対応し得、二次認証は、限定されないが、セキュリティトークン、デジタル証明書、例えば、公開鍵基盤(PKI)証明書などに対応し得る。一次認証と二次認証との組み合わせは、ユーザが成功裏に認証されるために、2つの異なる認証機構又はソースが必要とされるため、2要素認証と称され得る。更に、補足的属性情報とは、ユーザのユーザ属性を指し得る。いくつかの実施形態では、ユーザのユーザ属性は、別個のアイデンティティサービスに記憶され得るか、又は一次認証若しくは二次認証のいずれかを提供するアイデンティティサービスと関連付けられ得るか、若しくは含まれ得る。
図1に示されるように、アイデンティティサービスブローカ150は、アイデンティティサービス160、170、及び180を管理し得る。アイデンティティサービス160、170、及び180の各々は、異なる認証サービスを提供し得る。例えば、アイデンティティサービス160は、ユーザ名及びパスワードに基づく一次認証を提供するアクティブディレクトリ又はセキュリティアサーションマークアップランゲージ(SAML)ソースであってもよい。いくつかの実施形態では、一次認証は、ユーザによる最初のログインに応答して、ユーザに提供されるチケット(例えば、ケルベロスベースのチケット)にも基づき得る。更に、アイデンティティサービス170は、PKI証明書、トークン、又は任意の他のかかる情報に基づく二次認証機構を提供し得る。アイデンティティサービス180は、ユーザに対応する補足的属性を提供し得る。いくつかの実施形態では、アイデンティティサービス160及び170も、ユーザに対応する補足的属性を提供し得る。
アイデンティティサービスブローカ150は、アプリケーション130及び140と関連付けられたポリシーと関連付けられ得、かつ/又はそれらを記憶し得る。いくつかの実施形態では、ポリシーは、ユーザ属性に基づく条件を含み得、かつアプリケーション130及び140に割り当てられ得る。例えば、ユーザに対応する場所属性に対する「California」の属性値を指定する第1のポリシーは、アプリケーション130に割り当てられ得、ユーザに対応する職業組織属性に対する「Engineering」の属性値を指定する第2のポリシーは、アプリケーション140に割り当てられ得る。以下で更に詳細に述べられるように、ポリシーへの属性の割り当ては、仮想アイデンティティの仮想属性フィールドに基づき得る。
コンピューティングデバイス110のユーザが、アイデンティティサービス160、170、及び180に対して、アイデンティティサービスブローカ150で認証される際、ユーザの仮想アイデンティティは、ユーザが成功裏に認証されたアイデンティティサービス160、170、及び180において記憶された属性に基づいて生成され得る。例えば、アイデンティティサービス160は、「location」属性フィールドを含む属性を含み得、アイデンティティサービス170は、「work organization」属性フィールドを含む属性を含み得る。アイデンティティサービスブローカ150は、アイデンティティサービス160とアイデンティティサービス170との間のリンク又は関係を識別し得、アイデンティティサービス160及びアイデンティティサービス170での属性に基づいて、ユーザの仮想アイデンティティを生成し得る。
アイデンティティサービスブローカ150は、ポリシーを定義し、ポリシーをアプリケーションに割り当て、単一のサインオンアクセス制御を提供し、アイデンティティサービスにおいて記憶された属性を取り出す機能性、並びにアイデンティティサービス160、170、及び180において記憶された属性に基づく正規化された仮想属性を含む、仮想アイデンティティを生成するための仮想アイデンティティ及びコンテキストモジュールを含み得る。アイデンティティサービスブローカ150、並びに仮想アイデンティティ及びコンテキストモジュールに関する更なる詳細は、以下で更に詳細に開示される。
図2は、いくつかの実施形態に従う、アイデンティティサービスブローカ200のブロック図である。一般的に、アイデンティティサービスブローカ200は、図1に示されるアイデンティティサービスブローカ150に対応し得る。アイデンティティサービスブローカ200は、単一のサインオン(SSO)モジュール210と、仮想アイデンティティ及びコンテキストモジュール220と、ポリシーエンジンモジュール230と、承認モジュール240と、を含む。代替的な実施形態では、モジュールのうちの1つ若しくは2つ以上の機能性は、組み合わされ得るか、又は分割され得る。
図2に示されるように、アイデンティティサービスブローカ200は、単一のサインオンモジュール210を含み得る。いくつかの実施形態では、単一のサインオンモジュール210は、複数のネットワーク又はシステムへのユーザに対するアクセス制御を提供し得る。例えば、ユーザは、ユーザ名及びパスワードを単一のサインオンモジュール210に提供し得、アクティブディレクトリ(AD)、SAMLソースなどからの有効なユーザ名及びパスワードの組み合わせと一致するユーザ名及びパスワードに基づいて認証され得るか、又はケルベロスチケットを提供し得る。いくつかの実施形態では、単一のサインオンは、一次認証をもたらし得る。同じ又は代替的な実施形態では、単一のサインオンはまた、二次認証を含み得る。更に、アイデンティティサービスブローカ200は、ポリシーエンジンモジュール230を含み得る。いくつかの実施形態では、ポリシーエンジンモジュール230は、ポリシーを定義するか、又は属性値をポリシーに割り当て、かつそのポリシーを1つ若しくは2つ以上のアプリケーションに割り当てるために使用され得る。例えば、「Robert」の属性値を必要とするポリシーは、あるアプリケーションに割り当てられ得、「Jeff」の属性値を必要とする別のポリシーは、別のアプリケーションに割り当てられ得る。ポリシーエンジンモジュール230は、図4〜6を参照して以下で更に詳細に開示されるように、あるポリシーに対するユーザの仮想アイデンティティから、ある属性を指定し得る。アイデンティティサービスブローカ200は、承認モジュール240を更に含み得る。いくつかの実施形態では、承認モジュール240は、アプリケーションに割り当てられたポリシーを満たすユーザに基づいて、1つ若しくは2つ以上のアプリケーションへのアクセスを許可又は承認し得る。
アイデンティティサービスブローカ200は、仮想アイデンティティ及びコンテキストモジュール220を含み得る。いくつかの実施形態では、仮想アイデンティティ及びコンテキストモジュール220は、アイデンティティサービスブローカ200の単一のサインオンモジュール210にログインしたユーザの仮想アイデンティティを生成し得る。例えば、仮想アイデンティティ及びコンテキストモジュール220は、異なるアイデンティティサービスにおいて記憶された属性に基づいて、ユーザに割り当てられた仮想アイデンティティの仮想属性フィールドに記入し得る。仮想アイデンティティ及びコンテキストモジュール220に関する更なる詳細は、図3を参照して更に詳細に開示される。
したがって、アイデンティティサービスブローカ200は、アプリケーション若しくはサービスを提供する、クラウドベースのシステム並びに/又は他の独立したネットワーク及びシステムに対する、単一のサインオンアクセス制御を提供し得る。アイデンティティサービスブローカ200は、ポリシーに対する属性を指定し、かつそのポリシーをアプリケーション又はサービスに割り当てるために使用され得る。更に、ユーザには、ユーザと関連付けられたアイデンティティサービスから、仮想属性フィールド及び値を含む仮想アイデンティティが割り当てられ得る。アイデンティティサービスブローカ200は、仮想アイデンティティからのユーザの仮想属性値が、ポリシーの条件を満たす場合、ユーザがアプリケーションにアクセスすることを承認し得る、及び/又は仮想属性を、仮想アイデンティティからアクセスされたアプリケーションに伝送し得る。
図3は、いくつかの実施形態に従う、仮想アイデンティティ及びコンテキストモジュール300のブロック図である。一般的に、仮想アイデンティティ及びコンテキストモジュール300は、図1及び2に示されるようなアイデンティティサービスブローカ150又は200内の仮想アイデンティティ及びコンテキストモジュール220に対応し得る。仮想アイデンティティ及びコンテキストモジュール300は、アイデンティティサービス識別子サブモジュール310と、生成器サブモジュール320と、フィールド記入サブモジュール330と、リンクサブモジュール340と、伝送器サブモジュール350と、セッションデータサブモジュール360と、を含み得る。代替的な実施形態では、サブモジュールのうちの1つ若しくは2つ以上の機能性は、組み合わされ得るか、又は分割され得る。
図3に示されるように、仮想アイデンティティ及びコンテキストモジュール300は、アイデンティティサービス識別子サブモジュール310を含み得る。いくつかの実施形態では、アイデンティティサービス識別子サブモジュール310は、ユーザと関連付けられたアイデンティティサービスを識別し得る。例えば、アイデンティティサービス識別子サブモジュール310は、ユーザが、一次認証、二次認証を提供する、アイデンティティサービスによって成功裏に検証されたこと、又はアイデンティティサービスが、ユーザの属性を提供することを識別し得る。いくつかの実施形態では、アイデンティティサービス識別子サブモジュール310は、ユーザが、検証されたユーザ名及びパスワード、又は他のかかる一次認証情報を、アイデンティティサービスブローカの単一のサインオンアクセス制御サービスに提供したという識別を受信し得る。ユーザ認証に応答して、アイデンティティサービス識別子サブモジュール310は、ユーザと関連付けられた1つ若しくは2つ以上のアイデンティティサービスを識別し得る。いくつかの実施形態では、アイデンティティサービス識別子サブモジュール310は、ユーザの属性(例えば、補足的属性)を含む、ユーザと関連付けられたアイデンティティソースを識別し得る。仮想アイデンティティ及びコンテキストモジュール300は、生成器サブモジュール320を更に含み得る。いくつかの実施形態では、生成器サブモジュール320は、ユーザの仮想アイデンティティを作成又は生成し得る。同じ又は代替的な実施形態では、仮想アイデンティティは、ユーザと関連付けられたポリシー及び/又はアプリケーションと関連付けられたポリシーに基づいて、1つ若しくは2つ以上の生成された仮想属性フィールドを含み得る。例えば、生成器サブモジュール320は、アイデンティティサービスブローカによって管理されるポリシーによって必要とされる各属性に対する仮想アイデンティティに対する仮想属性フィールドを作成し得る。例として、第1のポリシーは、「name」及び「location」に対する属性を指定し得、第2のポリシーは、「email address」に対する属性を指定し得る。第1及び第2のポリシーによって指定される属性の識別に応答して、生成器サブモジュール320は、「name」、「location」、及び「email address」の属性に対応する仮想属性フィールドを含む、ユーザの仮想アイデンティティを作成又は生成し得る。属性に関する更なる詳細は、図5に関して開示される。
図3を参照すると、仮想アイデンティティ及びコンテキストモジュール300は、フィールド記入サブモジュール330を含み得る。いくつかの実施形態では、フィールド記入サブモジュール330は、仮想アイデンティティの仮想属性フィールドに、1つ若しくは2つ以上のアイデンティティサービスからの属性値を書き込むか、又は記入し得る。例えば、フィールド記入サブモジュール330は、生成器サブモジュール320によって作成された仮想アイデンティティの仮想属性フィールドに、アイデンティティサービス識別子サブモジュール310によって識別されたアイデンティティサービスにおいて記憶された属性を記入し得る。更に、リンクサブモジュール340は、第1のアイデンティティサービスと第2のアイデンティティサービスとの間のリンクを識別し得る。かかる判定に応答して、フィールド記入サブモジュール330は、仮想アイデンティティの仮想属性フィールドに、識別されたリンクに基づく第2のアイデンティティサービスからの属性を記入し得る。かかる機構に関する更なる詳細は、以下で更に詳細に開示される。
いくつかの実施形態では、仮想アイデンティティ及びコンテキストモジュール300は、セッションデータサブモジュール360を含み得る。セッションデータサブモジュール360は、永続的な記憶ユニットであってもよい。いくつかの実施形態では、永続的な記憶ユニットは、ローカル記憶ユニット又はリモート記憶ユニットであってもよい。永続的な記憶ユニットは、磁気記憶ユニット、光学的記憶ユニット、ソリッドステート記憶ユニット、電子記憶ユニット(メインメモリ)、又は同様の記憶ユニットであってもよい。永続的な記憶ユニットは、モノリシックデバイス、又は分散したデバイスセットであってもよい。本明細書で使用される際、「セット」は、任意の正の整数の項目を指す。いくつかの実施形態では、セッションデータサブモジュール360は、ユーザの仮想アイデンティティ、並びにユーザと関連付けられたセッションコンテキスト情報を記憶し得る。
仮想アイデンティティ及びコンテキストモジュール300は、伝送器サブモジュール350を更に含み得る。いくつかの実施形態では、伝送器サブモジュール350は、ポリシーエンジンモジュール(例えば、ポリシーエンジンモジュール230)に、又はユーザがアクセスすることを承認されたアプリケーションに、仮想アイデンティティ及び/又はセッションデータ情報を伝送し得る。
したがって、仮想アイデンティティ及びコンテキストモジュール300は、ユーザと関連付けられている1つ又は複数のアイデンティティサービスを識別し得る。いくつかの実施形態では、識別されたアイデンティティサービスの各々は、アイデンティティサービスに対して成功裏に認証されたユーザの属性情報を含み得る。仮想アイデンティティ及びコンテキストモジュール300は、ユーザの仮想アイデンティティを更に生成し得る。例えば、仮想アイデンティティは、属性値を含み得る1つ若しくは2つ以上の仮想属性フィールドを含み得る。いくつかの実施形態では、仮想アイデンティティは、1つ若しくは2つ以上のポリシーにおいて指定される各タイプの属性に対する仮想属性フィールドを含み得る。仮想アイデンティティ及びコンテキストモジュール300は、仮想アイデンティティの仮想属性フィールドに、アイデンティティサービスからの属性値を更に記入するか、又は書き込み得る。
図4は、仮想アイデンティティの仮想属性フィールドに記入するための例示的な方法400を例解するフロー図である。方法400は、ハードウェア(例えば、処理デバイス、回路、専用論理、プログラマブル論理、マイクロコードなど)、ソフトウェア(例えば、処理デバイス上で実行される命令)、又はこれらの組み合わせを含み得る処理論理によって実施され得る。いくつかの実施形態では、方法400は、図1及び2のアイデンティティサービスブローカ150又は200内の図2及び3の仮想アイデンティティ及びコンテキストモジュール220又は300によって実施され得る。
図4に示されるように、方法400は、ユーザと関連付けられた第1のアイデンティティサービスを識別する処理論理によって開始し得る(ブロック410)。例えば、処理論理は、ユーザが、アイデンティティサービスブローカの単一のサインオン機能にアクセスされ、第1のアイデンティティサービスに対して認証されたことを識別し得る。いくつかの実施形態では、かかる第1の認証は、一次認証と称され得る。処理論理は、第1のアイデンティティサービスにおけるユーザの属性値に基づいて、ユーザに割り当てられた仮想アイデンティティの仮想属性フィールドに記入するか、又は書き込み得る(ブロック420)。例えば、処理論理は、第1のアイデンティティサービスにおいて記憶されたユーザの属性値を取り出し、取り出された属性値を、仮想アイデンティティの対応する仮想属性フィールドに割り当て得る。処理論理は、ユーザと関連付けられている第2のアイデンティティサービスを識別し得る(ブロック430)。いくつかの実施形態では、第2のアイデンティティサービスは、第1のアイデンティティサービスとは別個かつ異なり得る。例えば、第2のアイデンティティサービスは、二次認証を提供し得る、及び/又はユーザの属性を提供するのみであり得る。処理論理は、第1のアイデンティティサービスと第2のアイデンティティサービスとの間のリンクされた属性フィールドを識別し得る(ブロック440)。いくつかの実施形態では、リンクされたフィールドは、連合識別と称され得る。例えば、第1のアイデンティティサービスに記憶された第1の属性フィールドは、第2のアイデンティティサービスに記憶された第2の属性フィールドとリンクされ得る。いくつかの実施形態では、アイデンティティサービスブローカのアドミニストレータは、第1のアイデンティティサービスと第2のアイデンティティサービスとの間の2つの属性フィールドのリンキングを事前設定し得る。リンクされた属性フィールドに関する更なる詳細は、図5を参照して更に詳細に開示される。
図4を参照すると、処理論理は、リンクされた属性フィールドによって識別された第2のアイデンティティサービスにおいて記憶されたユーザの属性値に基づいて、ユーザに割り当てられた仮想アイデンティティの仮想属性フィールドを更に記入し得る(ブロック450)。例えば、リンクされた属性フィールドは、第1のアイデンティティサービス内のユーザの属性値と第2のアイデンティティサービス内のユーザの属性値をリンクさせる、連合アイデンティティと考えられ得る。したがって、リンクされた属性フィールドは、個別のアイデンティティサービスにわたる単一のユーザの対応する属性を識別し得る。例として、アイデンティティサービスブローカのアドミニストレータは、第2のアイデンティティサービス内の「Emp.Number」という名称のリンクされた属性フィールドと共に、第1のアイデンティティサービス内の「Employee−ID」という名称のリンクされた属性フィールドを指定し得る。処理論理は、「Employee−ID」フィールドに対する属性値を含む第1のアイデンティティサービスの記録においてユーザの属性値を識別し得、かつ第2のアイデンティティサービス内の「Emp.Number」フィールド内の同じ属性値に対する第2のアイデンティティサービスにおいてその記録を検索し得る。第2のアイデンティティサービスのリンクされた属性フィールドで同じ属性値が見つかった場合、その属性値を含む記録の属性値を使用して、仮想アイデンティティの追加の仮想属性フィールドに記入するか、又は書き込み得る。
したがって、第1のアイデンティティサービスが識別され得、仮想アイデンティティの仮想属性フィールドは、第1のアイデンティティサービスに位置する属性値に基づいて書き込まれ得る。第2のアイデンティティサービスが、第1及び第2のアイデンティティサービス内のリンクされたフィールドに基づいて、第1のアイデンティティサービスにリンクされるかどうかの判定が行われ得る。更に、いくつかの実施形態では、アイデンティティサービスブローカのアドミニストレータは、第1のアイデンティティサービスと第2のアイデンティティサービスとの間の関係を事前設定し得る。次いで、仮想アイデンティティの追加の仮想属性フィールドが、第2のアイデンティティサービスに位置する属性値に基づいて書き込まれ得る。いくつかの実施形態では、複数の二次アイデンティティサービスがリンクされて、集約された仮想アイデンティティを作成し得る。例えば、一次認証を提供する第1のアイデンティティサービスは、第2のアイデンティティサービス及び第3のアイデンティティサービスにリンクされ得る。したがって、任意の数及び任意の異なるタイプのアイデンティティサービスが、アイデンティティサービスブローカのアドミニストレータによって事前設定され得る、リンクされたフィールドに基づいて、リンクされ得る。このため、例として、ユーザは、第1のアイデンティティサービスに対して成功裏に認証(例えば、一次認証)し得、第1のアイデンティティサービスからのリンクされたフィールドは、第2のアイデンティティサービスのリンクされたフィールドで識別され得る。更に、第1のアイデンティティサービスからのリンクされたフィールドはまた、第3のアイデンティティサービスのリンクされたフィールドで識別され得る。したがって、複数の異種アイデンティティサービスが、リンクされたフィールドに基づいてリンクされ得、かつ仮想アイデンティティを作成するために使用され得る。
図5は、例示的な仮想アイデンティティが異種アイデンティティサービスによって記入されている例解図である。一般的に、アイデンティティサービス520及び530は、図1のアイデンティティサービス160、170、及び180に対応し得る。更に、ユーザセッション情報510は、図3のセッションデータ360に対応し得る。仮想アイデンティティ540は、アイデンティティサービスブローカ内の図2及び3の仮想アイデンティティ及びコンテキストモジュール220又は300によって作成され得る。
図5に示されるように、仮想アイデンティティ540は、アイデンティティサービス520及びアイデンティティサービス530によって記入されるか、又は書き込まれる、複数の仮想属性フィールドを含み得る。例として、仮想アイデンティティ540は、「Virt_Name」、「Virt_EmployeeID」、「Virt_Location」、及び「Virt_email」という標識又は名称の仮想属性フィールドを含み得る。図5は、4つの仮想属性フィールドを例解するが、任意の数の仮想属性フィールド及び異なるタイプの仮想属性フィールドが、使用されてもよい。いくつかの実施形態では、仮想アイデンティティ540は、ポリシーにおいて使用するために、かつアプリケーションに伝送するために、アイデンティティサービス520及び530において記憶された属性フィールドの抽象化を提供し得る。例えば、ポリシーは、アイデンティティサービス520及び530において記憶された異なる属性フィールドとは対照的に、仮想属性フィールドを指定することによって作成され得る。したがって、仮想アイデンティティは、アイデンティティサービスブローカのポリシーを定義するために使用され得る、正規化された属性フィールドセット(例えば、仮想属性フィールド)を含むと考えられ得る。いくつかの実施形態では、仮想属性フィールドの値は、値の正規化のみではなくむしろ、変換又は集約機能(例えば、サブストリング、整数への変換、組み合わせなど)の結果であり得る。例えば、属性フィールドからの値は、仮想属性フィールドが記入されるときに、変換又は集約され得る。
図5を参照すると、ユーザセッション情報510は、セッションコンテキスト情報530を含み得る。いくつかの実施形態では、セッションコンテキスト情報530は、ユーザがアイデンティティサービスブローカのSSOにログインした際のユーザセッションと関連付けられた情報を指定し得る。セッションコンテキスト情報530は、アイデンティティサービスブローカにログインしたユーザのユーザ名、ユーザが認証されたアイデンティティサービスの認証タイプ、ユーザと関連付けられた保証のレベル、ユーザセッションの時間及び日付、ユーザによって使用されるデバイスタイプ、デバイス評価、デバイスインターネットプロトコル(IP)アドレスなどを含み得るが、これらに限定されない。
示されるように、仮想アイデンティティ540は、アイデンティティサービス520及びアイデンティティサービス530内の属性フィールドからの値によって記入され得る。例えば、いくつかの実施形態では、アイデンティティサービス520は、ユーザに対する一次認証を提供し得、並びにユーザの補足的属性のソースを提供し得る。例えば、アイデンティティサービス520は、「username」、「password」、及び「Employee ID」等の属性フィールドを含む、各ユーザの記録を含み得る。いくつかの実施形態では、ユーザ及びアイデンティティサービス520は、アイデンティティサービス530にリンクされ得る。例えば、アイデンティティサービス530は、アイデンティティサービス520によって提供される一次認証と共に、2要素認証の一部としての二次認証を提供し得る。アイデンティティサービス530はまた、補足的属性のソースを提供し得る。例えば、アイデンティティサービス530は、「Empl.ID」、「Location」、及び「email」等の属性フィールドを含む、各ユーザの記録を含み得る。いくつかの実施形態では、アイデンティティサービスブローカのアドミニストレータは、アイデンティティサービス520及びアイデンティティサービス530の属性フィールド間のリンクを事前設定し得る。例えば、リンク525は、アイデンティティサービス520の属性フィールド「Employee ID」と、アイデンティティサービス530の属性フィールド「Empl.ID」との間のかかる事前設定されたリンクを表し得る。いくつかの実施形態では、リンク525は、それが、アイデンティティサービス520内の記録とアイデンティティサービス530内の記録との間の関係を確立するために使用されるため、連合識別(ID)と称され得る。例えば、リンク525は、アイデンティティサービス520内の記録に対応する記録で、アイデンティティサービス530を検索するために使用され得る。いくつかの実施形態では、リンクされた属性フィールド内の共通の値を有する、アイデンティティサービス520内の記録、及びアイデンティティサービス530内の記録は、同じユーザと関連付けられた記録であり得る。したがって、アイデンティティサービスからの記録の属性フィールドは、仮想アイデンティティの仮想属性フィールドに記入するか、又は書き込むために使用され得る。例えば、示されるように、アイデンティティサービス520からの1つ若しくは2つ以上の属性フィールド値は、1つ若しくは2つ以上の仮想属性フィールドに記入するために使用され得、アイデンティティサービス530の対応する記録からの1つ若しくは2つ以上の属性フィールド値は、同じ仮想アイデンティティの1つ若しくは2つ以上の仮想属性フィールドに記入するために使用され得る。
いくつかの実施形態では、アイデンティティサービスは、統合Windows認証(WA)アイデンティティサービス、公開鍵基盤(PKI)アイデンティティサービス、ケルベロスアイデンティティサービス、トークン、アクティブディレクトリ、第3者のウェブサイト認証情報(例えば、別のネットワークのユーザ名及びパスワード)、ライトウェイトディレクトリアクセスプロトコル(LDAP)、セキュリティアサーションマークアップランゲージ(SAML)などを含み得るが、これらに限定されない。
図5は、単一のユーザの仮想アイデンティティが2つのアイデンティティサービスによって記入されていることを例解するが、任意の数及び任意のタイプのアイデンティティサービスが複数のユーザの複数の仮想アイデンティティを記入するために使用され得る。更に、仮想アイデンティティは、同時に複数の異種アイデンティティサービスに対処するために使用され得る。例えば、異なるアイデンティティサービスからの異なるユーザカテゴリが、仮想アイデンティティによって対処又はマッピングされ得る。例として、企業ディレクトリからの従業員の属性を含む第1のアイデンティティサービス、パートナユーザディレクトリに対応する顧客又はパートナの属性を含む第2のアイデンティティサービス、並びに外部からの訪問者の属性を含む第3のアイデンティティサービス、及び潜在的に公的なアイデンティティサービスはすべて、複数のユーザの仮想アイデンティティ又は複数の仮想アイデンティティの仮想属性フィールドにマッピングされ得る。いくつかの実施形態では、アイデンティティサービスブローカのアドミニストレータは、かかる異種アイデンティティサービス及びその中の異なるカテゴリへの仮想アイデンティティマップ間の関係を事前設定し得る。例えば、アイデンティティサービスブローカのアドミニストレータは、企業ディレクトリからの従業員、パートナユーザディレクトリからの顧客又はパートナ、及び外部アイデンティティサービスからの訪問者に対応する情報がすべて、特定の仮想属性フィールドに関連付け又はマッピングされ得ることを示し得る。
例として、第1のユーザの仮想アイデンティティは、第1のアイデンティティサービス及び第2のアイデンティティサービスの属性フィールドに基づいて記入され得る。第2のユーザの仮想アイデンティティは、第1のアイデンティティサービス、第3のアイデンティティサービス、及び第4のアイデンティティサービスの属性フィールドに基づき得る。このため、仮想アイデンティティは、第1及び第2のユーザと、第1、第2、第3、及び第4のアイデンティティサービスの種々の属性フィールドとの間のマッピングであり得る。
図6は、1つ若しくは2つ以上のアイデンティティサービスに基づいて、仮想アイデンティティの仮想属性フィールドに記入するための例示的な方法600である。方法600は、ハードウェア(例えば、処理デバイス、回路、専用論理、プログラマブル論理、マイクロコードなど)、ソフトウェア(例えば、処理デバイス上で実行される命令)、又はこれらの組み合わせを含み得る、処理論理によって実施され得る。いくつかの実施形態では、方法600は、アイデンティティサービスブローカ150又は200内の図2及び3の仮想アイデンティティ及びコンテキストモジュール220又は300によって、実施され得る。
図6に示されるように、方法600は、仮想アイデンティティの仮想属性フィールドに基づいてポリシーを定義する処理論理によって、開始し得る(ブロック610)。例えば、処理論理は、ユーザの仮想アイデンティティの仮想属性フィールドに対応する、ユーザの1つ若しくは2つ以上の補足的属性に基づく条件を含むように、ポリシーを生成し得る。処理論理は、第1のアイデンティティサービスに対して、ユーザ認証を更に識別し得る(ブロック620)。例えば、ユーザ認証は、一次認証であり得る。更に、処理論理は、第1のアイデンティティサービスの属性フィールドに記憶されたユーザの補足的属性に基づいて、ユーザの仮想アイデンティティの仮想属性フィールドに記入するか、又は書き込み得る(ブロック630)。例えば、処理論理は、仮想アイデンティティの仮想属性フィールドに対応する、第1のアイデンティティサービスにおいて記憶されたユーザ属性(例えば、補足的属性)を識別し得る。いくつかの実施形態では、アイデンティティサービスブローカのアドミニストレータは、第1のアイデンティティサービスにおいて記憶されたユーザ属性と、仮想アイデンティティの仮想属性フィールドとの間の関係又は対応性を事前設定し得る。処理論理は、ユーザの仮想アイデンティティの仮想属性フィールドが記入されているかどうかを更に判定し得る(ブロック640)。仮想属性フィールドが完了している(例えば、仮想属性フィールドのすべてが第1のアイデンティティサービスからの属性値を有している)場合、第2のアイデンティティサービスにおけるユーザ補足的属性に基づいて、いかなる仮想属性フィールドも更に記入されることはない(ブロック650)。しかしながら、ユーザの仮想アイデンティティの仮想属性フィールドのうちの少なくとも1つが記入されていないと判定された場合、ユーザと関連付けられた第2のアイデンティティサービスが識別され得る(ブロック660)。いくつかの実施形態では、アイデンティティサービスブローカのアドミニストレータは、第1のアイデンティティサービスと第2のアイデンティティサービスとの間のリンクを事前設定又は選択し得る。処理論理は、第1のアイデンティティサービスと第2のアイデンティティサービスとの間のリンクされた属性フィールドを更に識別し得る(ブロック670)。いくつかの実施形態では、アイデンティティサービスブローカのアドミニストレータは、第1のアイデンティティサービスと第2のアイデンティティサービスとの間のリンクされた属性フィールドの選択を事前設定し得る。更に、処理論理は、第2のアイデンティティサービスにおいて記憶されたユーザ補足的属性に基づいて、仮想アイデンティティの仮想属性フィールドに記入し得る。例えば、第2のアイデンティティサービスにおいて記憶された複数のユーザ属性を含む記録は、リンクされた属性フィールドの共通の属性値に基づいて識別され得る。
図7は、本明細書に記載される方法論のうちのいずれか1つ若しくは2つ以上をマシンに実施させるための命令セットが実行され得る、コンピュータシステム700の例示的なマシンを例解する。代替的な実施態様では、マシンは、LAN、イントラネット、エクストラネット、及び/又はインターネット内の他のマシンに接続(例えば、ネットワーク化)され得る。マシンは、クライアント・サーバネットワーク環境内のサーバ又はクライアントマシンの容量内で、ピアツーピア(若しくは分散)ネットワーク環境内のピアマシンとして、又はクラウドコンピューティング基盤若しくは環境内のサーバ若しくはクライアントマシンとして、動作し得る。
マシンは、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、携帯情報端末(PDA)、携帯電話、ウェブアプライアンス、サーバ、ネットワークルータ、スイッチ若しくはブリッジ、又はそのマシンが取るべき動作を指定する(逐次的又は非逐次的)命令セットを実行することが可能な任意のマシンであってもよい。更に、単一のマシンが例解されているが、「マシン」という用語は、個々に、又は連携して1つの(若しくは複数の)命令セットを実行して、本明細書に記載される方法論のうちのいずれか1つ若しくは2つ以上を実施する、任意のマシン群を含むとも見なされるべきである。
例示的なコンピュータシステム700は、処理デバイス702と、メインメモリ704(例えば、読み取り専用メモリ(ROM)、フラッシュメモリ、同期的DRAM(SDRAM)又はDRAM(RDRAM)等の動的ランダムアクセスメモリ(DRAM)など)と、静的メモリ706(例えば、フラッシュメモリ、静的ランダムアクセスメモリ(SRAM)など)と、データ記憶デバイス718と、を含み、これらは、バス730を介して互いに通信する。
処理デバイス702は、マイクロプロセッサ、中央演算処理ユニットなど1つ以上の汎用処理デバイスを示す。より具体的には、処理デバイスは、複合命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、又は他の命令セットを実行するプロセッサ、若しくは命令セットの組み合わせを実行するプロセッサであってよい。処理デバイス1202はまた、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサなど1つ以上の専用処理デバイスであってよい。処理デバイス702は、本明細書に記載の操作及び工程を実行するために命令722を実行するように構成される。
コンピュータシステム700は、ネットワークインターフェースデバイス708を更に含んでよい。コンピュータシステム700はまた、ビデオディスプレイユニット710(例えば、液晶ディスプレイ(LCD)又は陰極線管(CRT))、英数字入力デバイス712(例えば、キーボード)、カーソル制御デバイス714(例えば、マウス)、及び信号生成デバイス716(例えば、スピーカ)を含んでよい。
データ記憶デバイス718は、本明細書に記載される方法論又は機能のうちのいずれか1つ若しくは2つ以上を具現化する1つ若しくは2つ以上の命令セット又はソフトウェア722をそこに記憶する、マシン可読記憶媒体728(コンピュータ可読媒体としても知られる)を含み得る。命令722はまた、コンピュータシステム700によるその実行中にメインメモリ704内、及び/又は処理デバイス702内に完全に、又は少なくとも部分的に存在し得、メインメモリ704及び処理デバイス702は、マシン可読記憶媒体も構成する。
一実施態様では、命令722は、仮想アイデンティティ及びコンテキストモジュール(例えば、図2の仮想アイデンティティ及びコンテキストモジュール220、若しくは図3の仮想アイデンティティ及びコンテキストモジュール300)のための命令、並びに/又は仮想アイデンティティ及びコンテキストモジュール内のモジュール若しくはサブモジュールを呼び出す方法を含むソフトウェアライブラリを含む。マシン可読記憶媒体728は、例示的な実施態様では単一の媒体として示されるが、「マシン可読記憶媒体」という用語は、1つ若しくは2つ以上の命令セットを記憶する、単一の媒体又は複数の媒体(例えば、集中型若しくは分散型データベース、並びに/又は関連付けられたキャッシュ及びサーバ)を含むと見なされるべきである。「マシン可読記憶媒体」という用語はまた、マシンによって実行するための命令セットを記憶若しくは暗号化することが可能であり、かつ本開示の方法論のうちのいずれか1つ若しくは2つ以上をマシンに実行させる任意の媒体を含むと見なされるべきである。したがって、「マシン可読記憶媒体」という用語は、ソリッドステートメモリ、光学媒体、及び磁気媒体を含むが、これらに限定されないと見なされるべきである。
前述の「発明を実施するための形態」の一部は、コンピュータメモリ内のデータビットに関する動作のアルゴリズム及び象徴的表現に関して提示されている。これらのアルゴリズム的記述及び表現は、データ処理分野の当業者によって、他の当業者に仕事の内容を最も効果的に伝達するために使用される手段である。アルゴリズムは本明細書で、概して、所望の結果をもたらす、自己無撞着操作の連続であると考えられる。操作は、物理量の物理的操作を必要とするものである。必ずしもそうとは限らないが、通常、これらの量は、記憶する、組み合わせる、比較する、及び他の方法で操作することが可能な、電気信号又は磁気信号の形態を取る。これらの信号をビット、値、要素、記号、文字、用語、数値などと称することが、主に一般的な用法の理由から時には好都合であることが判明している。
しかしながら、これら及び同様の用語のすべてが、適切な物理量と関連付けられるものであり、これらの量に適用される好都合なラベルにすぎないことに留意すべきある。上の考察から明らかであるとして別途具体的に定められない限り、説明全体を通して、「識別すること」、又は「判定すること」、又は「実行すること」、又は「実施すること」、又は「収集すること」、又は「作成すること」、又は「送信すること」などの用語を利用した考察は、コンピュータシステム、又はコンピュータシステムのレジスタ及びメモリ内の物理(電子)量として表されるデータを操作し、コンピュータシステムメモリ若しくはレジスタ又は他のかかる情報記憶デバイス内の物理量として同様に表される他のデータに変換する同様の電子コンピューティングデバイスの行為及びプロセスを指すことを理解されたい。
本開示はまた、本明細書における動作を実施するための装置に関する。この装置は、意図された目的のために特別に構築されてよく、又はコンピュータに記憶されるコンピュータプログラムによって選択的に作動若しくは再構成される汎用コンピュータを備えてよい。かかるコンピュータプログラムは、フロッピーディスク、光ディスク、CD−ROM、及び光磁気ディスクを含む任意の種類のディスク、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気若しくは光カード、又は電子命令を記憶するのに好適な任意の種類の媒体などが挙げられるが、これらに限定されない、コンピュータ可読記憶媒体に記憶されてよく、それぞれがコンピュータシステムバスに接続される。
本明細書に記載のアルゴリズム及びディスプレイは、任意の特定のコンピュータ又は他の装置に本質的に関連しない。様々な汎用システムが、本明細書の教示に従ったプログラムと共に使用されてよいか、方法を実行するために、より特化した装置の構築が便利であることが判明することがある。様々なこれらのシステムの構造は、以下の説明から明らかとなる。加えて、本開示は、任意の特定のプログラミング言語に関して記載されていない。本明細書に記載されるように、本開示の教示を実行するために様々なプログラミング言語が使用されてよいことを理解されたい。
本開示は、コンピュータシステム(又は他の電子デバイス)に本開示に従ってプロセスを実行させるプログラムの作製に使用され得る、記憶された命令を有するマシン可読媒体を含んでよい、コンピュータプログラム製品又はソフトウェアとして提供されてよい。マシン可読媒体は、マシン(例えば、コンピュータ)可読の形態で情報を記憶する、任意のメカニズムを含む。例えば、マシン可読(例えば、コンピュータ可読)媒体は、読み取り専用メモリ(「ROM」)、ランダムアクセスメモリ(「RAM」)、磁気ディスク記憶媒体、光学的記憶媒体、フラッシュメモリデバイスなど等のマシン(例えば、コンピュータ)可読記憶媒体を含む。
前述の明細書において、本開示の実施態様は、その具体的な例示的な実施態様を参照して記載された。以下の「特許請求の範囲」に記載される、本開示の実施例のより広い趣旨及び範囲から逸脱することなく様々な変更を行うことができることは、明らかであろう。したがって、本明細書及び図面は、制限的意味ではなく、例示的意味と見なされるべきである。