(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-06-10
(45)【発行日】2022-06-20
(54)【発明の名称】BOTユーザのセキュアな認証
(51)【国際特許分類】
G06F 21/31 20130101AFI20220613BHJP
H04L 51/046 20220101ALI20220613BHJP
H04L 67/00 20220101ALI20220613BHJP
H04L 67/2869 20220101ALI20220613BHJP
【FI】
G06F21/31
H04L51/046
H04L67/00
H04L67/2869
(21)【出願番号】P 2019562262
(86)(22)【出願日】2018-04-11
(86)【国際出願番号】 US2018026997
(87)【国際公開番号】W WO2018208411
(87)【国際公開日】2018-11-15
【審査請求日】2021-04-08
(32)【優先日】2017-05-10
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2017-06-30
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100140109
【氏名又は名称】小野 新次郎
(74)【代理人】
【識別番号】100118902
【氏名又は名称】山本 修
(74)【代理人】
【識別番号】100106208
【氏名又は名称】宮前 徹
(74)【代理人】
【識別番号】100120112
【氏名又は名称】中西 基晴
(74)【代理人】
【識別番号】100173565
【氏名又は名称】末松 亮太
(72)【発明者】
【氏名】ユ,マオ
(72)【発明者】
【氏名】アッパル,シッダールト
(72)【発明者】
【氏名】ドガンジエフ,ユーリ・ゲオルギエフ
(72)【発明者】
【氏名】ソリス,エイドリアン・オービタ
(72)【発明者】
【氏名】ジン,ラリー
【審査官】岸野 徹
(56)【参考文献】
【文献】米国特許出願公開第2017/0048170(US,A1)
【文献】米国特許出願公開第2012/0311330(US,A1)
【文献】特開2013-140570(JP,A)
【文献】特開2010-048800(JP,A)
【文献】特開2010-113462(JP,A)
【文献】特表2009-522687(JP,A)
【文献】特開2014-225268(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/31
H04L 51/046
H04L 67/00
H04L 67/2869
(57)【特許請求の範囲】
【請求項1】
アプリケーションのユーザを認証するプロセッサ実装方法であって、
第1クライアント・アプリケーションによって、ユーザ識別子を、第1webアプリケーションに送信するステップと、
前記第1クライアント・アプリケーションによって、前記第1webアプリケーションとは異なるアクセス資格情報を使用する第2webアプリケーションにアクセスする要求を受け取るステップと、
前記第1クライアント・アプリケーションによって、webサービスから第2識別子を受け取るステップであって、前記第2識別子が、第2クライアント・アプリケーションによって提供されるアクセス資格情報に基づいて、前記第2webアプリケーションへの認証されたアクセスを識別する、ステップと、
前記第1クライアント・アプリケーションによって、前記第2識別子を前記第1webアプリケーションに送るステップであって、前記第1webアプリケーションが、前記ユーザ識別子を、前記第2識別子と前記第2webアプリケーションへの前記認証されたアクセスとに関連付けるように構成される、ステップと、
前記第1クライアント・アプリケーションによって、前記ユーザ識別子が前記第2webアプリケーションにアクセスするように認証されることの指示を前記第1webアプリケーションから受け取るステップと、
前記第1クライアント・アプリケーションによって、前記受け取った指示に応じて前記第1webアプリケーションを介して前記第2webアプリケーションにアクセスするステップと、
を含む、プロセッサ実装方法。
【請求項2】
請求項1記載のプロセッサ実装方法であって、更に、
前記webサービスから前記第2webアプリケーションのアクセス・トークンを抽出するステップ
であって、それにより、前記webサービスによって前記第2識別子が生成されるステップを含む、プロセッサ実装方法。
【請求項3】
請求項2記載のプロセッサ実装方法において、前記第2webアプリケーションの前記アクセス・トークンが前記第1クライアント・アプリケーションの前記ユーザ識別子に関連付けられる、プロセッサ実装方法。
【請求項4】
請求項3記載のプロセッサ実装方法であって、更に、
前記第1webアプリケーションを介して前記第2webアプリケーションにアクセスする前記ステップの後に、
前記第2webアプリケーションにアクセスする第2要求を受け取るステップと、
前記第1クライアント・アプリケーションの前記ユーザ識別子に関連付けられる前記第2webアプリケーションの前記アクセス・トークンに基づいて、前記第1webアプリケーションを介して前記第2webアプリケーションにアクセスするために、前記第1クライアント・アプリケーション内にウィンドウをオープンするステップと
を含む、プロセッサ実装方法。
【請求項5】
請求項1記載のプロセッサ実装方法において、前記第1webアプリケーションがチャットbotであり、前記第1クライアント・アプリケーションがチャット・アプリケーションである、プロセッサ実装方法。
【請求項6】
請求項1記載のプロセッサ実装方法において、前記第1webアプリケーションがbotであり、前記第1クライアント・アプリケーションがメッセージング・アプリケーションである、プロセッサ実装方法。
【請求項7】
請求項1記載のプロセッサ実装方法において、前記第2webアプリケーションがソーシャル・ネットワーキング・アプリケーションである、プロセッサ実装方法。
【請求項8】
アプリケーションのユーザを認証するシステムであって、
少なくとも1つのハードウェアの処理ユニットと、
コンピュータ実行可能命令を格納した少なくとも1つのメモリであって、前記コンピュータ実行可能命令が前記少なくとも1つの処理ユニットによって実行されると、当該システムに、
第1クライアント・アプリケーションによって、ユーザ識別子を、第1webアプリケーションに送信することと、
前記第1クライアント・アプリケーションによって、前記第1webアプリケーションとは異なるアクセス資格情報を使用する第2webアプリケーションにアクセスする要求を受け取ることと、
前記第2webアプリケーションのアクセス資格情報を、前記第1クライアント・アプリケーションとの信頼境界線を越えて受け取ることと、
前記第1クライアント・アプリケーションによって、webサービスから第2識別子を受け取ることであって、前記第2識別子が、第2クライアント・アプリケーションによって提供されるアクセス資格情報に基づいて、前記第2webアプリケーションへの認証されたアクセスを識別することと、
前記第1クライアント・アプリケーションによって、前記第2識別子を前記第1webアプリケーションに送ることであって、前記第1webアプリケーションが、前記ユーザ識別子を、前記第2識別子と前記第2webアプリケーションへの前記認証されたアクセスとに関連付けるように構成されることと、
前記第1クライアント・アプリケーションによって、前記第
2識別子が、キャッシュされている識別子と一致することの確認を受け取ることと、
前記確認に基づいて、前記第1クライアント・アプリケーションによって、前記第1webアプリケーションおよび前記ユーザ識別子を介して前記第2webアプリケーションにアクセスすることと、
を行わせる少なくとも1つのメモリと、
を備える、システム。
【請求項9】
請求項8記載のシステムにおいて、前記第1webアプリケーションが
、アクセス・トークンに基づいて、前記第2webアプリケーションにアクセスするように認証される、システム。
【請求項10】
請求項8記載のシステムであって、更に、
前記第
2識別子が前記キャッシュされている識別子と一致することの前記確認を受け取ったことに応じて、前記第1webアプリケーションのユーザを、認証されたものとして認識する、システム。
【請求項11】
請求項8記載のシステムにおいて、前記第1webアプリケーションがチャットbotであり、前記第1クライアント・アプリケーションがチャット・アプリケーションである、システム。
【請求項12】
請求項8記載のシステムにおいて、前記第1webアプリケーションがbotであり、前記第1クライアント・アプリケーションがメッセージング・アプリケーションである、システム。
【請求項13】
請求項8記載のシステムにおいて、前記第2webアプリケーションがソーシャル・ネットワーキング・アプリケーションである、システム。
【請求項14】
コンピュータ実行可能命令を備えるコンピュータ・ストレージ媒体であって、前記コンピュータ実行可能命令が処理ユニットによって実行されるときに、アプリケーションのユーザを認証する方法を実行し、前記方法が、
第1クライアント・アプリケーションによって、ユーザ識別子を、第1webアプリケーションに送信するステップと、
前記第1クライアント・アプリケーションによって、第1webアプリケーションとは異なるアクセス資格情報を使用する第2webアプリケーションにアクセスする要求を受け取るステップと、
前記第1クライアント・アプリケーションによって、webサービスから第2識別子を受け取るステップであって、前記第2識別子が
、第2クライアント・アプリケーションによって提供されるアクセス資格情報に基づいて、前記第2webアプリケーションへの認証されたアクセスを識別する、ステップと、
前記第1クライアント・アプリケーションによって、前記第2識別子を前記第1webアプリケーションに送るステップであって、前記第1webアプリケーションが、前記ユーザ識別子を、前記第2識別子と前記第2webアプリケーションへの前記認証されたアクセスとに関連付けるように構成される、ステップと、
前記第1クライアント・アプリケーションによって、前記ユーザ識別子が前記第2webアプリケーションにアクセスするように認証されることの指示を受け取るステップと、
前記第1クライアント・アプリケーションによって、前記受け取った指示に応じて前記第1webアプリケーションおよび
前記ユーザ識別子を介して前記第2webアプリケーションにアクセスするステップと、
を含む、コンピュータ・ストレージ媒体。
【請求項15】
請求項14記載のコンピュータ・ストレージ媒体であって、前記方法が、更に、
前記webサービスから前記第2webアプリケーションのアクセス・トークンを抽出するステップ
であって、それにより、前記webサービスによって前記第2識別子が生成されるステップを含み、
前記第2webアプリケーションにおける前記アクセスが更に、前記アクセス・トークンに基づく、コンピュータ・ストレージ媒体。
【請求項16】
請求項15記載のコンピュータ・ストレージ媒体において、前記第2webアプリケーションの前記アクセス・トークンが前記第1クライアント・アプリケーションの前記ユーザ識別子に関連付けられる、コンピュータ・ストレージ媒体。
【請求項17】
請求項16記載のコンピュータ・ストレージ媒体であって、前記方法が、更に、
前記第1webアプリケーションおよび前記ユーザ識別子を介して前記第2webアプリケーションにアクセスする前記ステップの後に、
前記第1クライアント・アプリケーションによって、前記第2webアプリケーションにアクセスする第2要求を受け取るステップと
、
前記第1クライアント・アプリケーションによって、
前記ユーザ識別子に関連付けられた前記第2webアプリケーションの前記アクセス・トークン
に基づいて、前記第1webアプリケーションを介して前記第2webアプリケーションにアクセスするために、前記第1クライアント・アプリケーション内
にウィンドウをオープンするステップと、
を含む、コンピュータ・ストレージ媒体。
【請求項18】
請求項14記載のコンピュータ・ストレージ媒体において、前記第1webアプリケーションがチャットbotであり、前記第1クライアント・アプリケーションがチャット・アプリケーションである、コンピュータ・ストレージ媒体。
【請求項19】
請求項14記載のコンピュータ・ストレージ媒体において、前記第1webアプリケーションがbotであり、前記第1クライアント・アプリケーションがメッセージング・アプリケーションである、コンピュータ・ストレージ媒体。
【請求項20】
請求項14記載のコンピュータ・ストレージ媒体において、前記第2webアプリケーションがソーシャル・ネットワーキング・アプリケーションである、コンピュータ・ストレージ媒体。
【発明の詳細な説明】
【背景技術】
【0001】
[0001] ログイン体験の多くはセキュアなwebサイトを介して実行される。これは、アイデンティティ・プロバイダ(IdP)によって厳密に制御される。botはチャット・アプリ内での会話体験であるので、通例は、bot自体がユーザを認証するのは不格好であるし、また、ぎこちないものとなる。したがって、チャット・アプリケーション内でポジティブなユーザ体験を維持するために、セキュアな接続を維持しつつ、認証プロセスを更に合理化してエレガントなものにすべきである。
【0002】
[0002] webアプリケーション(例えば、フェイスブック(登録商標)やグーグル(登録商標))にサイン・インするときに、ユーザはOAuth2.0のフローを通過する。これは、ほとんどのアプリケーション種別において認証または許可を実行するために使用されている。OAuth2.0のフローは、ユーザ・アカウントをホストするサービスにユーザ認証を委託することにより、また、サード・パーティ・アプリケーションがユーザ・アカウントにアクセスするのを許可することによって機能する。通例は、webブラウザに対しては上手く機能するものの、botでは扱いにくいものとなっている。OAuth2.0は、当初、サーバ・サイドではなくクライアント・サイドでのリダイレクトのために構築された。つまり、botユーザを認証するためには、ユーザによって、botチャネルおよびサード・パーティ・サーバの間をブリッジすることになる数字および文字の長いストリング(つまり、識別番号)をコピーすることが要求される。ユーザはこの大規模な識別番号をコピーおよびペーストすることが要求されるので、現在のbot認証プロトコルは不格好である。そして、ユーザ体験性を著しく減少させ、ネットワーク・トラフィックを増大させる。
【0003】
[0003] これらおよび他の一般的な考慮事項に関し、複数の例示の態様、システムおよび方法について説明してきた。また、比較的特化される問題について検討してきたが、例は背景技術において特定される特化された問題を解決するのに限定してはならないことが理解されるべきである。
【0004】
概要
[0004] botを使用してユーザの資格情報(credential)を認証するほとんどのログイン体験は、不格好であると共に洗練されていない。例えば、ユーザがチャットbotと通信しており、そのbotがサード・パーティ・サービスのユーザ・リソース(例えば、ユーザのInstagram(登録商標)のデータ)にアクセスする必要がある場合を想定する。botはそのデータにアクセスするために、ユーザはInstagram(登録商標)で認証しなければならず、また、それら資格情報をセキュアな手法でbotに渡さなければならない。しかしながら、このアクションは、Instagram(登録商標)でのログインをホストするwebブラウザと、botをホストするメッセージング・アプリケーションとの間の信頼境界線を越える。従来のwebアプリケーションおよびモバイル・アプリケーションにおいて、このことはOAuth2.0フローを介することで達成され、ここでは、ユーザ・データのアクセスをアプリケーションそれ自体に委任している。しなしながら、botを用いると、この体験が劣り、完全にセキュアなものとはならない。
【0005】
[0005] この劣後した経験およびセキュリティの欠如の観点から、本明細書において、改善されたバージョンの認証フローが開示される。例えば、ユーザが第1アプリケーション(例えば、メッセージング・アプリケーションまたはチャット・アプリケーション)と対話しているものとする。複数の態様では、webアプリケーションは第1アプリケーションからアクセスされてもよい。webアプリケーションは、第1アプリケーション内においてアクセスされる任意のサード・パーティのwebアプリケーション(例えば、サード・パーティのチャットbot)としてよい。複数の態様では、ユーザは、第1アプリケーションとはリモートにある第2アプリケーション(例えば、Instagram(登録商標)、Snap Chat(登録商標)、Google(登録商標)、Facebook(登録商標)等のようなサード・パーティのソーシャル・ネットワーキング・アプリケーション)にアクセスするようにwebアプリケーションに要求してもよい。次いで、botは、ユーザが第2アプリケーションへのアクセスについて認証されているかを検査する。ユーザがまだ認証されていない場合に、botはユーザにログインURLを供給する。ログインURLは、第2アプリケーションのユーザ資格情報を入力するために、ブラウザ・ウィンドウをオープンさせる。ユーザ資格情報を検証すると、次いで、第2アプリケーションは、webアプリケーションに関連付けられるwebサービス(例えば、bot開発者が所有するwebサイト)に戻すようにアクセス・トークンを渡す。
【0006】
[0006] しかしながら、この時点では、webサービスは、第2アプリケーションのユーザ資格情報を入力したユーザが、第1アプリケーション内においてwebアプリケーション(例えば、bot)にアクセスしている同一のユーザであることを検証することはできない。この場合、webサービスは、一意の任意の値であるノンスを生成する。次いで、webサービスは、第1アプリケーションのソフトウェア開発キット(SDK)をコールして、ノンスを第1アプリケーション(例えば、メッセージング・アプリケーション)に渡す。複数の態様では、webサービスはまた、ノンスをキャッシュに格納する。第1アプリケーションがノンスを受け取った後、次いで、第1アプリケーションはセキュアなメッセージ(これは、ユーザには不可視である。)をwebアプリケーションに戻すよう再送信する。このメッセージは、第1アプリケーションのためのユーザIDを含む。次いで、webアプリケーション(例えば、bot)は、ノンスを受け取り、そのキャッシュ(webサービスによってコンパイルされた、格納されているノンスのコレクションを含んでいる。)を検査して、格納されているノンスが、メッセージ内で受け取ったノンスと一致することを確証する。複数の態様では、webアプリケーションは、受け取ったノンスと、ユーザIDにインデックス付けされた、格納されているノンスとを一致させてもよく、或いは、受け取ったノンスを、格納されているノンスのコレクションのうちの1つの格納されているノンスとの一致に単に基づいてもよい(格納されているノンスは、定義により、それぞれ一意である。)。
【0007】
[0007] この手法で認証フローを実装することにより、webサービスから第1アプリケーション(例えば、メッセージング・アプリケーション)に戻されるようにノンスが送信され、次いで、ノンスは、検証のために第1アプリケーションからwebアプリケーションにセキュアかつ不可視なように送られる。このようにして、ユーザは、任意の付加的なアクションを実行する必要なく認証され、その結果、優れたユーザ体験を得ると共に、開発者の一部に追加の作業を生じさせない。
【0008】
[0008] 本摘要は、以下の詳細な説明で更に説明する概念の選択を、簡略化した形態で導入するために提供される。本摘要は、特許請求の範囲に記載の主題の主要な特徴または本質的な特徴を特定することを意図するのではなく、特許請求の範囲の記載の主題の範囲を限定するために用いられることを意図するものでもない。
【図面の簡単な説明】
【0009】
【
図1】
図1は、webアプリケーションを介してユーザをセキュアに認証するための例示の分散システムを示す。
【
図2】
図2は、webアプリケーションを介してユーザをセキュアに認証するための通信システムを示す。
【
図3】
図3は、webアプリケーションを介してユーザをセキュアに認証する方法を示すブロック図である。
【
図4A】
図4Aは、チャット・アプリケーション内のチャットbotに関連付けられる例示のインタフェースを示す。
【
図4B】
図4Bは、認証プロンプトを表示するチャット・アプリケーション内のチャットbotに関連付けられる例示のインタフェースの例を示す。
【
図5】
図5は、チャット・アプリケーションがサード・パーティ・アプリケーション・サーバ(複数可)およびサード・パーティbotウェブサイト・サーバ(複数可)と通信する手法の例を示す。
【
図6】
図6は、webアプリケーションを介してbotユーザの認証に成功することを示す。
【
図7】
図7は、本開示の複数の態様が実施されるコンピューティング・デバイスの例示の物理コンポーネントを示すブロック図である。
【
図8A】
図8Aは、本開示の複数の態様が実施されるモバイル・コンピューティング・デバイスの簡略ブロック図である。
【
図8B】
図8Bは、本開示の複数の態様が実施されるモバイル・コンピューティング・デバイスの簡略ブロック図である。
【
図9】
図9は、本開示の複数の態様が実施される分散コンピューティング・システムの簡略化されたブロック図である。
【
図10】
図10は、本開示の1つ以上の態様を実行するためのタブレット型コンピューティング・デバイスを示す。
【発明を実施するための形態】
【0010】
[0020] 以下の詳細な説明では、添付した図面への参照が行われる。添付の図面は、本明細書の一部を形成し、例示適または特定の例として示されている。これら複数の態様は組み合わされてもよく、他の態様が利用されてもよく、また、構造的な変更が本開示から逸脱することなくなされてもよい。例示の態様は、方法、システム、またはデバイスとして実施される。すなわち、例示の態様は、ハードウェア実装、ソフトウェア実装、またはソフトウェアおよびハードウェアの態様の組み合わせの実装の形態とすることができる。したがって、以下の詳細な説明は、限定的な意味で解釈されてはならず、本開示の範囲は添付の特許請求の範囲およびそれらの均等物によって規定されるものである。
【0011】
[0021] ユーザは、webアプリケーションの内部でbotとの対話を試行するときに、しばしば、不格好なログイン体験の負担に直面することがある。例えば、先に詳述したように、ユーザは、メッセージング・アプリケーション内でbotにメッセージを送る。幾らかの場合では、ユーザは、サード・パーティ・アプリケーションのアカウント(例えば、ユーザのInstagram(登録商標)のアカウント)に関連付けられた情報へのアクセスをbotに要求することがある。botは、メッセージング・アプリケーションからのユーザの識別情報(例えば、ユーザID)がサード・パーティ・アプリケーション(例えば、Instagram(登録商標))で認証されているかについて検査する。ユーザIDが認証されない場合、botはログインURLをユーザに送信する。次いで、ユーザはログインURLをクリックし、その結果、サード・パーティ・アプリケーションに関連付けられたブラウザ・ウィンドウをオープンすることができる。次いで、ユーザは、サード・パーティ・アプリケーションに関連付けられたユーザのアカウント(例えば、ユーザのInstagram(登録商標))にログインする。ユーザの資格情報を検証すると、サード・パーティ・アプリケーションは、botに関連付けられたwebサービス(例えば、サード・パーティのbot開発者が所有するwebサイト)にアクセス・トークンを渡す。しかしながら、webサービスがサード・パーティ・アプリケーションからアクセス・トークンを受け取る一方で、現在のソリューションでは、Instagram(登録商標)にログインするためにwebブラウザをオープンしたユーザの識別情報が、メッセージング・アプリケーション内においてbotを利用しているユーザと同一であることをセキュアに保証することができない。
その結果、ユーザは伝統的に、botによって、直感的ではなくぎこちない認証プロセスを経験している。
【0012】
[0022] 本開示は、ユーザがwebアプリケーションに対して(または、webアプリケーションに関連付けられたwebサービスに対して)彼/彼女自身を手動で認証することが要求されないソリューションについて説明するものである。代替では、先に説明したように、bot webサービスによってノンスが自動的に生成または格納される。次いで、ノンスをメッセージング・アプリケーションに送信する。次いで、メッセージング・アプリケーションは、ノンスをwebアプリケーション(例えばbot)に不可視で送信する。受け取ったノンスが、(例えば、bot webサービスによって格納されて)キャッシュ内に格納されているノンスと一致するかどうかを判定することによって、botは受け取ったノンスを検証する。受け取ったノンスが、格納されているノンスと一致する場合には、ユーザが認証されると共に、ユーザはサード・パーティ・アプリケーション(例えばInstagram(登録商標))へのアクセスが許可される。場合によっては、webアプリケーションを介したサード・パーティ・アプリケーションへの将来のアクセスのために、アクセス・トークンがユーザIDに関連付けられることがある。
【0013】
[0023] 開発者およびユーザが、webアプリケーションに対してユーザを認証するための追加作業を発生させないだけでなく、ユーザ体験がまた大幅に向上する。更に、本明細書に開示されるソリューションは、多様な動作環境上における多数のデバイスにわたって実装することができ、ユーザ体験を更に改善する。例えば、ラップトップ・コンピュータのメッセージング・アプリケーション内部でユーザがbotによってセキュアに認証される場合に、ユーザは、モバイル・デバイス上で起動している同一のメッセージング・アプリケーション内部でbotとの後続のセキュアな接続を確立することができる。
【0014】
[0024]
図1は、webアプリケーションを介してbotユーザをセキュアに認証する例示の分散システム100を示している。
【0015】
[0025] サード・パーティ・アプリケーション(例えば、Instagram(登録商標)、Facebook(登録商標)、Snapchat(登録商標)等のようなソーシャル・ネットワーキング・アプリケーション)のためのユーザ資格情報をメッセージング・アプリケーション(例えば、チャット・アプリケーション)内でチャットbotに対しセキュアに認証するシステム100が提供される。このようなシステムは電子デバイス上で起動される。電子デバイスは、これに限定されないが、モバイル・フォン102、タブレット104、およびパーソナル・コンピュータ106のようなクライアント・デバイスを含む。開示されるシステムは、サード・パーティ・アプリケーションに関連付けられる、デバイス・ログイン資格情報を受け取る。システムは、これらログイン資格情報を多数のデバイスにわたって共有し、ユーザにとってログイン・プロセスがシームレスであることを確証にすることができる。
【0016】
[0026] 一例では、ユーザは、メッセージング・アプリケーション(例えば、チャット・アプリケーション、すなわち「チャット・アプリ(ChatApp)」)内にホストされるチャットbotを利用する。ユーザに関連付けられた如何なるデバイス(例えば、クライアント・デバイス102、104、106を介して、ユーザはメッセージング・アプリケーションにアクセスする。デバイスは、メッセージング・アプリケーションをローカルで実行し、および/または、リモートで(例えば、サーバ116上で)実行するメッセージング・アプリケーションに(例えば、ブラウザを介して)アクセスする。複数の態様では、サード・パーティのチャットbot(以下、「bot」という。)は、1つ以上の他のサーバ(例えば、サーバ118)上で実行するwebサービスに関連付けられてもよい。更なる複数の態様では、botは、メッセージング・アプリケーションからbotに渡された識別情報(例えば、ユーザのメッセージングID)に基づいて、ユーザを認証してもよい。幾らかの場合では、ユーザは、ユーザに関連付けられたサード・パーティ・アプリケーション(Instagram(登録商標)、Facebook(登録商標)、Snapchat(登録商標)等のユーザ・アカウント)にアクセスするようにbotに要求することがある。複数の態様では、これらサード・パーティ・アプリケーションは、1つ以上の他のサーバ(例えば、サーバ120)によってホストされてもよい。しかしながら、このようなサード・パーティ・アプリケーションでユーザIDが認証されていない場合には、botは、アクセスを得ることができないことになる。この状況に対して本ソリューションが向けられている。
【0017】
[0027] この場合には、メッセージング・アプリケーション内においてbotは、要求されたサード・パーティ・アプリケーションに関連付けられたログインURLをユーザに供給する。ログインURLをアクティブにすると、サード・パーティ・アプリケーションに関連付けられたウィンドウがメッセージング・アプリケーション内にオープンされ、ユーザが、(例えば、ネットワーク108を介してサーバ120上で)サード・パーティ・アプリケーションにログインすることを可能にする。次いで、サード・パーティ・アプリケーションは、ユーザの資格情報を検証し、アクセス・トークン(または他の認証)を、botに関連付けられた(例えば、サーバ118上でホストされる)webサイトに転送する。しかしながら、この場合は、botは、ログインURLにアクセスしたユーザがメッセージング・アプリケーションを介してbotにアクセスしているユーザと同一であることを検証することはできないことがある。この事態に対処するために、bot webサイトは、ノンスを生成してメッセージング・アプリケーションに送信し、次いで、不可視のメッセージを介してノンスをbotに再送信する。次いで、botは、受け取ったノンスを、bot webサイトによりキャッシュに保存された格納済みノンスのインデックスと比較することにより、これを検証することができる。受け取ったノンスが、格納されているノンスと一致する場合は、ユーザが認証され、botはユーザIDをサード・パーティ製アプリケーションのアクセス・トークン(または他の認証)に関連付ける。複数の態様では、ユーザIDがサード・パーティ・アプリケーションによって一旦認証されると、引き続き、(ユーザの同一デバイスまたは別のデバイス上で起動する)メッセージング・アプリケーション内のbotがサード・パーティ・アプリケーションにアクセスしてもよい。
【0018】
[0028] 本明細書で開示されるシステムに関連付けられるアクセス・トークンおよびノンスは、ローカルにおよび/またはリモートに格納される。電子デバイスは、ローカル・データベース110、112または114に格納されたローカル・データ、サーバ116、118および120に格納されたリモート・データベース、またはこれらの両方の組み合わせを利用する。例えば、モバイル・フォン102は、ローカル・データベース110、およびネットワーク108(複数可)を介してアクセス・サーバ116、118および/または120を利用して、webアプリケーションを介してbotユーザをセキュアに認証することができる。他の例示の態様では、タブレット104は、ローカル・データベース112およびネットワーク108(複数可)を利用して、botユーザをセキュアに認証することができ、同様に、関連付けられる任意のアクセス・トークンまたはノンス値を格納および送信することができる。
【0019】
[0029] なお、
図1に関連して説明してきた様々な方法、デバイス、コンポーネント等は、説明した特定コンポーネントによって実行されているシステム100に限定することを意図するものではないことが認められて然るべきである。したがって、追加のトポロジ構成を使用して、本明細書の方法およびシステムを実施してもよく、並びに/または、説明したコンポーネントは、本明細書に開示される方法およびシステムから逸脱することなく除外されてもよい。
【0020】
[0030]
図2は、webアプリケーションを介してbotユーザをセキュアに認証するための通信システム200を示している。
【0021】
[0031] システム200は、初期接続プロセスで始まる。初期接続プロセスは、電子デバイス202のような電子デバイスと関与する。電子デバイス202を使用して、メッセージング・アプリケーション(例えば、WhatsApp(登録商標)、Facebook(登録商標)メッセンジャ、WeChat(登録商標)、Slack(登録商標)等のようなチャット・アプリケーション)のようなアプリケーションを起動することができる。botは、当該メッセージング・アプリケーション内でアクセスすることができる。ユーザは、ユーザに関連付けられたサード・パーティ・アプリケーションにアクセスするようbotに要求する。次いで、botは、メッセージング・アプリケーションからの識別情報(例えば、ユーザID)が、要求されたサード・パーティ・アプリケーション(例えば、Instagram(登録商標))によって認証されているかについて検査する。その場合に、botは、要求されたサード・パーティ・アプリケーションにアクセスするように進む。そうでない場合には、botは(メッセージング・アプリケーションを介して)サード・パーティ・アプリケーションの(サーバ206上の)ログインURLにユーザをリダイレクトすることにより、ログイン資格情報の入力をユーザに指示する。botによって提供されたURLをユーザがクリックすると、メッセージング・アプリケーション内のウィンドウによって、サード・パーティのアカウントに関連付けられたログイン資格情報をユーザが入力するのを可能にする。メッセージング・アプリケーション内のウィンドウは電子デバイス202上に表示され、サード・パーティ・アカウントに関連付けられたwebページは、ネットワーク204を通じてサーバ206によって電子デバイス202に供給される。ログイン資格情報は、サーバ206上のサード・パーティのアカウントについて格納されたログイン資格情報と比較され、引き続き、例えばサーバ208上のbotに関連付けられたwebページにアクセス・トークンを通信する。
【0022】
[0032] しかしながら、この時点では、メッセージング・アプリケーション内のbotは、ログインURLにアクセスしたユーザがメッセージング・アプリケーション内でbotと通信しているユーザと同一であることを検証することができない場合がある。したがって、(サーバ208上の)bot webページは、任意の一意の番号であるノンスを生成する。また、botによってアクセス可能なキャッシュにノンスを格納し、メッセージング・アプリケーションに付随するソフトウェア開発キット(SDK)にノンスを渡す。すなわち、サーバ208上で起動するbot webページは、電子デバイス202上でアクセスされるメッセージング・アプリケーション(例えば、ローカルに、或いは、ネットワーク204(複数可)上のブラウザを介してリモートの何れかで起動するメッセージング・アプリケーション)にノンスを渡す。メッセージング・アプリケーションは、ノンスを受け取り、次いで、サイレント・メッセージを介してノンスをメッセージング・アプリケーション内でbotに再送信する。複数の態様では、「サイレント」すなわち「不可視」のメッセージとは、ユーザに見ることができるものではないメッセージ、および/またはユーザによって手動で実装されないメッセージのこととしてもよい。botは、格納されているノンスが、受け取ったノンスと一致するかについてキャッシュを検査する。botキャッシュに保存したノンスとメッセージから受信したノンスとが一致する場合には、botはセキュアに認証されて、(例えば、サーバ206上の)サード・パーティのログインURLから、(例えば、サーバ208上の)bot webサイトに渡されるアクセス・トークンを用いて、サード・パーティ・アプリケーションにアクセスすることができる。
botおよび/またはメッセージング・アプリケーションは、更に、サード・パーティ・アプリケーションのアクセス・トークンを、メッセージング・アプリケーションのユーザIDに関連付ける。
【0023】
[0033] 幾らかの例示の態様では、bot webページ・サーバ208は、ネットワーク204(複数可)を介して電子デバイス202と通信してもよい。情報はまた、ネットワーク204(複数可)を介して、サード・パーティ・アプリケーション・サーバ206からbot webページ・サーバ208に送信される。電子デバイス202、サーバ206、および/またはサーバ208の間で情報を通信するために、ネットワーク204(複数可)には、1つ以上のローカル・エリア・ネットワーク(例えば、LAN)および/またはワイド・エリア・ネットワーク(複数可)(例えば、WAN)、プライベート・ネットワーク(例えば、イントラネット)、および/またはパブリック・ネットワーク(例えば、インターネット)の任意の組み合わせが含まれる。
【0024】
[0034] なお、
図2に関して説明された様々な方法、デバイス、コンポーネント等は、説明される特定のコンポーネントによって実行されているシステム200に限定することを意図するものでないことが認められて然るべきである。したがって、追加のトポロジ構成を使用して、本明細書の方法およびシステムを実施してもよく、並びに/または、説明したコンポーネントは、本明細書に開示される方法およびシステムから逸脱することなく除外されてもよい。
【0025】
[0035]
図3は、webアプリケーションを介してbotユーザをセキュアに認証する方法300を示すブロック図である。
【0026】
[0036] 図示されているように、システム300は要求受取動作302によって開始する。複数の態様では、ユーザは、メッセージング・アプリケーション(例えば、チャット・アプリ)内でチャットbotと通信してもよい。幾らかの場合では、ユーザがbotにアクセスするために、メッセージング・アプリケーションは、ユーザ識別情報(例えば、ユーザID)を、botをホストするwebサイトに渡すことがある。例えば、(例えば、1つ以上のサーバ上で実行する)bot webサイトは、サービスとしてのチャットbotを様々なメッセージング・アプリケーションに提供する。更なる態様では、botはメッセージング・アプリケーション内でホストされてもよいが、bot webサイト上で、および/またはbot webサイトと直接通信して実行されてもよい。なお、本方法は、メッセージング・アプリケーション内でアクセスされる「チャットbot」に関して説明される一方で、別のアプリケーション内の任意のwebアプリケーションは、本明細書で説明される方法に従って同様にユーザを認証することが認められて然るべきである。
【0027】
[0037] ユーザ要求受取動作302では、botは、メッセージング・アプリケーションを介して、Instagram(登録商標)、Snap Chat(登録商標)、Facebook(登録商標)のようなサード・パーティ・アプリケーションからユーザ情報にアクセスする要求を受け取る。
【0028】
[0038] 認証判定動作304では、botは、メッセージング・アプリケーションのユーザ識別子(例えば、ユーザID)が、サード・パーティ・アプリケーション(例えば、Instagram(登録商標))のユーザのアカウントへのアクセスについて認証されているかを判定する。ユーザIDが既に認証されている場合は、botは、認証動作304から「Yes」を応答し、要求受取動作302でメッセージング・アプリケーションに戻り、サード・パーティ・アプリケーションへのアクセスのためにアクセス受取動作338に進む。そのアクセスは、アクセス許可動作336においてサード・パーティ・アプリケーションによって許可される。幾らかの例示の態様では、ユーザIDがサード・パーティ・アプリケーション上のユーザ・アカウントへのアクセスについて認証されているときに、bot(またはメッセージング・アプリケーション)は、サード・パーティ・アカウントが既に認証されていることの通知をユーザに供給してもよい。
【0029】
[0039] しかしながら、メッセージング・アプリケーションのユーザIDがサード・パーティ・アプリケーションへのアクセスについて尚も認証されていないときは、本方法はアクセス要求動作306の受け取りに進む。アクセス要求動作306では、サード・パーティ・アプリケーションは、botからアクセスの要求を受け取る。アクセスの要求に応答して、ログイン提供動作308では、サード・パーティ・アプリケーションは、bot webサイトに、サード・パーティ・アプリケーションに関連付けられるログインURL(例えば、Instagram(登録商標)のログインURL)を供給する。ログイン・ホスト動作310では、bot webサイトは、ログインURLをホストし、メッセージング・アプリケーションにログインURLを供給する。受取/表示動作312では、メッセージング・アプリケーションは、ログインURLを受け取り、ログインURLをユーザに表示する。入力受取/ウィンドウ・オープン動作314では、メッセージング・アプリケーションは、(例えば、ログインURLでのクリック、タッチ、スワイプ、ホバー等を介して)ユーザ入力を受け取り、メッセージング・アプリケーション内にウィンドウをオープンして、(ホスト動作310で)bot webサイトを介して、サード・パーティ・アプリケーションのログインURLに関連付けられるwebページへとナビゲートすることができる。様々な態様では、ユーザがログインURLにナビゲートするときに、メッセージング・アプリケーションとサード・パーティ・アプリケーションとの間で信頼境界線301を越えてもよい。
【0030】
[0040] ユーザ・ログイン受取/検証動作316では、ユーザがログインURLにアクセスしてユーザの資格情報を入力するときに、サード・パーティ・アプリケーションは、ユーザのアカウントについてのユーザ資格情報を受け取り、それを検証する。例えば、サード・パーティ・アプリケーションは、ユーザ資格情報を、サード・パーティ・アプリケーションを実行する1つ以上のサーバによって保持されるユーザ資格情報のストアと比較する。
【0031】
[0041] ユーザ資格情報が検証された場合は、ユーザ・ログイン受取/検証動作316で、サード・パーティ・アプリケーションは認証コードを生成し、bot webサイトにアクセス・トークンを渡す(すなわち送る)。複数の態様では、認証コードの有効期限が短くてもよい(例えば10分)。この場合、承認/要求アクセス・トークン受取動作318では、bot webサイトは、サード・パーティ・アプリケーションから認証コードを受け取り、また、より長い寿命を有するアクセス・トークンを要求する。認証コードおよび/または他の適切な判定に基づいて、生成/送信動作320では、サード・パーティ・アプリケーションは、アクセス・トークン(AT)を生成して、bot webサイトに送る。受取動作322では、bot webサイトは、アクセス・トークンを受け取る。
【0032】
[0042] 幾らかの場合では、先に説明したように、メッセージング・アプリケーション内においてbotにアクセスするために、メッセージング・アプリケーションは、ユーザIDをbot webサイトに渡すことがある。この場合、ユーザIDは、botへのアクセスをbot webサイトに要求するユーザを認証してもよい。また、botは、メッセージング・アプリケーションによってホストされ、またはメッセージング・アプリケーション内でアクセスされるwebアプリケーションである一方で、botは、bot webサイト上で実行され、および/またはbot webサイトと直接通信する。
【0033】
[0043] 先に詳述したように、bot webサイトは、メッセージング・アプリケーション内でbotにアクセスするユーザが、サード・パーティ・アプリケーションのログインURLにユーザ資格情報を入力したユーザと同一であることを検証することができない場合がある。つまり、受取動作322では、bot webサイトは、サード・パーティ・アプリケーションに関連付けられたユーザのアカウントについてのアクセス・トークンを受け取る一方で、bot webサイトはユーザを認証することができない場合がある。この場合、ノンス生成動作324では、bot webサイトはノンスを生成する。ノンスは、一度しか使用することができない任意の一意の番号である。また、ノンス生成動作324では、bot webサイトは、サード・パーティ・アプリケーションから受け取ったアクセス・トークン(AT)をノンスと関連付け、また、ノンスATをキャッシュに格納する。複数の態様では、ノンスは、ユーザIDに基づいてキャッシュ内でインデックス付けされるか、またはアクセス・トークンと共に単に格納されてもよい。更なる態様では、キャッシュは、格納されたノンスのコレクションを含んでもよい。
【0034】
[0044] ノンス受取動作326では、メッセージング・アプリケーションは、bot webサイトからノンスを受け取る。幾らかの態様では、bot webサイトは、ユーザIDと共にノンスをメッセージング・アプリケーションに渡してもよい。
【0035】
[0045] 渡し動作328では、メッセージング・アプリケーションは、不可視のメッセージ(不図示)を介してbotに戻すようにノンスを渡す。つまり、bot webサイトからノンスを受信すると、メッセージング・アプリケーションは、(例えば、ユーザIDに基づいて)ユーザを識別して、メッセージング・アプリケーション内でユーザと通信しているbotに、不可視のメッセージを介してノンスを渡す。先に説明したように、「不可視」メッセージは、ユーザには見ることができない、および/またはユーザによって手動で実装されないメッセージのことである。
【0036】
[0046] 受取動作330では、botは、メッセージング・アプリケーションからノンスを受け取る。また、botは、ノンス生成動作324でbot webサイトによって格納されたノンスのキャッシュにアクセスして、判定動作332を実行することができる。なお、botはメッセージング・アプリケーション内からアクセスされるが、botはbot webサイト上で、および/またはbot webサイトと直接通信して実行していてもよい。
【0037】
[0047] 判定動作332では、botは、メッセージング・アプリケーションから受け取ったノンス(例えば、受信済みノンス)がキャッシュ内に格納されているノンスと一致するかについて判定する。受け取ったノンスが、保存されているノンスと一致しない場合は、ユーザは認証されることができずに、本方法は終了する。この場合、botは、サード・パーティ・アプリケーション(例えば、Instagram(登録商標))上のユーザのアカウントにはアクセスせず、また、botは、サード・パーティ・アプリケーションへのアクセス要求を完了できないことの通知をユーザに供給する。代替では、受け取ったノンスがキャッシュに格納されているノンスと一致する場合は、本方法はオプションの関連付け動作334に続いてもよい。
【0038】
[0048] オプションの関連付け動作334では、bot(またはメッセージング・アプリケーション)は、サード・パーティ・アプリケーションのアクセス・トークンを、メッセージング・アプリケーションのユーザIDに関連付ける。この場合、サード・パーティ・アプリケーションのユーザのアカウントにアクセスするための後続の要求に対して、botは、ユーザIDがサード・パーティ・アプリケーションについて認証されているかを判定し、また、botはアクセス許可動作338に直接進む。
【0039】
[0049] アクセス許可動作336では、サード・パーティ・アプリケーションは、botによって、サード・パーティ・アプリケーション上のユーザのアカウントにアクセスするのを許可する。幾らかの場合では、アクセス許可動作336でアクセスを許可するのよりも前に、サード・パーティ・アプリケーションは、bot(またはメッセージング・アプリケーション)からアクセス・トークンを受け取って、これを検証することがある。複数の態様において、アクセス・トークンは、ユーザID内でサード・パーティ・アプリケーションに、bot(またはメッセージング・アプリケーション)からサード・パーティ・アプリケーションへのメッセージ内、またはその他によって渡されてもよい。
【0040】
[0050] アクセス受取動作338で、メッセージング・アプリケーション内のbotは、サード・パーティ・アプリケーションのユーザ・アカウント内の情報(例えば、Instagram(登録商標)にポストされた写真)へのアクセスを受け取る。幾らかの態様では、botがサード・パーティ・アプリケーションによって一旦認証されると、引き続き、botは、(例えば、アクセス・トークンに関連付けられたユーザIDに基づいて)認証を繰り返すことなくユーザ・アカウントにアクセスしてもよい。更なる態様では、アクセス・トークンは有効日が関連付けられてもよい。当該有効日が満了すると、bot(またはメッセージング・アプリケーション)がサード・パーティ・アプリケーションによって再認証することが要求される。
【0041】
[0051] これらのステップを利用することにより、サード・パーティ・アプリケーション・サーバ、bot webサイト・サーバ、および本明細書に開示されるシステムに関連付けられる電子デバイスは、ユーザにはサイレント(または不可視)で全て通信する。更に、ユーザおよび/または開発者は、追加の負担を負うことにならない。例えば、マジック番号を手動でコピー・アンド・ペーストすることが要求されず、および/または開発者が署名を検証することが要求されず、ユーザ認証の成功が生じることになる。
【0042】
[0052] なお、
図3に関して説明した様々な方法、デバイス、コンポーネント等は、説明した特定のコンポーネントによって実行されているシステム300に限定することを意図するのではないことが認められてしかるべきである。したがって、追加のトポロジ構成を使用して、本明細書の方法およびシステムを実施してもよく、並びに/または、説明したコンポーネントは、本明細書に開示される方法およびシステムから逸脱することなく除外されてもよい。
【0043】
[0053]
図4Aは、チャット・アプリケーション内でチャットbotに関連付けられる例示のインタフェースを示している。
【0044】
[0054] メッセージング・アプリケーション内においてアクセスされるbotのユーザをセキュアに認証するシステムを開始するために、最初に、ユーザはモバイル・デバイス401のような電子デバイス上でメッセージ・アプリケーション(例えば、「チャット・アプリ」)をオープンする。幾らかの態様では、チャット・アプリには、ユーザと通信するためのチャットbotが含まれてもよい。例えば、チャットbotと通信するために、ユーザは、チャット・アプリに関連付けられたインタフェースにメッセージ404Aを入力する。幾らかの場合では、ユーザは、サード・パーティ・アプリケーション(不図示)に関連付けられるユーザのアカウントの情報にアクセスするようにチャットbotに要求することがある。
例えば、ユーザは、ユーザのInstagram(登録商標)のアカウント(不図示)内にユーザがポストした写真にアクセスするようチャットbotに要求する。
【0045】
[0055] サード・パーティ・アプリケーションにアクセスするための要求の受け取りに応じて、チャットbotは、チャット・アプリに関連付けられたユーザIDが認証されて、サード・パーティ・アプリケーションに関連付けられたユーザ・アカウントにアクセスできるかについて判定する。ユーザIDが認証された場合は、チャットbotはユーザのInstagram(登録商標)のアカウント内でユーザによって要求された写真にアクセスするように進む。代替として、
図4Bに示されるように、ユーザIDがサード・パーティ・アプリケーションに認証されていない場合には、チャットbotは、認証が要求されていることのプロンプトをユーザに(チャット・アプリ内から)供給する。
【0046】
[0056]
図4Bは、認証プロンプトを表示するチャット・アプリケーション内において、チャットbotに関連付けられた例示のインタフェースを示している。
【0047】
[0057] 要求されたサード・パーティ・アプリケーションにアクセスするために、ユーザIDがこれまでに認証されていない場合には、チャット・アプリ内においてチャットbotは、認証プロンプト406を通じてサード・パーティ・アプリケーションにログインするようにユーザに指示する。ユーザは認証プロンプト406を選択する。認証プロンプト406は、サード・パーティ・アプリケーション(例えば、Instagram(登録商標))のログイン・ページにユーザをリダイレクトするために、ログインURLによってチャット・アプリ内にウィンドウをオープンする。先に説明したように、ユーザはログインURLを介してサード・パーティ・アプリケーションにログインし、ユーザのログイン資格情報を検証すると、サード・パーティ・アプリケーションは認証コード(その後はアクセス・トークン)を、チャットbotに関連付けられるwebページに送信する。
【0048】
[0058] しかしながら、この時点では、bot webサイトは、ログインURLにログイン資格情報を入力したユーザが、チャット・アプリ内のチャットbotにアクセスしているユーザと同一であることを検証することができない場合がある。したがって、ユーザを認証するために、bot webサイトは、ノンスを生成およびキャッシュする。ノンスは任意の一意の値である。次いで、ノンスはメッセージング・アプリケーション(チャット・アプリ)に渡される。次いで、メッセージング・アプリケーションは、ユーザには不可視のメッセージを介してノンスをチャットbotに渡す。次いで、チャットbotは、受け取ったノンスが、bot webサイトによって作成およびキャッシュされているキャッシュ済みノンスと一致することを検証する。受け取ったノンスとキャッシュ済みノンスとが一致する場合、ユーザは認証されて、チャットbotはサード・パーティ・アプリケーション(例えば、Instagram(登録商標))から受け取ったアクセス・トークンを使用して、ユーザのInstagram(登録商標)のアカウント内でユーザによって要求された写真にアクセスすることができる。
【0049】
[0059] なお、
図4Aおよび
図4Bに関して説明された様々な方法、デバイス、コンポーネント等は、説明される特定のコンポーネントによって実行されているシステム400に限定することを意図するものでないことが認められて然るべきである。したがって、追加のトポロジ構成を使用して、本明細書の方法およびシステムを実施してもよく、並びに/または、説明したコンポーネントは、本明細書に開示される方法およびシステムから逸脱することなく除外されてもよい。
【0050】
[0060]
図5は、チャット・アプリケーションがサード・パーティ・アプリケーション・サーバ(複数可)およびbot webサイト・サーバ(複数可)と通信する方法の例を示している。
【0051】
[0061] 一態様の例では、モバイル・デバイス502のような電子デバイス上のユーザは、チャット・アプリケーションのウィンドウ内におけるチャットbotによってサード・パーティ・アプリケーションのログイン資格情報を入力するように指示される。ユーザは、認証プロンプト406(
図4Bを参照のこと。)を選択し、サード・パーティ・アプリケーションのログイン・ページにリダイレクトされる。例えば、ユーザが認証プロンプト406を選択すると、プロンプトは処理中ホイール504に変更する。ログインURLをクリックすると(ログリンURLはウィンドウ内に提供され、または、デバイス502に関連付けられたインタフェースをオーバーレイしている(不図示))、次いで、サード・パーティ・アプリケーション・サーバ506(複数可)上で実行している、および/またはサード・パーティ・アプリケーション・サーバ506(複数可)によってネットワーク510(複数可)を介して通信しているwebページに、ユーザはログイン資格情報を入力する。ログイン資格情報は、サード・パーティ・アプリケーション・サーバ506(複数可)によって検証され、認証コード(および、後のアクセス・トークン)が作成され、ネットワーク510(複数可)を介してbot webサイト・サーバ508(複数可)に渡される。ネットワーク510(複数可)には、モバイル・デバイス502、サーバ506、および/またはサーバ508の間で情報を通信するために、1つ以上のローカル・エリア・ネットワーク(例えば、LAN)および/若しくはワイド・エリア・ネットワーク(例えば、WAN)、プライベート・ネットワーク(例えば、イントラネット)、並びに/または公衆ネットワーク(例えば、インターネット)の任意の組み合わせが含まれる。
【0052】
[0062] しかしながら、先に詳述したように、サード・パーティのbot webサイト・サーバ508(複数可)は、サード・パーティ・アプリケーションに関連付けられたwebページに資格情報を入力したユーザが、チャット・アプリケーション内においてチャットbotにアクセスするユーザと同一であることを検証することができない場合がある。この時点で、bot webサイト・サーバ508(複数可)は、アクセス・トークンを受け取り、ノンスを作成する。ノンスは、アクセス・トークンを用いてキャッシュされ、次いで、モバイル・デバイス502上で起動しているチャット・アプリケーション(例えば、チャット・アプリ)に戻すように、ノンスは渡される。次いで、チャット・アプリケーションは、不可視のメッセージを介して、チャット・アプリケーション内においてノンスをチャットbotに渡す。チャットbotは、受け取ったノンスを、キャッシュされているノンスと比較する。受け取ったノンスとキャッシュされているノンスとが一致する場合は、次いで、チャットbot(またはチャット・アプリ)は、チャット・アプリのユーザIDを、サード・パーティ・アプリケーション・サーバ506(複数可)から受け取ったアクセス・トークンに関連付ける。
【0053】
[0063] チャット・アプリケーションと、チャットbotと、サード・パーティ・アプリケーションおよびそのサーバと、サード・パーティbot webサイトおよびそのサーバと、の間での通信は、バックグラウンドで生じる(つまり、ユーザには不可視である。)。このようにして、ユーザは、サード・パーティbot webサイトから受け取った「マジック・ナンバ」を入力したり、さもなければ手動で彼/彼女を認証したりすることは要求されない。つまり、ノンスの生成と検証は自動かつセキュアである。
【0054】
[0064] なお、
図5に関して説明された様々な方法、デバイス、コンポーネント等は、説明される特定のコンポーネントによって実行されているシステム500に限定することを意図するものでないことが認められて然るべきである。したがって、追加のトポロジ構成を使用して、本明細書の方法およびシステムを実施してもよく、並びに/または、説明したコンポーネントは、本明細書に開示される方法およびシステムから逸脱することなく除外されてもよい。
【0055】
[0065]
図6は、webアプリケーションを介してbotユーザの認証に成功することを示している。
【0056】
[0066] 受け取ったノンスの値とキャッシュされているノンスの値とが一致することを確認(ensure)した後、次いで、botは、ログイン成功のメッセージ604がモバイル・デバイス602に表示される。また、チャットbotは、サード・パーティ・アプリケーションのユーザのアカウントに関連付けられた、要求された情報にアクセスする。引き続き、一旦認証されると、チャットbotは、チャット・アプリのユーザIDに関連付けられたアクセス・トークンに基づいて、サード・パーティ・アプリケーションのユーザのアカウントにアクセスする。しかしながら、先に検討したように、例えば、トリガ・イベントが発生した場合、また、特定の時間期間が経過した場合に、アクセス・トークンは無効になり、および/または期限切れとなる。この例では、botユーザは、新規のアクセス・トークンを抽出するために、サード・パーティ・アプリケーションにログイン資格情報を再入力する必要があり、サード・パーティbot webサイトに対しbotユーザの再認証を要求する。
【0057】
[0067] なお、
図6に関して説明された様々な方法、デバイス、コンポーネント等は、説明される特定のコンポーネントによって実行されているシステム600に限定することを意図するものでないことが認められて然るべきである。したがって、追加のトポロジ構成を使用して、本明細書の方法およびシステムを実施してもよく、並びに/または、説明したコンポーネントは、本明細書に開示される方法およびシステムから逸脱することなく除外されてもよい。
【0058】
[0068]
図7から
図10および関連する説明は、本開示の態様が実施される様々な動作環境を検討するのを提供する。しかしながら、
図7から
図10に関して図示および説明されたデバイスおよびシステムは、例示および図示の目的のためであり、本明細書で説明されるように、本開示の態様を実施するために利用される膨大な数のコンピューティング・デバイスの構成を限定するものではない。
【0059】
[0069]
図7は、本開示の態様が実施されるコンピューティング・デバイス700の例示の物理コンポーネント(例えば、ハードウェア)を示すブロック図である。次に説明するコンピューティング・デバイス・コンポーネントは、コンピューティング・デバイス(例えば、サーバ・コンピューティング・デバイスおよび/またはクライアント・コンピューティング・デバイス)上で認証マネージャ720を実装するためのコンピュータ実行可能命令を有する。認証マネージャ720のためのコンピュータ実行可能命令は、webアプリケーションを介してbotユーザを自動的に認証する方法を含む、本明細書に開示される本方法を実装するように実行される。基本構成において、コンピューティング・デバイス700は、少なくとも1つの処理ユニット702およびシステム・メモリ704を含む。コンピューティング・デバイスの構成および種別に応じて、システム・メモリ704は、これに限定されないが、揮発性ストレージ(例えば、ランダム・アクセス・メモリ)、不揮発性ストレージ(例えば、リード・オンリ・メモリ)、フラッシュ・メモリ、またはこれらのようなメモリの任意の組み合わせを含む。システム・メモリ704は、オペレーティング・システム705と、認証マネージャ720(特に、ノンス生成器711、ノンス検証器713、アプリケーション通信マネージャ715、および/またはUXコンポーネント717)を起動するのに好適な1つ以上のプログラム・モジュール706とを含む。
【0060】
[0070] オペレーティング・システム705は、例えば、コンピューティング・デバイス700の動作を制御するのに好適である。更に、本開示の実施形態は、グラフィックス・ライブラリ、他のオペレーティング・システム、または他のアプリケーション・プログラムと連携して実施され、また、任意の特定のアプリケーションまたはシステムに限定されない。
この基本構成は、
図7では、破線708内のこれらコンポーネントによって示される。
コンピューティング・デバイス700は、追加の特徴または機能を有してもよい。例えば、コンピューティング・デバイス700はまた、例えば磁気ディスク、光ディスク、またはテープのような付加的な(取り外し可能および/または取り外し不能の)データ・ストレージ・デバイスも含んでもよい。このような付加的なストレージは、
図7では、取り外し可能ストレージ709および取り外し不能ストレージ710によって示される。
【0061】
[0071] 先に述べたように、多くのプログラム・モジュールおよびデータ・ファイルがシステム・メモリ704に格納される。処理ユニット702で実行している間、プログラム・モジュール706(例えば、認証マネージャ720)は、本明細書で説明する態様を含むがそれに限定されないプロセスを実行する。本開示の態様によれば、特にwebアプリケーションを介してbotユーザを自動的に認証するために使用される他のプログラム・モジュールは、ノンス生成器711、ノンス検証器713、アプリケーション通信マネージャ715、および/またはUXコンポーネント717等を含む。
【0062】
[0072] 更に、本開示の実施形態は、個別の電子素子を備えた電気回路、論理ゲートを収容したパッケージされまたは集積された電子チップ、マイクロプロセッサを利用した回路、或いは電子素子またはマイクロプロセッサを収容する単一チップで実施される。例えば、本開示の実施形態は、システム・オン・チップ(SOC)を介して実施され、
図7に示されるコンポーネントの各々またはその多くが単一の集積回路で統合される。このようなSOCデバイスは、1つ以上の処理ユニット、グラフィックス・ユニット、通信ユニット、システム仮想化ユニット、および、そのすべてが単一の集積回路としてチップ基板に集積(または「焼き付け」)される様々なアプリケーション機能を含む。SOCを介して動作するとき、プロトコルを切り替えるクライアント性能に関し、本明細書で説明される機能は、単一の集積回路(チップ)上のコンピューティング・デバイス700の他のコンポーネントと統合される特定用途向けロジックを介して動作する。本開示の実施形態はまた、これに限定されないが、機械、光、流体、および量子技術を含む、例えばAND、ORおよびNOTのような論理演算を実行することができる他の技術を使用して実施されてもよい。加えて、本開示の実施形態は、汎用コンピュータ内または他の任意の回路若しくはシステム内で実施されてもよい。
【0063】
[0073] コンピューティング・デバイス700はまた、キーボード、マウス、ペン、音若しくは音声入力デバイス、タッチ若しくはスワイプ入力デバイス等のような1つ以上の入力デバイス712(複数可)を有してもよい。ディスプレイ、スピーカ、プリンタ等のような出力デバイス714(複数可)がまた含まれてもよい。上述したデバイスは例示であり、他のものが使用されてもよい。コンピューティング・デバイス700は、他のコンピューティング・デバイス750との通信を可能にする1つ以上の通信接続716を含む。好適な通信接続716の例には、これに限定されないが、無線周波数(RF)送信機、受信機、および/または送受信機回路と、ユニバーサル・シリアル・バス(USB)、パラレルおよび/またはシリアルポートとが含まれる。
【0064】
[0074] 本明細書で用いられるコンピュータ可読媒体という用語には、コンピュータ・ストレージ媒体が含まれる。コンピュータ・ストレージ媒体には、コンピュータ可読命令、データ構造、またはプログラム・モジュールのような情報をストレージするための任意の方法または技術で実装される揮発性および不揮発性かつ取り外し可能および取り外し不能の媒体が含まれる。システム・メモリ704、取り外し可能ストレージ・デバイス709、および取り外し不能ストレージ・デバイス710は、全てコンピュータ・ストレージ媒体の例(例えば、メモリ・ストレージ)である。コンピュータ・ストレージ媒体には、有形ストレージ媒体(例えば、RAM、ROM、電気的消去可能リード・オンリ・メモリ(EEPROM)、フラッシュ・メモリ若しくは他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD)若しくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージ若しくは他の磁気ストレージ・デバイス、または、情報を格納するのに使用することができ、コンピューティング・デバイス700によってアクセスすることができる他の製造物品)が含まれる。このような有形コンピュータ・ストレージ媒体は、コンピューティング・デバイス700の一部としてよい。コンピュータ・ストレージ媒体は、搬送波または他の伝播または変調データ信号を含まない非一時的媒体としてよい。
【0065】
[0075] 通信媒体には、コンピュータ可読命令、データ構造、プログラム・モジュール、または搬送波や他のトランスポート・メカニズムのような変調データ信号の他のデータによって具体化され、任意の情報配信媒体が含まれる。「変調されたデータ信号」という用語は、信号内の情報をエンコードするような手法で設定または変更される1つ以上の特性を有する信号について記述している。一例では、これに限定されないが、通信媒体には、有線ネットワークまたはダイレクト有線接続のような有線媒体と、音響、無線周波数(RF)、赤外線、および他の無線媒体のような無線媒体とが含まれる。
【0066】
[0076]
図8Aおよび
図8Bは、例えば、モバイル・フォン、スマートフォン、ウェアラブル・コンピュータ(例えば、スマートウォッチ、または仮想現実アプリケーション用のヘッド・マウント・ディスプレイ)、タブレット・コンピュータ、ラップトップ・コンピュータ等のモバイル・コンピューティング・デバイス800を示し、本開示の実施形態を実施する。幾らかの態様では、クライアントはモバイル・コンピューティング・デバイスとしてよい。
図8Aを参照する。複数の態様を実装するモバイル・コンピューティング・デバイス800の一態様が示されている。基本構成において、モバイル・コンピューティング・デバイス800は、入力要素と出力要素の両方を有するハンドヘルド・コンピュータである。モバイル・コンピューティング・デバイス800は、通常、ディスプレイ805と、ユーザがモバイル・コンピューティング・デバイス800に情報を入力できるようにする1つ以上の入力ボタン810と、を含む。モバイル・コンピューティング・デバイス800のディスプレイ805はまた、入力デバイス(例えば、タッチ・スクリーン・ディスプレイ)としても機能する。オプションの側面入力要素815が含まれる場合、これにより、更にユーザ入力を可能としてもよい。側面入力要素815は、回転スイッチ、ボタン、または他の任意の種別の手動入力要素としてよい。代替の態様では、モバイル・コンピューティング・デバイス800は、より多くのまたはより少ない入力要素を組み込んでもよい。例えば、幾らかの実施形態においてディスプレイ805はタッチ・スクリーンでなくてもよい。更に別の代替の実施形態では、モバイル・コンピューティング・デバイス800は、セルラ・フォンのようなポータブル・フォン・システムである。モバイル・コンピューティング・デバイス800はまた、オプションのキーパッド835を含んでもよい。任意のキーパッド835は、物理キーパッド、またはタッチ・スクリーン・ディスプレイ上に生成された「ソフト」キーパッドとしてよい。様々な実施形態において、出力要素は、グラフィカル・ユーザ・インターフェース(GUI)、視覚インジケータ820(例えば、発光ダイオード)、および/またはオーディオ・トランスデューサ825(例えば、スピーカ)を示すためのディスプレイ805を含む。幾らかの態様では、モバイル・コンピューティング・デバイス800は、ユーザに触覚フィードバックを供給するための振動トランスデューサを組み込んでもよい。更に別の態様では、モバイル・コンピューティング・デバイス800は、外部デバイスとの間で信号を送受信するために、オーディオ入力(例えば、マイク・ジャック)、オーディオ出力(例えば、ヘッドフォン・ジャック)、およびビデオ出力(例えば、 HDMI(登録商標)ポート)のような入力/出力ポートを組み込む。
【0067】
[0077]
図8Bは、モバイル・コンピューティング・デバイスの一態様のアーキテクチャを示すブロック図である。すなわち、モバイル・コンピューティング・デバイス800は、幾つかの態様を実装するシステム(例えば、アーキテクチャ)802を組み込むことができる。一実施形態では、システム802は、1つ以上のアプリケーション(例えば、ブラウザ、電子メール、カレンダ、コンタクト・マネージャ、メッセージング・クライアント、ゲーム、およびメディア・クライアント/プレーヤ)を起動する性能を有する「スマートフォン」として実装される。幾らかの態様では、システム802は、統合パーソナル・デジタル・アシスタント(PDA)およびワイヤレス・フォンのようなコンピューティング・デバイスとして統合される。
【0068】
[0078] 1つ以上のアプリケーション・プログラム866は、メモリ862にロードされ、オペレーティング・システム864上で起動し、またはオペレーティング・システム864に付随して起動する。アプリケーション・プログラムの例には、通話ダイヤラ・プログラム、電子メール・プログラム、個人情報管理(PIM)プログラム、ワード・プロセシング・プログラム、スプレッドシート・プログラム、インターネット・ブラウザ・プログラム、メッセージング・プログラム等が含まれる。システム802はまた、メモリ862内に不揮発性ストレージ領域868を含む。不揮発性ストレージ領域868は、システム802の電源が切られた場合に損失されてはならない永続的な情報を格納するのに使用される。アプリケーション・プログラム866は、電子メールまたは電子メールアプリケーションによって使用される他のメッセージ等のような情報を使用して、不揮発性ストレージ領域868に格納する。同期アプリケーション(不図示)はまたシステム802上に常駐する。また、ホスト・コンピュータ上に常駐する対応の同期アプリケーションと対話するようにプログラムされ、不揮発性ストレージ領域868に格納された情報を、ホスト・コンピュータに格納されている対応の情報と同期して維持することができる。なお、他のアプリケーションがメモリ862にロードされ、モバイル・コンピューティング・デバイス800で起動され、webアプリケーション(例えば、ノンス生成器211、ノンス検証器213、アプリケーション通信マネージャ215、および/またはUXコンポーネント217等)を介してbotユーザを自動的に認証するための命令を含むことが認められて然るべきである。
【0069】
[0079] システム802は電源870を有し、1つ以上のバッテリとして実装される。電源870は更に、ACアダプタ、または電池を補充または再充電する電力ドッキング・クレードルのような外部電源を含んでもよい。システム802はまた、無線周波数通信を送信および受信する機能を実行する無線インタフェース・レイヤ872を含む。無線インタフェース・レイヤ872は、通信キャリアまたはサービス・プロバイダを介して、システム802と「外界」との間の無線接続性を促進にする。無線インタフェース・レイヤ872との間での送受信は、オペレーティング・システム864の制御の下で実施される。言い換えれば、無線インタフェース・レイヤ872によって受信される通信は、オペレーティング・システム864を介してアプリケーション・プログラム866に向けて伝播される。その逆もまた同様である。
【0070】
[0080] 視覚インジケータ820が使用されて視覚通知を提供することができ、および/または、オーディオ・インタフェース874が使用されて、オーディオ・トランスデューサ825(例えば、
図8Aに示されるオーディオ・トランスデューサ825)を介して可聴通知を作成することができる。図示された実施形態では、視覚インジケータ820は発光ダイオード(LED)であり、オーディオ・トランスデューサ825はスピーカである。これらのデバイスは、電源870に直接結合される。その結果、活性化された時には、バッテリ電力を節約するためにプロセッサ860および他のコンポーネントがシャットダウンした場合でも、通知メカニズムによって指示された期間にわたりオン状態を維持することができる。LEDは、ユーザがデバイスの電源オン状態を示すためのアクションを行うまで、無期限にオンのままとなるようにプログラムされる。オーディオ・インタフェース874が使用されて、可聴信号をユーザに供給することができ、また、可聴信号をユーザから受け取ることができる。例えば、オーディオ・トランスデューサ825に結合されていることに加えて、オーディオ・インタフェース874はまた、可聴入力を受け取るためにマイクロフォンに結合されて、その結果、電話での会話を促進することができる。本開示の実施形態によれば、マイクロフォンはまた、これより次に説明するように、通知の制御を促進にするオーディオ・センサとしても機能してもよい。システム802は更に、周辺機器デバイス830(例えば、オンボード・カメラ)の動作によって、静止画像、ビデオ・ストリーム等を記録することを可能にするビデオ・インタフェース876を含む。
【0071】
[0081] システム802を実装するモバイル・コンピューティング・デバイス800は、追加の特徴または機能を有してもよい。例えば、モバイル・コンピューティング・デバイス800はまた、磁気ディスク、光ディスク、またはテープのような付加的な(取り外し可能および/または取り外し不能な)データ・ストレージ・デバイスを含んでもよい。このような付加的なストレージは、
図8Bに不揮発性ストレージ領域868によって示されている。
【0072】
[0082] モバイル・コンピューティング・デバイス800によって生成またはキャプチャされ、システム802を介して格納されるデータ/情報は、先に説明したように、モバイル・コンピューティング・デバイス800上にローカルに格納されてもよい。或いは、無線インタフェース・レイヤ872を介して、またはモバイル・コンピューティング・デバイス800とモバイル・コンピューティング・デバイス800に付随する別個のコンピューティング・デバイス(例えば、インターネットのような分散コンピューティング・ネットワークのサーバ・コンピュータ)との間の有線接続を介して、データは、デバイスによってアクセスされる任意の数のストレージ媒体上に格納されてもよい。なお、このようなデータ/情報は、無線インタフェース・レイヤ872を介して、または分散コンピューティング・ネットワークを介して、モバイル・コンピューティング・デバイス800を介してアクセスされることが認められて然るべきである。同様に、このようなデータ/情報は、電子メールおよび共同データ/情報共有システムを含む、周知のデータ/情報転送およびストレージ手段に従って、ストレージおよび使用のためにコンピューティング・デバイス間で容易に転送されてもよい。
【0073】
[0083] なお、
図8Aおよび
図8Bは、本方法およびシステムを例示する目的で説明され、ステップの特定のシーケンス、またはハードウェア若しくはソフトウェア・コンポーネントの特定の組み合わせに本開示を限定することを意図するものではないことが認められて然るべきである。
【0074】
[0084]
図9は、先に説明したように、汎用コンピューティング・デバイス904(例えば、パーソナル・コンピュータ)、タブレット型コンピューティング・デバイス906、またはモバイル・コンピューティング・デバイス908のようなリモート・ソースからコンピューティング・システムで受け取ったデータを処理するシステムのアーキテクチャの一態様を示す。サーバ・デバイス902で表示されるコンテンツは、異なる通信チャネルまたは他のストレージ種別に格納される。例えば、ディレクトリ・サービス922、webポータル924、メールボックス・サービス926、インスタント・メッセージング・ストア928、またはソーシャル・ネットワーキング・サービス930を用いて、様々な文書が保存される。認証マネージャ921は、サーバ・デバイス902と通信するクライアントによって採用されてもよく、および/または認証マネージャ920は、サーバ・デバイス902によって採用されてもよい。サーバ・デバイス902は、ネットワーク915を通じて、汎用コンピューティング・デバイス904、タブレット型コンピューティング・デバイス906、および/またはモバイル・コンピューティング・デバイス908(例えば、スマート・フォン)のようなクライアント・コンピューティング・デバイスとの間でデータを供給する。一例では、
図1から
図9に関して先に説明したコンピュータ・システムは、汎用コンピューティング・デバイス904(例えば、パーソナル・コンピュータ)、タブレット型コンピューティング・デバイス906、および/またはモバイル・コンピューティング・デバイス908(例えば、スマート・フォン)で具体化されるのがよい。コンピューティング・デバイスのこれら任意の実施形態は、グラフィック生成システムで事前処理されるか、または受け取ったコンピューティング・システムで事後処理されるのに使用可能なグラフィック・データを受け取ることに加えて、ストア916からコンテンツを取得する。
【0075】
[0085] なお、
図9は、本方法およびシステムを例示する目的で説明され、ステップの特定のシーケンス、またはハードウェア若しくはソフトウェア・コンポーネントの特定の組み合わせに本開示を限定することを意図するものではないことが認められて然るべきである。
【0076】
[0086]
図10は、本明細書で開示される1つ以上の態様を実施する例示のタブレット型コンピューティング・デバイス1000を示している。また、本明細書に説明される態様と機能は、分散システム(例えば、クラウド・ベースのコンピューティング・システム)を通じて動作する。ここでは、アプリケーションの機能、メモリ、データのストレージと抽出、および様々な処理機能が、インターネットまたはイントラネットのような分散コンピューティング・ネットワークを通じて相互にリモートで動作する。様々な種別のユーザ・インタフェースおよび情報は、オンボードのコンピューティング・デバイスを介して、または1つ以上のコンピューティング・デバイスに付随するリモート・ディスプレイ・ユニットを介して表示される。例えば、様々な種別のユーザ・インタフェースおよび情報は、様々な種別のユーザ・インタフェースおよび情報が投影される壁面に表示され、また、これと相互作用される。本発明の実施形態を実施する多数のコンピューティング・システムとの相互作用は、キーストローク入力、タッチ・スクリーン入力、音声または他のオーディオ入力、ジェスチャ入力(関連するコンピューティング・デバイスが、コンピューティング・デバイスの機能を制御するためのユーザ・ジェスチャをキャプチャおよび解釈する検出(例えばカメラ)機能を備える。)等を含む。
【0077】
[0087] なお、
図10は、本方法およびシステムを例示する目的で説明され、ステップの特定のシーケンス、またはハードウェア若しくはソフトウェア・コンポーネントの特定の組み合わせに本開示を限定することを意図するものではないことが認められて然るべきである。
【0078】
[0088] 複数の態様では、webアプリケーションのユーザを認証するプロセッサ実装方法が提供されてもよい。本方法は、webアプリケーションをホストする第1アプリケーションによって、第2アプリケーションにアクセスする要求を受け取るステップを含み、第2アプリケーションは第1アプリケーションからはリモートにある。第2アプリケーションへのアクセスがwebアプリケーションに認証されていないときに、本方法は、第2アプリケーションへのリンクを提供するウィンドウを前記第1アプリケーション内にオープンするステップを含み、当該リンクは第2アプリケーションのユーザ・アクセス資格情報を受け取るように動作可能である。本方法は、更に、第1アプリケーションによって、webアプリケーションに関連付けられるwebサービスからノンスを受け取るステップと、第1アプリケーションによって、不可視のメッセージを介してwebアプリケーションにノンスを送るステップとを含む。送られたノンスと、格納されているノンスのコレクションのうち1つの格納されたノンスとの間の一致に基づいて、本方法はまた、webアプリケーションにおけるユーザの認証を受け取るステップと、webアプリケーションを介して第2アプリケーションにアクセスするために、第1アプリケーション内にウィンドウをオープンするステップとを含む。
【0079】
[0089] 更なる態様では、webアプリケーションのユーザを認証するためのシステムが提供されてもよい。本システムは、少なくとも1つの処理ユニットと、コンピュータ実行可能命令を格納した少なくとも1つのメモリとを備える。コンピュータ実行可能命令が少なくとも1つの処理ユニットによって実行されると、本システムに方法を実行させる。本方法は、webアプリケーションをホストする第1アプリケーションによって、第2アプリケーションにアクセスする要求を受け取るステップを含み、第2アプリケーションが第1アプリケーションからはリモートにある。第2アプリケーションへのアクセスがwebアプリケーションに認証されていないときに、本方法は更に、第2アプリケーションへのリンクを提供するウィンドウを前1アプリケーション内にオープンするステップを含み、当該リンクが第2アプリケーションのユーザ・アクセス資格情報を受け取るように動作可能である。また、本方法は、第1アプリケーションによって、webアプリケーションに関連付けられるwebサービスからノンスを受け取るステップと、第1アプリケーションによって、不可視のメッセージを介してwebアプリケーションにノンスを送るステップとを含む。本方法はまた、送られたノンスが、キャッシュされているノンスと一致することの確認を受け取るステップと、該確認に基づいて、webアプリケーションを介して第2アプリケーションにアクセスするために、第1アプリケーション内にウィンドウをオープンするステップとを含む。
【0080】
[0090] 更なる態様では、コンピュータ・ストレージ媒体が提供されてもよい。コンピュータ・ストレージ媒体はコンピュータ実行可能命令を備える。コンピュータ実行可能命令が処理ユニットによって実行されるときに、webアプリケーションのユーザを認証する方法を実行する。本法は、更に、webアプリケーションをホストする第1アプリケーションによって、第2アプリケーションにアクセスする要求を受け取るステップを含み、第2アプリケーションが前記第1アプリケーションからはリモートにある。第2アプリケーションへのアクセスがwebアプリケーションに認証されていないときに、本法は、更に、第2アプリケーションへのリンクを提供するウィンドウを第1アプリケーション内にオープンするステップを含み、当該リンクが第2アプリケーションのユーザ・アクセス資格情報を受け取るように動作可能である。また、本法は、第1アプリケーションによって、webアプリケーションに関連付けられるwebサービスからノンスを受け取るステップと、第1アプリケーションによって、不可視のメッセージを介してwebアプリケーションにノンスを送るステップとを含む。送られたノンスと、格納されているノンスのコレクションのうち1つの格納されたノンスとの間の一致に基づいて、本方法は、webアプリケーションにおけるユーザの認証を受け取るステップと、webアプリケーションを介して第2アプリケーションにアクセスするために、第1アプリケーション内にウィンドウをオープンするステップとを含む。
【0081】
[0091] 本明細書で説明される本開示の実施形態は、1つ以上のコンピュータ・システムの論理ステップとして実装される。本開示の論理動作は、(1)1つ以上のコンピュータ・システムで実施する一連のプロセッサ実装ステップとして、また、(2)1つ以上のコンピュータ・システム内の相互接続されたマシンまたは回路モジュールとして実装される。実装は選択の問題であり、本開示を実装するコンピュータ・システムのパフォーマンス要件に依存する。したがって、本明細書で説明される本開示の実施形態を構成する論理動作は、動作、ステップ、オブジェクト、またはモジュールとして広く称される。更に、明示的に別の方法で特許請求され、または特許請求の範囲の文言によって特定の順序が本質的に必要とされない限り、論理演算は任意の順序で実行されることが理解されるべきである。
【0082】
[0092] 上記の仕様、例、およびデータは、本開示の例示の実施形態の構造および使用についての完全な説明を提供する。本開示の多くの実施形態は、本開示の主旨および範囲から逸脱することなく作成することができるので、本開示は以降に添付される特許請求の範囲に属する。また、異なる実施形態の構造的特徴は、特許請求の範囲の記載から逸脱することなく、更に別の実施形態で組み合わされてもよい。