(58)【調査した分野】(Int.Cl.,DB名)
前記応答は、非認証要求を示す401応答であり、前記第2アプリケーションによって信頼された認証発行元の前記リストは、前記401応答のWWW-Authenticateヘッダで搬送される、請求項1に記載の方法。
ハードウェア・プロセッサー上で動作しているアプリケーションにおいて、領域パラメーターとアプリケーション識別子パラメーターとを有するヘッダを備えた応答をパートナー・アプリケーションから受け取るステップと、
前記アプリケーションにおいて、前記パートナー・アプリケーションの識別子を前記領域パラメーターと連結して連結値を生成するステップと、
前記アプリケーションにおいて、前記連結値が構成されたパートナー・アプリケーションのリスト中のエントリーと一致するか否かを判定するステップと、
前記アプリケーションにおいて、一致が存在することを判定したことに応答して、前記パートナー・アプリケーションまたは認証発行元のための自己発行トークンを生成するステップと、
を含む方法。
承認された認証発行元構成は、前記承認された認証発行元に対するグローバル一意識別子(GUID)を識別するが、アプリケーションがオンライン・インストール向けに構成されている場合はテナント識別子を識別しない、請求項10に記載の方法。
承認された認証発行元構成は、前記承認された認証発行元に対するグローバル一意識別子(GUID)を識別し、アプリケーションが構内インストール向けに構成されている場合はテナント識別子を識別する、請求項10に記載の方法。
前記応答は、非認証要求を示す401応答であり、前記第2アプリケーションによって信頼された認証発行元の前記リストは、前記401応答のWWW-Authenticateヘッダで搬送され、
前記プロセッサーは、更に、
グローバル一意識別子(GUID)を用いて、前記第2アプリケーションによって信頼された認証発行元が前記第1アプリケーションに対して承認された認証発行元と一致するか否かを判定し、
承認された認証発行元構成からのテナント識別子を用いて、認証発行元のためのトークンを組み立てる、
ように動作する、請求項13に記載のコンピューター・システム。
前記応答は、非認証要求を示す401応答であり、前記第2アプリケーションによって信頼された認証発行元の前記リストは、前記401応答のWWW-Authenticateヘッダで搬送され、
前記プロセッサーは、更に、
グローバル一意識別子(GUID)を用いて、前記第2アプリケーションによって信頼された認証発行元が前記第1アプリケーションに対して承認された認証発行元と一致するか否かを判定し、
所定の入力パラメーターからのテナント識別子を用いて、認証発行元のためのトークンを組み立てる、
ように動作する、請求項13に記載のコンピューター・システム。
前記プロセッサーは、更に、自己発行トークンを用いて前記認証発行元によって生成された認証トークンを前記認証発行元から受け取るように動作する、請求項13に記載のコンピューター・システム。
【発明を実施するための形態】
【0009】
[0013]
図1は、容認可能な認証ソースを識別するために互いに通信する2つのサービス101および102を示す。実施形態では、サービス101および102が同じサーバー上および/または同じ建造物(premise)上に配置されてもよく、同じアドミニストレーターによって構成されてもよい。他の実施形態では、サービス101および102が、別のサーバー上および/または別の建造物上に互いから離れて配置され、異なるアドミニストレーターによって構成されてもよい。このような構成では、サーバー101および102は、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、イントラネット、またはインターネットというような、ワイヤレスまたは有線ネットワークを通じて通信すればよい。これらの構成を本明細書では「構内」(on-premise)構成と呼ぶこともできる。サービス101および102がクラウドにおいてホストされる環境であり、別のホスティング組織によって管理される場合、この構成は、本明細書では、「オンライン」構成と呼ばれる。
【0010】
[0014] サービス101および102は、異なるアプリケーションの別々のインスタンスであってもよく、または同じアプリケーションの別々のインスタンスであってもよい。いずれの場合でも、ユーザーがサービス101および102間において情報およびデーターを共有することを望むかもしれない。例えば、あるユーザーがサービス101上で作業することを望み、そしてサービス102上でアクションを実行するかまたはデーターをサービス102と交換することを望むかもしれない。サービスA101は、このようなアクションを実行する要求またはデーターを交換する要求103をサービスB102に送る。サービスB102が要求103に対して動作する前に、サービスB102は要求103を認証しなければならない。サービス101には、認証信任状またはトークンの承認済みソースを識別する信頼発行元リスト104が構成される。同様に、サービス102はそれ自体の信頼発行元リスト105を有する。信頼発行元リストは、例えば、1つ以上の認証サービス106、107を識別することができる。各サービス101および102は、それ自体の容認可能な認証サービスのリストを有することができる。例えば、サービス101は、認証サービス106および107を信頼するかもしれないが、サービス102は認証サービス107だけを信頼するかもしれない。
【0011】
[0015] 直接信頼(direct-trust)の実施形態では、サービス101および102が自己認証するか、あるいはそれら自体の認証信任状またはトークンを作成できるのでもよい場合がある。
【0012】
[0016] OAuthプロトコルのような標準的な認証プロトコルが、サービス101および102を互いに認証するために用いられてもよい。しかしながら、このようなプロトコルは常に好結果が得られる訳ではない。何故なら、サービス101および102は同じ認証サービス106、107を共有しないかもしれず、互換性のない認証構成を有するかもしれないからである。
【0013】
[0017] サーバー102が要求103を受けると、401(無許可)応答108を返送する。この応答108は、要求103が認証を必要とすることを示す。クライアントは、適した認証ヘッダ・フィールドがある要求103を繰り返すことができる。認証フィールド値は、要求されるリソースの範囲に対するアプリケーションの認証情報を収容する信任状を含む(consist of)。
【0014】
[0018] 一実施形態では、401−無許可応答108は、応答するサービス102からの信頼発行元リスト105を含む。したがって、応答108は、要求103が認証されなければならないことをサービス101に伝え、信頼されたソースのリストを供給し、サービス101は、このリストから、必要な認証信任状またはトークンを得ることができる。サービス101は、信頼されたまたは認証された認証サーバーのリスト104を有する。サービス101は、受信した信頼リスト105をそれ自体の信頼リスト104と比較し、これら2つのリスト間においてあらゆる一致を識別する。例えば、サービス101が認証サービス106および107を信頼し、サービス102が認証サービス107を信頼する場合、サービス101は、しかるべき信任状を得るために、認証サービス107を用いることができる。
【0015】
[0019] サービス101および102に対する信頼発行元リスト104、105は、好ましい認証サービスのソースを識別することができる。例えば、信頼発行元リスト104は、(1)同じアプリケーションの他の展開(deployment)の直接信頼、(2)認証サービス105、および(3)認証サービス106として、ソースの優先順位を決める、または順位付けすることができる。一実施形態では、サービス101は、そのリスト104および受信したリスト105を比較し、最も好ましい発行元を選択する。
【0016】
[0020]
図2は、認証信任状の信頼発行元を識別する方法またはプロセスを示す。ステップ201において、要求が第1サービスから第2サービスに送られる。ステップ202において、第1サービスは、この要求には認証が要求されることを示す応答を受信する。この応答は、第2サービスに対する信頼認証発行元のリストを含む。ステップ203において、第1サービスは、第2サーバーからの信頼発行元リストをそれ自体の信頼発行元リストと比較する。ステップ204において、第1サービスは、第1および第2サービス双方によって信頼される認証発行元を識別する。
【0017】
[0021] ステップ205において、第1サービスは認証信任状を、双方のサービスから信頼される認証発行元から得る。ステップ206において、第1サービスは、この認証信任状を含む新たな要求を生成する。この認証信任状は双方のサービスによって信頼されるソースから来るので、第2サービスは通例第2要求を受け入れる。
構成
[0022] 信頼発行元識別プロセスに関与するためには、各サーバーまたはサービスにはしかるべき情報を構成しなければならない。一実施形態では、以下の情報がサーバーまたはサービス毎に構成される。
【0018】
[0023] アプリケーション発行元識別子。アプリケーション発行元識別子は、自己発行トークンの発行元フィールドにおいて用いられる。アプリケーション発行元識別子は、PIDapp@realmというフォーマットを有する。アプリケーション発行元識別子の要求されるフィールドは、次のように定式化される。
【0019】
[0024] PIDappフィールドは、アプリケーションの主要識別子である。一実施形態では、これは現在のアプリケーションを表すグローバル一意識別子(GUID)である。他の実施形態では、これらの識別子にわたって一意性を保証するのであれば、いずれの実施態様でも用いてもよい。Realmフィールドは、構内インストールではデフォルト・ドメインとすることができる。オンライン・インストールでは、Realm値は、テナント識別子とすればよい。しかしながら、テナント識別子は、Realmフィールドに可能な値の1つに過ぎず、何らかの他の値に設定されてもよい。
【0020】
[0025] セキュリティ・トークン・サービス(STS)。1つ以上のSTSもサーバーまたはサービス毎に構成される。各STSはPIDsts@[TID] , metadataURLというフォーマットを有する。
【0021】
[0026] PIDstsフィールドは、STSを表すGUIDである。
[0027] TIDフィールドは、以下のように構成される。
構内インストールでは、TIDフィールドはテナント識別子(TenantID)であり、これは、GUIDまたは特定のテナントを識別する一意性を保証するいずれかの実施態様(implementation)である。殆どのオンライン・インストールでは、TIDフィールドは空(または*)であり、しかるべきテナントIDで置き換えられなければならない。
【0022】
特定のテナント内部のオンライン・インストールでは、異なる展開における同じカンパニー(company)を表すテナント間の信頼のために必要とされ、例えば、TIDフィールドはTenantIDである。
【0023】
[0028] metadataURLフィールドは、STSとの信頼確立のために証明書を引き出すために用いられるURLを収容する。
[0029] アプリケーションの中には、発行元識別子を格納せず、代わりに鍵、鍵識別子(例えば、証明書サムプリント)、およびメタデーターURLだけを格納するものがある。
【0024】
[0030] 構成されたパートナー・アプリ(Configured Partner App)。構成されたパートナー・アプリは、PIDapp@f[realm] , {UseSTS|metadataURL}というフォーマットを有する。
【0025】
[0031] PIDappフィールドは、他のサーバーまたはサービスのような、パートナー・アプリケーション(PA)を表すGUIDである。
[0032] Realmフィールドは、オンライン・インストールでは空(または*)であり、しかるべきテナントIDによって置き換えられなければならない。Realmフィールドは、構内インストールに対してデフォルト・ドメインを保持する。
【0026】
[0033] UseSTSフィールドは、このPAに対する着信トークンが、構成されたSTSの内の1つによって発行されなければならないか否か選択するために用いられる。
[0034] metadataURLフィールドは、アプリケーションとの直接信頼のために証明書を引き出すために用いることができるURLである。
【0027】
[0035] アプリケーションの中には、発行元識別子を格納せず、代わりに、鍵、鍵識別子(例えば、証明書サムプリント)、およびメタデーターURLだけを格納するものがある。
【0028】
[0036] 有効ドメインまたは領域リスト。信頼発行元リストは、オンラインおよび構内構成毎に構成される。オンライン・インストールでは、信頼発行元リストは、テナントによってマッピングされた全てのテナント・ドメイン・サフィックス(tenant domain suffix)のリストである。構内インストールでは、信頼発行元リストは、全ての有効なドメイン・サフィックスのリストである。
【0029】
[0037] 一般に、空領域は、「*」領域と同じことを意味するように解釈される。「*」エントリーは、グローバル構成テンプレートをサポートするために用いられ、1つの構成されたエントリーが、数百万のテナントをサポートし、構成および格納要件を簡素化することができる。
【0030】
[0038] 領域(realm)とはセキュリティ境界の識別子であり、PID(主要ID)は領域によって限定される(qualify)(即ち、領域に関して一意である)。TID(テナントId)は、領域に可能な値のストリングである。TIDは、データーセンターにおける領域の主要名称である。DNSドメイン名は、構内構成において用いられる領域に可能な他の値のストリングである。DNSドメイン名は、オーディエンス/リソース(audience/resource)において領域としてSTSに送ることができるが、ドメイン名は、STSが発行するトークンにおいてTIDと置き換えられる。
発行元情報の公開
[0039] 発行元のリストは、認証を失敗した許可ヘッダにおいて、ベアラ方式(Bearer scheme)を有するあらゆる401応答において返送される。
【0031】
[0040] 各アプリケーション・ホストは、信頼発行元のリストを作り、このリストから、トークンを受け入れる。一実施形態では、このリストは、以上の構成からの全てのSTS、および信頼のためにSTSに依存しない全てのパートナー・アプリケーション(即ち、直接信頼を用いる全てのパートナー・アプリケーション)を含む。実施形態では、構成データーに発行元識別子を格納しないが代わりに鍵およびそれらの識別子だけを格納するアプリケーションは、発行元リストを作ることができない場合もある。
【0032】
[0041] アプリケーションによって発行元リストを作ることができない場合、一実施形態では、アプリケーションはこの場合ではその識別子(例えば、client_id)および領域を返す。Realm値はテナント識別子であってもよい。発行元リストが作られる場合、領域は任意となり、通例、アプリケーション間を直接信頼とした(即ち、STSなし)純粋な構内展開において、または401応答を生成したアプリケーションのエンドポイントURLから領域を明確に決定することができるときに、領域が供給される。
【0033】
[0042] 例えば、要求は、
POST /resource HTTP/1.1
Authorization: Bearer
のようにフォーマットされてもよい。
【0034】
[0043] 401応答は、以下のように、「WWW-Authenticate」ヘッダにおいて「ベアラ」認証方式の「trusted_issuers」パラメーターにおいて、コンマで分離された発行元のリストを搬送する。
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer trusted_issuers="PIDsts @*,PIDapp@realm",
realm="realm", client_id="PID"
[0044] 構内インストールは、PID、領域、および証明書をメタデーター文書において公開し、STSを用いずに構内インストール間における直接信頼の確立を容易にすることができる。オンライン・インストールでは、公開は必要でない。
アウトバウンド・トークンの組み立て
[0045]
図3Aおよび
図3Bは、アウトバウンド・トークンに発行元を選択するために発行元照合を用いるアプリケーションのためのアウトバウンド・トークンの組み立て方法またはプロセス300を示すフロー・チャートである。プロセス300は、以下の入力パラメーターを有する。
【0035】
user@user-domainというフォーマットを有するユーザーまたはURI。
パートナー・アプリ識別子(PIDpa)。
宛先ホスト(pahost)。
【0036】
オンライン構成のみにテナントID(tid)。
グローバルSTS、および特定のテナントに対するエントリー(オンラインのみ)を含む、アウトバウンドSTSのリスト。
【0037】
[0046] ステップ301において、アプリケーションは、trusted_issuersパラメーターが、失敗した要求に対する回答において受信された401応答に収容されているか否か判定する。この要求は「Bearer」方式を有していた。ステップ302において、アプリケーションは、401応答メッセージにおいて、WWW-Authenticateヘッダのtrusted_issuersパラメーターから発行元のリスト(即ち、着信発行元リスト)を得る。401応答メッセージにおけるWWW-Authenticateヘッダにtrusted_issuersパラメーターが存在しない場合、本プロセスは312に移る。
【0038】
[0047] ステップ303において、アプリケーションは、着信発行元リストにおける発行元の内1つが、ローカル・アプリケーション発行元識別子(PIDapp@realm)と一致するか否か判定する。一実施形態では、PIDおよび領域コンポーネントの全てが正確に、着信リスト上の発行元とローカル・アプリケーション発行元識別子との間で一致しなければならない。
【0039】
[0048] PIDおよび領域コンポーネントがステップ303において一致した場合、本プロセスはステップ304に移り、自己発行トークンを作成する。自己発行トークンは、次のエレメントを含む。
【0040】
iss: PIDapp@realm、
nameid: PIDapp@realm、
およびaud: PIDpa@target-realm/pahost@user-domain。
【0041】
[0049] iss(発行元)およびnameid(名称識別子)エレメントは、ローカル・アプリケーション発行元識別子に対応する。aud(オーディエンス)エレメントは、パートナー・アプリケーション(PIDpa)、宛先ホスト(pahost)、およびユーザー・ドメイン(user-domain)に基づいて組み立てられる。taget-realmフィールドは、サービスがコールしようとしているアプリケーションの領域である。
【0042】
[0050] ステップ303において、ローカル・アプリケーション発行元識別子との一致がない場合、本プロセスはステップ305に移る。ステップ305において、アプリケーションは、着信発行元リストにおける発行元の内1つが、STSを表すGUIDであるPIDstsのみを用いて構成されたSTSの1つと一致するか否か判定する。アプリケーションは、この照合では、領域パラメーターを無視する。ステップ305において一致があった場合、ステップ306において、アプリケーションは、一致したSTSの構成エントリーが空のTIDを有するか否か判定する。
【0043】
[0051] ステップ307において、一致したSTSの構成エントリーが空でないTIDを含む場合、アプリケーションは、一致したSTSエントリーからのTIDを、STSのためにトークンを組み立てるときに領域パラメーターとして用いる。あるいは、ステップ308において、一致したSTSの構成エントリーが空のTIDを有する場合、アプリケーションは、先の入力パラメーターからのテナントIDを、STSのためにトークンを組み立てるときに領域パラメーターとして用いる。
【0044】
[0052] ステップ309において、アプリケーションはSTSのために自己発行トークンを作成する。STSのための自己発行トークンは、以下のパラメーターを含む。
iss: PIDapp@tid、
nameid: PIDapp@tid、
aud: PIDsts@tid/pahost@user-domain、および
resource: PIDpa @target-realm/pahost@user-domain。
【0045】
[0053] iss/nameidPIDエレメント(PIDapp)は、アプリケーション発行元識別子から来る。領域エレメント(tid)は、ステップ307/308から選択され、構成されたSTS TIDまたは先の入力パラメーターからのテナントIDのいずれかに基づく。audPIDエレメント(PIDsts)は、STS構成エントリーから来る。リソース・エレメントは、パートナー・アプリケーションのID(PIDpa)およびユーザー・ドメインに基づく。
【0046】
[0054] 自己発行トークンは、次に、STSに供給され、STSはステップ310において以下のパラメーターを用いてトークンを生成する。
iss: PIDsts@tid、
nameid: PIDapp@tid、および
aud: PIDpa@tid/desthost@tid。
【0047】
[0055] STSは、issエレメントに、それ自体のissuer@tenantIDを用いる。nameidエレメントの有効性が判断され、自己発行トークンからコピーされる。audエレメントの有効性が判断され、トークン要求パラメーターのリソース・エレメントからコピーされる。領域がDNSドメインとして供給される場合、これは実際のテナントIDと置き換えられる。領域がテナントidとして供給される場合、置き換えは不要である。
【0048】
[0056] ステップ303および305において一致がない場合、トークンを作成することができず、本プロセスはステップ311において終了する。
[0057] ステップ301において、trusted_issuersパラメーターが401応答に存在しない場合、本プロセスはステップ312に移る。
【0049】
[0058] ステップ312において、アプリケーションは、401応答のWWW-Authenticateに領域パラメーターがあるか否か判定する。ステップ313において、アプリケーションは、「@」および401における領域値と連結されたパートナー・アプリ識別子(例えば、PIDpa@realm)が、構成されたパートナー・アプリケーションの1つと正確に一致するか否か判定する。ステップ313において、PIDpa@realmが構成されたパートナー・アプリケーションの1つと正確に一致し、そして直接信頼が構成される場合、アプリケーションは、ステップ314において、自己発行トークンを作成する。自己発行トークンは、次のパラメーターを用いてフォーマットされる。
【0050】
iss: PIDapp@realm、
nameid: PIDapp@realm、および
aud: PIDpa@realm/pahost@realm。
【0051】
[0059] issおよびnameidエレメント(PIDapp@realm)は、ローカル・アプリケーションの発行元識別子に対応する。audエレメントは、パートナー・アプリケーションのID(PIDpa)および401において戻された領域値に基づいて組み立てられる。
【0052】
[0060] ステップ313において、PIDapp@realmと構成されたパートナー・アプリケーションの1つとの間に一致がなかった場合、本プロセスはステップ315に移る。ステップ315において、アプリケーションは、401応答において戻された領域値が、いずれかの構成されたSTSの領域と正確に一致するか否か判定する。
【0053】
[0061] ステップ315において一致がなかった場合、アプリケーションは、ステップ316において、領域が空のSTS構成を選択する。
[0062] ステップ315または316において一致があった場合、ステップ317において、アプリケーションは、一致したSTSの構成エントリーが空のTIDを含むか否か判定する。一致したSTSの構成エントリーが空でないTIDを含む場合、ステップ318において、アプリケーションは、一致したSTS構成からのTIDを領域として用いて、STSのために自己発行トークンを組み立てる。一致したSTSの構成エントリーが空/「*」領域を有する場合、ステップ319において、アプリケーションは、先の入力パラメーターから領域[TID]を用いて、STSのために自己発行トークンを組み立てる。自己発行トークンは、次のパラメーターを有する。
【0054】
iss: PIDapp@tid、
nameid: PIDapp@tid、
aud: PIDsts@tid/stshost@tid、および
resource: PIDpa@target-realm/pahost@user-domain。
【0055】
[0063] issおよびnameidエレメントPID(PIDapp)は、アプリケーション発行元識別子から来る。audエレメントPID(PIDsts)は、STS構成エントリーから来る。iss、nameid、およびaudエレメント(tid)に対する領域は、構成されたSTS TIDまたは入力パラメーターからのテナントIDに基づいて選択される。stshostエレメントは、STSメタデーター文書における発行元エンドポイントから来る。リソース・エレメントは、パートナー・アプリケーションのID(PIDpa)およびユーザー・ドメインに基づいて組み立てられる。
【0056】
[0064] 次いで、ステップ318または319からの自己発行トークンがSTSに供給される。STSは、ステップ320において、以下のパラメーターを用いてトークンを生成する。
【0057】
iss: PIDsts@tid、
nameid: PIDapp@tid、および
aud: PIDpa@tid/desthost@tid。
【0058】
[0065] STSは、それ自体のissuer@tenantIDをissエレメントに用いる。nameidエレメントの有効性が判断され、自己発行トークンからコピーされる。audエレメントの有効性が判断され、自己発行トークンのリソース・エレメントからコピーされる。DNSドメインが供給される場合、DNS領域が実際のテナントID(tid)と置き換えられる。そうでなければ、テナントidが供給される場合、置き換えは必要ない。
【0059】
[0066]
図3Aおよび
図3Bのステップから一致が全く得られない場合、本プロセスは停止し、トークンを作成することはできない。
[0067] 1つのアウトバウンド発行元を用いるアプリケーションでは、当該アプリケーションは、その発行元だけを用い、ステップ317から320までを用いてトークンを生成しなければならない。
インバウンド・トークンの有効性判断
[0068] アプリケーションが発行元識別子に基づくトークンの有効性判断を実施する場合、アプリケーションは発行元識別子を入手し、トークン署名有効性判断のための証明書を突き止める。アプリケーションは発行元をそのSTSのリストと照合する。このリストは、アプリケーションのグローバル構成の一部である。発行元におけるPIDが、STS構成と正確に一致しなければならない。領域は、STS構成エントリーにおいてそれが指定される(即ち、空でない)場合にのみ、一致しなければならない。STS構成エントリーが空の領域または「*」を有する場合、発行元識別子における領域の値は有効なテナントIDでなければならない。
【0060】
[0069] トークンは、直接信頼を有するパートナー・アプリケーションのリストと照合されるのでもよい。直接信頼を有するアプリケーションのリストは、アプリケーションのグローバル構成から来る。実施形態では、直接信頼が、テナント構成からのアプリケーションを含む場合もある。テナントは、トークンのオーディエンス(aud:)フィールドにおける領域に基づいて調べられる。一実施形態では、全てのフィールド(PID@realm)が正確に直接信頼に対して一致しなければならず、ワイルドカードの一致は許されない。トークンにおける名称識別子のテナントのPIDおよび領域は、発行元のPIDおよび領域と同じでなければならない。
【0061】
[0070] 一致がない場合、アプリケーションはトークンを拒絶する。それ以外の場合、アプリケーションは証明書を引き出すことができる。証明書は、STSまたはパートナー・アプリケーションに関連するメタデーター文書から得ることができる。あるいは、証明書の直接構成も許される。
【0062】
[0071] アプリケーションが鍵識別子に基づくトークンの有効性判断を実施する場合、アプリケーションは、証明書サムプリント(certificate thumbprint)のような鍵識別子をトークンから入手し、それを構成における全ての有効な鍵識別子と照合する。一致がない場合、アプリケーションはこのトークンを拒絶する。それ以外の場合、アプリケーションは、この鍵に関連するメタデーター文書から証明書を引き出すことができ、または証明書をそれ自体で構成することもできる。
【0063】
[0072] アプリケーションは、引き出した証明書を用いて、トークンの署名の有効性を判断する。
[0073] 一実施形態では、アプリケーションは名称識別子を入手し、それをパートナー・アプリケーション・リストと照合する。PIDは正確に一致しなければならない。領域は、それがパートナー・アプリケーションの構成エントリーにおいて指定される(即ち、空でないまたは「*」)場合にのみ一致しなければならない。パートナー・アプリケーションの構成エントリーが空の領域を有する場合、名称識別子の領域は、発行元の領域と同じでなければならない。
【0064】
[0074] アプリケーションは、オーディエンスを入手して、そのフィールドを照合する。PIDは、アプリケーションがアクセスされた際のローカル・アプリケーションPIDおよびホスト名と正確に一致しなければならない。STS発行トークンでは、領域は発行元の領域(テナントID)と一致しなければならない。アプリケーション発行トークンでは、領域はローカルに構成されたグローバルまたはテナント・ドメインの内1つと一致しなければならない。オンラインまたはマルチ・テナント環境では、領域は有効なテナントIDまたは有効なテナントを解決する(resolve to)ドメインでなければならない。
【0065】
[0075] 尚、本明細書において説明したトークンの組み立ておよび有効性判断は、2つ以上の関与物(participant)によって用いられてもよいことは理解されよう。関与物は、アプリケーション、サーバー、サービス、デバイス、製品等を含むこともできる。関与物は、構成されたSTS、パートナー・アプリケーション、および信頼発行元を識別するように構成することができる。次いで、関与物は、以上で説明したように、トークンを作成、交換し、その有効性を判断する。
【0066】
[0076] 尚、
図2に示したプロセスのステップ201〜206、および
図3に示したプロセスのステップ301〜320は、同時におよび/または順次に実行してもよいことは理解されよう。更に、各ステップは、いずれの順序で実行してもよく、1回または繰り返し実行してもよいことも理解されよう。
【0067】
[0077]
図4は、
図1〜
図3の例を実現することができる適した計算およびネットワーキング環境400の一例を示す。認証信任状を得るための、本明細書で説明した、認証サービス、サービス、およびアプリケーションは、コンピューター・システム400上において具体化することができる。計算システム環境400は、適した計算環境の一例に過ぎず、本発明の使用範囲や機能に関して何ら限定を示唆する意図はない。本発明は、複数の他の汎用または特殊目的計算システム環境あるいは構成でも動作する。本発明との使用に適すると考えられる周知の計算システム、環境、および/または構成の例には、パーソナル・コンピューター、サーバー・コンピューター、ハンドヘルドまたはラップトップ・コンピューター、タブレット・デバイス、マルチプロセッサー・システム、マイクロプロセッサー・ベース・システム、セット・トップ・ボックス、プログラマブル消費者用電子機器、ネットワークPC、ミニコンピューター、メインフレーム・コンピューター、以上のシステムまたはデバイスのいずれかを含む分散型計算環境等が含まれるが、これらに限定されるのではない。
【0068】
[0078] 本発明は、コンピューターによって実行される、プログラム・モジュールのような、コンピューター実行可能命令という一般的なコンテキストで説明することができる。一般に、プログラム・モジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データー構造等を含み、特定のタスクを実行するかまたは特定の抽象データー型を実装する。また、本発明は分散型計算環境において実施することもでき、この場合、タスクは、通信ネットワークを介してリンクされたリモート処理デバイスによって実行される。分散型計算環境では、プログラム・モジュールは、メモリー記憶デバイスを含む、ローカルおよび/またはリモート・コンピューター記憶媒体に配置することができる。
【0069】
[0079]
図4を参照すると、本発明の種々の実施形態を実現するシステム例は、コンピューター400の形態とした汎用計算デバイスを含むことができる。コンポーネントは、処理ユニット408、システム・メモリーのようなデーター・ストレージ402、およびデーター・ストレージ402から処理ユニット408までを含む種々のシステム・コンポーネントを結合するシステム・バス403を含むことができるが、これらに限定されるのではない。システム・バス403は、メモリー・バスまたはメモリー・コントローラ、周辺バス、および種々のバス・アーキテクチャーの内いずれかを使用するローカル・バスを含む、様々なタイプのバス構造のいずれでもよい。一例として、そして限定ではなく、このようなアーキテクチャーは、業界標準アーキテクチャー(ISA)バス、マイクロ・チャネル・アーキテクチャー(MCA)、拡張ISA(EISA)バス、ビデオ電子規格連合(VESA)ローカル・バス、およびMezzanineバスとしても知られる周辺コンポーネント相互接続(PCI)バスを含む。
【0070】
[0080] コンピューター400は、通例、種々のコンピューター読み取り可能媒体404を含む。コンピューター読み取り可能媒体404は、コンピューター400によってアクセスすることができるいずれの入手可能な媒体とすることもでき、揮発性および不揮発性、ならびにリムーバブルおよび非リムーバブル媒体の双方を含むが、伝搬信号を除外する。一例として、そして限定ではなく、コンピューター読み取り可能媒体404は、コンピューター記憶媒体および通信媒体を含むことができる。コンピューター記憶媒体は、揮発性および不揮発性、リムーバブルおよび非リムーバブル媒体を含み、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、または他のデーターというような情報の格納のためのいずれかの方法または技術で実現される。コンピューター記憶媒体は、RAM、ROM、EEPROM、フラッシュ・メモリーまたは他のメモリー技術、CD−ROM、ディジタル・バーサタイル・ディスク(DVD)または他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージまたは他の磁気記憶デバイス、または所望の情報を格納するために使用することができそしてコンピューター400によってアクセスすることができる他のあらゆる媒体を含むが、これらに限定されるのではない。通信媒体は、通例、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、または他のデーターを、搬送波のような変調データー信号または他の伝達メカニズムに具体化し、あらゆる情報配信媒体を含む。「変調データー信号」という用語は、その信号内に情報をエンコードするようなやり方で、その特性の1つ以上が設定または変更された信号を意味する。一例として、そして限定ではなく、通信媒体は、有線ネットワークまたは直接有線接続というような有線媒体と、音響、RF、赤外線、および他のワイヤレス媒体というようなワイヤレス媒体とを含む。以上のいずれの組み合わせも、コンピューター読み取り可能媒体の範囲に含むことができる。コンピューター読み取り可能媒体は、コンピューター記憶媒体上に格納されたソフトウェアのような、コンピューター・プログラム生産物として具体化することもできる。
【0071】
[0081] データー・ストレージまたはシステム・メモリー402は、リード・オンリー・メモリー(ROM)およびランダム・アクセス・メモリー(RAM)のような、揮発性および/または不揮発性メモリーの形態としたコンピューター記憶媒体を含む。基本入力/出力システム(BIOS)は、起動中におけるように、コンピューター400内部にあるエレメント間で情報を伝えるのに役立つ基本的なルーチンを含み、通例ROMに格納される。RAMは、通例、処理ユニット408によって直ちにアクセス可能な、および/または現在処理ユニットによって処理されているデーターおよび/またはプログラム・モジュールを含む。一例として、そして限定ではなく、データー・ストレージ402は、オペレーティング・システム、アプリケーション・プログラム、ならびに他のプログラム・モジュールおよびプログラム・データーを保持する。
【0072】
[0082] また、データー・ストレージ402は、他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピューター記憶媒体も含むことができる。一例としてに過ぎないが、データー・ストレージ402は、非リムーバブル、不揮発性磁気媒体に対して読み取りまたは書き込みを行うハード・ディスク・ドライブ、リムーバブル、不揮発性磁気ディスクに対して読み取りまたは書き込みを行う磁気ディスク・ドライブ、およびCD−ROMまたは他の光媒体のようなリムーバブル、不揮発性光ディスクに対して読み取りまたは書き込みを行う光ディスクであってもよい。この動作環境例において使用することができる他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピューター記憶媒体には、磁気テープ・カセット、フラッシュ・メモリー・カード、ディジタル・バーサタイル・ディスク、ディジタル・ビデオ・テープ、ソリッド・ステートRAM、ソリッド・ステートROM等が含まれるが、これらに限定されるのではない。以上で説明し
図4に示すこれらのドライブおよびそれに関連するコンピューター記憶媒体は、コンピューター400のためのコンピューター読み取り可能命令、データー構造、プログラム・モジュール、および他のデーターの格納を考慮している。
【0073】
[0083] ユーザーは、ユーザー・インターフェース405、あるいはタブレット、電子ディジタイザー、マイクロフォン、キーボード、および/または一般にマウス、トラックボール、またはタッチ・パッドと呼ばれるポインティング・デバイスというような他の入力デバイスによって、コマンドおよび情報を入力することができる。他の入力デバイスには、ジョイスティック、ゲーム・パッド、衛星ディッシュ、スキャナ等を含むことができる。加えて、音声入力または自然ユーザー・インターフェース(NUI)も使用することができる。これらおよび他の入力デバイスは、多くの場合、ユーザー入力インターフェース405を介して処理ユニット408に接続される。ユーザー入力インターフェース405は、システム・バス403に結合されるが、パラレル・ポート、ゲーム・ポート、またはユニバーサル・シリアル・バス(USB)のような他のインターフェースおよびバス構造によって接続されてもよい。また、モニター406または他のタイプのディスプレイ・デバイスも、ビデオ・インターフェースのようなインターフェースを介して、システム・バス403に接続される。また、モニター406にはタッチ・スクリーン・パネル等が統合されてもよい。尚、モニターおよび/またはタッチ・スクリーン・パネルは、タブレット型パーソナル・コンピューターにおけるように、計算デバイス400が組み込まれる筐体に物理的に結合できることを注記しておく。加えて、計算デバイス400のようなコンピューターは、スピーカーおよびプリンターのような他の周辺出力デバイスも含むことができ、これらは出力周辺インターフェース等を介して接続されればよい。
【0074】
[0084] コンピューター400は、リモート・コンピューターのような1つ以上のリモート・コンピューターへの論理接続407を使用して、ネットワーク接続環境において動作することもできる。例えば、認証サービス、サービス、およびアプリケーションは、ネットワーク接続を介して通信して認証信任状を得ることができる。リモート・コンピューターは、パーソナル・コンピューター、サーバー、ルーター、ネットワークPC、ピア・デバイス、または他の一般的なネットワーク・ノードであってよく、通例、コンピューター400に関して先に説明したエレメントの多くまたは全部を含む。
図4に示す論理接続は、1つ以上のローカル・エリア・ネットワーク(LAN)および1つ以上のワイド・エリア・ネットワーク(WAN)を含むが、他のネットワークを含むこともできる。このようなネットワーク接続環境は、事務所、企業規模のコンピューター・ネットワーク、イントラネット、およびインターネットでは極普通である。
【0075】
[0085] LANネットワーク接続環境において使用される場合、コンピューター400は、ネットワーク・インターフェースまたはアダプター407を介してLANに接続することができる。WANネットワーク接続環境において使用される場合、コンピューター400は、通例、インターネットのようなWANを介して通信を確立するモデムまたは他の手段を含む。モデムは、内蔵型でも外付けでもよく、ネットワーク・インターフェース407または他のしかるべきメカニズムを介してシステム・バス403に接続することができる。インターフェースおよびアンテナを含むというような、ワイヤレス・ネットワーク接続コンポーネントは、アクセス・ポイントまたはピア・コンピューターというような適したデバイスを介して、WANまたはLANに結合することができる。ネットワーク接続環境において、コンピューター400に関して図示したプログラム、またはその一部が、リモート・メモリー記憶デバイスに格納されてもよい。尚、図示したネットワーク接続は一例であり、コンピューター間に通信リンクを確立する他の手段を使用してもよいことは認められよう。
【0076】
[0086] 以上、構造的特徴および/または方法論的動作に特定の文言で本主題について説明したが、添付した特許請求の範囲において定められる主題は、必ずしも以上で説明した具体的な特徴や動作には限定されないことは、理解されてしかるべきである。逆に、以上で説明した具体的な特徴および動作は、特許請求の範囲を実現する形態例として開示されたまでである。