(57)【要約】ｗｅｂアプリケーションのユーザをセキュアに認証するシステムおよび方法が提供される。例えば、ユーザは、チャット・アプリケーションのような第１アプリケーション内からｂｏｔを利用することができる。ユーザは、第２アプリケーション（例えば、ソーシャル・ネットワーキング・アプリケーション）へのアクセスをｂｏｔに要求する。第２アプリケーションは第１アプリケーションとはリモートにある。ｂｏｔが認証を有しない場合、ｂｏｔは、ユーザを第２アプリケーションのｗｅｂページにリダイレクトする。ここでは、ユーザはログイン資格情報を入力する。検証の後、第２アプリケーションはアクセス・トークンを、ｂｏｔに関連付けられるｗｅｂページに供給する。ｂｏｔユーザを認証するために、ｂｏｔ ｗｅｂページはノンスを生成およびキャッシュする。ノンスは第１アプリケーションに戻されるように送信され、次いで、ｂｏｔに送信される。次いで、ｂｏｔは、受け取ったノンスを、キャッシュされているノンスと比較する。ノンスが一致する場合に、ユーザはセキュアに認証される。【選択図】図３
2020520009.tif 000002
【特許請求の範囲】
【請求項１】
ｗｅｂアプリケーションのユーザを認証するプロセッサ実装方法であって、
ｗｅｂアプリケーションをホストする第１アプリケーションによって、第２アプリケーションにアクセスする要求を受け取るステップであって、前記第２アプリケーションが前記第１アプリケーションからはリモートにある、ステップと、
前記第２アプリケーションへのアクセスが前記ｗｅｂアプリケーションに認証されていないときに、前記第２アプリケーションへのリンクを提供するウィンドウを前記第１アプリケーション内にオープンするステップであって、前記リンクが前記第２アプリケーションのユーザ・アクセス資格情報を受け取るように動作可能である、ステップと、
前記第１アプリケーションによって、前記ｗｅｂアプリケーションに関連付けられるｗｅｂサービスからノンスを受け取るステップと、
前記第１アプリケーションによって、不可視のメッセージを介して前記ｗｅｂアプリケーションに前記ノンスを送るステップと、
前記送られたノンスと、格納されているノンスのコレクションのうち１つの格納されたノンスとの間の一致に基づいて、前記ｗｅｂアプリケーションにおけるユーザの認証を受け取るステップと、
前記ｗｅｂアプリケーションを介して前記第２アプリケーションにアクセスするために、前記第１アプリケーション内にウィンドウをオープンするステップと、
を含む、プロセッサ実装方法。
【請求項２】
請求項１記載のプロセッサ実装方法であって、更に、
前記ｗｅｂサービスから前記第２アプリケーションのアクセス・トークンを抽出するステップと、
前記第２アプリケーションにアクセスするステップと、
を含む、プロセッサ実装方法。
【請求項３】
請求項２記載のプロセッサ実装方法において、前記第２アプリケーションの前記アクセス・トークンが前記第１アプリケーションのユーザ識別子に関連付けられる、プロセッサ実装方法。
【請求項４】
請求項３記載のプロセッサ実装方法であって、更に、
前記第２アプリケーションにアクセスするために、前記ｗｅｂアプリケーションから第２要求を受け取るステップと、
前記第１アプリケーションのユーザ識別子に関連付けられる前記第２アプリケーションのアクセス・トークンに基づいて、前記ｗｅｂアプリケーションを介して前記第２アプリケーションにアクセスするために、前記第２アプリケーション内に前記ウィンドウをオープンするステップと
を含む、プロセッサ実装方法。
【請求項５】
請求項１記載のプロセッサ実装方法において、前記ｗｅｂアプリケーションがチャットｂｏｔであり、前記第１アプリケーションがチャット・アプリケーションである、プロセッサ実装方法。
【請求項６】
請求項１記載のプロセッサ実装方法において、前記ｗｅｂアプリケーションがｂｏｔであり、前記第１アプリケーションがメッセージング・アプリケーションである、プロセッサ実装方法。
【請求項７】
請求項１記載のプロセッサ実装方法において、前記第２アプリケーションがソーシャル・ネットワーキング・アプリケーションである、プロセッサ実装方法。
【請求項８】
ｗｅｂアプリケーションのユーザを認証するシステムであって、
少なくとも１つの処理ユニットと、
コンピュータ実行可能命令を格納した少なくとも１つのメモリであって、前記コンピュータ実行可能命令が前記少なくとも１つの処理ユニットによって実行されると、当該システムに、
ｗｅｂアプリケーションをホストする第１アプリケーションによって、第２アプリケーションにアクセスする要求を受け取らせ、前記第２アプリケーションが前記第１アプリケーションからはリモートにあり、
前記第２アプリケーションへのアクセスが前記ｗｅｂアプリケーションに認証されていないときに、前記第２アプリケーションへのリンクを提供するウィンドウを前記第１アプリケーション内にオープンさせ、前記リンクが前記第２アプリケーションのユーザ・アクセス資格情報を受け取るように動作可能であり、
前記第１アプリケーションによって、前記ｗｅｂアプリケーションに関連付けられるｗｅｂサービスからノンスを受け取らせ、
前記第１アプリケーションによって、不可視のメッセージを介して前記ｗｅｂアプリケーションに前記ノンスを送らせ、
前記送られたノンスが、キャッシュされているノンスと一致することの確認を受け取らせ、
前記確認に基づいて、前記ｗｅｂアプリケーションを介して前記第２アプリケーションにアクセスするために、前記第１アプリケーション内にウィンドウをオープンさせる、
少なくとも１つのメモリと、
を備える、システム。
【請求項９】
請求項８記載のシステムであって、更に、前記送られたノンスが前記キャッシュされているノンスと一致することの前記確認の受け取りに応じて、前記ｗｅｂアプリケーションのユーザを、認証されたものとして識別する、システム。
【請求項１０】
コンピュータ実行可能命令を備えるコンピュータ・ストレージ媒体であって、前記コンピュータ実行可能命令が処理ユニットによって実行されるときに、ｗｅｂアプリケーションのユーザを認証する方法を実行し、前記方法が、
ｗｅｂアプリケーションをホストする第１アプリケーションによって、第２アプリケーションにアクセスする要求を受け取るステップであって、前記第２アプリケーションが前記第１アプリケーションからはリモートにある、ステップと、
前記第２アプリケーションへのアクセスが前記ｗｅｂアプリケーションに認証されていないときに、前記第２アプリケーションへのリンクを提供するウィンドウを前記第１アプリケーション内にオープンするステップであって、前記リンクが前記第２アプリケーションのユーザ・アクセス資格情報を受け取るように動作可能である、ステップと、
前記第１アプリケーションによって、前記ｗｅｂアプリケーションに関連付けられるｗｅｂサービスからノンスを受け取るステップと、
前記第１アプリケーションによって、不可視のメッセージを介して前記ｗｅｂアプリケーションに前記ノンスを送るステップと、
前記送られたノンスと、格納されているノンスのコレクションのうち１つの格納されたノンスとの間の一致に基づいて、前記ｗｅｂアプリケーションにおけるユーザの認証を受け取るステップと、
前記ｗｅｂアプリケーションを介して前記第２アプリケーションにアクセスするために、前記第１アプリケーション内にウィンドウをオープンするステップと、
を含む、コンピュータ・ストレージ媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  ログイン体験の多くはセキュアなｗｅｂサイトを介して実行される。これは、アイデンティティ・プロバイダ（ＩｄＰ）によって厳密に制御される。ｂｏｔはチャット・アプリ内での会話体験であるので、通例は、ｂｏｔ自体がユーザを認証するのは不格好であるし、また、ぎこちないものとなる。したがって、チャット・アプリケーション内でポジティブなユーザ体験を維持するために、セキュアな接続を維持しつつ、認証プロセスを更に合理化してエレガントなものにすべきである。
【０００２】
[0002]  ｗｅｂアプリケーション（例えば、フェイスブック（登録商標）やグーグル（登録商標））にサイン・インするときに、ユーザはＯＡｕｔｈ２．０のフローを通過する。これは、ほとんどのアプリケーション種別において認証または許可を実行するために使用されている。ＯＡｕｔｈ２．０のフローは、ユーザ・アカウントをホストするサービスにユーザ認証を委託することにより、また、サード・パーティ・アプリケーションがユーザ・アカウントにアクセスするのを許可することによって機能する。通例は、ｗｅｂブラウザに対しては上手く機能するものの、ｂｏｔでは扱いにくいものとなっている。ＯＡｕｔｈ２．０は、当初、サーバ・サイドではなくクライアント・サイドでのリダイレクトのために構築された。つまり、ｂｏｔユーザを認証するためには、ユーザによって、ｂｏｔチャネルおよびサード・パーティ・サーバの間をブリッジすることになる数字および文字の長いストリング（つまり、識別番号）をコピーすることが要求される。ユーザはこの大規模な識別番号をコピーおよびペーストすることが要求されるので、現在のｂｏｔ認証プロトコルは不格好である。そして、ユーザ体験性を著しく減少させ、ネットワーク・トラフィックを増大させる。
【０００３】
[0003]  これらおよび他の一般的な考慮事項に関し、複数の例示の態様、システムおよび方法について説明してきた。また、比較的特化される問題について検討してきたが、例は背景技術において特定される特化された問題を解決するのに限定してはならないことが理解されるべきである。
【０００４】
概要
[0004]  ｂｏｔを使用してユーザの資格情報(credential)を認証するほとんどのログイン体験は、不格好であると共に洗練されていない。例えば、ユーザがチャットｂｏｔと通信しており、そのｂｏｔがサード・パーティ・サービスのユーザ・リソース（例えば、ユーザのＩｎｓｔａｇｒａｍ（登録商標）のデータ）にアクセスする必要がある場合を想定する。ｂｏｔはそのデータにアクセスするために、ユーザはＩｎｓｔａｇｒａｍ（登録商標）で認証しなければならず、また、それら資格情報をセキュアな手法でｂｏｔに渡さなければならない。しかしながら、このアクションは、Ｉｎｓｔａｇｒａｍ（登録商標）でのログインをホストするｗｅｂブラウザと、ｂｏｔをホストするメッセージング・アプリケーションとの間の信頼境界線を越える。従来のｗｅｂアプリケーションおよびモバイル・アプリケーションにおいて、このことはＯＡｕｔｈ２．０フローを介することで達成され、ここでは、ユーザ・データのアクセスをアプリケーションそれ自体に委任している。しなしながら、ｂｏｔを用いると、この体験が劣り、完全にセキュアなものとはならない。
【０００５】
[0005]  この劣後した経験およびセキュリティの欠如の観点から、本明細書において、改善されたバージョンの認証フローが開示される。例えば、ユーザが第１アプリケーション（例えば、メッセージング・アプリケーションまたはチャット・アプリケーション）と対話しているものとする。複数の態様では、ｗｅｂアプリケーションは第１アプリケーションからアクセスされてもよい。ｗｅｂアプリケーションは、第１アプリケーション内においてアクセスされる任意のサード・パーティのｗｅｂアプリケーション（例えば、サード・パーティのチャットｂｏｔ）としてよい。複数の態様では、ユーザは、第１アプリケーションとはリモートにある第２アプリケーション（例えば、Ｉｎｓｔａｇｒａｍ（登録商標）、Ｓｎａｐ Ｃｈａｔ（登録商標）、Ｇｏｏｇｌｅ（登録商標）、Ｆａｃｅｂｏｏｋ（登録商標）等のようなサード・パーティのソーシャル・ネットワーキング・アプリケーション）にアクセスするようにｗｅｂアプリケーションに要求してもよい。次いで、ｂｏｔは、ユーザが第２アプリケーションへのアクセスについて認証されているかを検査する。ユーザがまだ認証されていない場合に、ｂｏｔはユーザにログインＵＲＬを供給する。ログインＵＲＬは、第２アプリケーションのユーザ資格情報を入力するために、ブラウザ・ウィンドウをオープンさせる。ユーザ資格情報を検証すると、次いで、第２アプリケーションは、ｗｅｂアプリケーションに関連付けられるｗｅｂサービス（例えば、ｂｏｔ開発者が所有するｗｅｂサイト）に戻すようにアクセス・トークンを渡す。
【０００６】
[0006]  しかしながら、この時点では、ｗｅｂサービスは、第２アプリケーションのユーザ資格情報を入力したユーザが、第１アプリケーション内においてｗｅｂアプリケーション（例えば、ｂｏｔ）にアクセスしている同一のユーザであることを検証することはできない。この場合、ｗｅｂサービスは、一意の任意の値であるノンスを生成する。次いで、ｗｅｂサービスは、第１アプリケーションのソフトウェア開発キット（ＳＤＫ）をコールして、ノンスを第１アプリケーション（例えば、メッセージング・アプリケーション）に渡す。複数の態様では、ｗｅｂサービスはまた、ノンスをキャッシュに格納する。第１アプリケーションがノンスを受け取った後、次いで、第１アプリケーションはセキュアなメッセージ（これは、ユーザには不可視である。）をｗｅｂアプリケーションに戻すよう再送信する。このメッセージは、第１アプリケーションのためのユーザＩＤを含む。次いで、ｗｅｂアプリケーション（例えば、ｂｏｔ）は、ノンスを受け取り、そのキャッシュ（ｗｅｂサービスによってコンパイルされた、格納されているノンスのコレクションを含んでいる。）を検査して、格納されているノンスが、メッセージ内で受け取ったノンスと一致することを確証する。複数の態様では、ｗｅｂアプリケーションは、受け取ったノンスと、ユーザＩＤにインデックス付けされた、格納されているノンスとを一致させてもよく、或いは、受け取ったノンスを、格納されているノンスのコレクションのうちの１つの格納されているノンスとの一致に単に基づいてもよい（格納されているノンスは、定義により、それぞれ一意である。）。
【０００７】
[0007]  この手法で認証フローを実装することにより、ｗｅｂサービスから第１アプリケーション（例えば、メッセージング・アプリケーション）に戻されるようにノンスが送信され、次いで、ノンスは、検証のために第１アプリケーションからｗｅｂアプリケーションにセキュアかつ不可視なように送られる。このようにして、ユーザは、任意の付加的なアクションを実行する必要なく認証され、その結果、優れたユーザ体験を得ると共に、開発者の一部に追加の作業を生じさせない。
【０００８】
[0008]  本摘要は、以下の詳細な説明で更に説明する概念の選択を、簡略化した形態で導入するために提供される。本摘要は、特許請求の範囲に記載の主題の主要な特徴または本質的な特徴を特定することを意図するのではなく、特許請求の範囲の記載の主題の範囲を限定するために用いられることを意図するものでもない。
【図面の簡単な説明】
【０００９】
【図１】図１は、ｗｅｂアプリケーションを介してユーザをセキュアに認証するための例示の分散システムを示す。
【図２】図２は、ｗｅｂアプリケーションを介してユーザをセキュアに認証するための通信システムを示す。
【図３】図３は、ｗｅｂアプリケーションを介してユーザをセキュアに認証する方法を示すブロック図である。
【図４Ａ】図４Ａは、チャット・アプリケーション内のチャットｂｏｔに関連付けられる例示のインタフェースを示す。
【図４Ｂ】図４Ｂは、認証プロンプトを表示するチャット・アプリケーション内のチャットｂｏｔに関連付けられる例示のインタフェースの例を示す。
【図５】図５は、チャット・アプリケーションがサード・パーティ・アプリケーション・サーバ（複数可）およびサード・パーティｂｏｔウェブサイト・サーバ（複数可）と通信する手法の例を示す。
【図６】図６は、ｗｅｂアプリケーションを介してｂｏｔユーザの認証に成功することを示す。
【図７】図７は、本開示の複数の態様が実施されるコンピューティング・デバイスの例示の物理コンポーネントを示すブロック図である。
【図８Ａ】図８Ａは、本開示の複数の態様が実施されるモバイル・コンピューティング・デバイスの簡略ブロック図である。
【図８Ｂ】図８Ｂは、本開示の複数の態様が実施されるモバイル・コンピューティング・デバイスの簡略ブロック図である。
【図９】図９は、本開示の複数の態様が実施される分散コンピューティング・システムの簡略化されたブロック図である。
【図１０】図１０は、本開示の１つ以上の態様を実行するためのタブレット型コンピューティング・デバイスを示す。
【発明を実施するための形態】
【００１０】
[0020]  以下の詳細な説明では、添付した図面への参照が行われる。添付の図面は、本明細書の一部を形成し、例示適または特定の例として示されている。これら複数の態様は組み合わされてもよく、他の態様が利用されてもよく、また、構造的な変更が本開示から逸脱することなくなされてもよい。例示の態様は、方法、システム、またはデバイスとして実施される。すなわち、例示の態様は、ハードウェア実装、ソフトウェア実装、またはソフトウェアおよびハードウェアの態様の組み合わせの実装の形態とすることができる。したがって、以下の詳細な説明は、限定的な意味で解釈されてはならず、本開示の範囲は添付の特許請求の範囲およびそれらの均等物によって規定されるものである。
【００１１】
[0021]  ユーザは、ｗｅｂアプリケーションの内部でｂｏｔとの対話を試行するときに、しばしば、不格好なログイン体験の負担に直面することがある。例えば、先に詳述したように、ユーザは、メッセージング・アプリケーション内でｂｏｔにメッセージを送る。幾らかの場合では、ユーザは、サード・パーティ・アプリケーションのアカウント（例えば、ユーザのＩｎｓｔａｇｒａｍ（登録商標）のアカウント）に関連付けられた情報へのアクセスをｂｏｔに要求することがある。ｂｏｔは、メッセージング・アプリケーションからのユーザの識別情報（例えば、ユーザＩＤ）がサード・パーティ・アプリケーション（例えば、Ｉｎｓｔａｇｒａｍ（登録商標））で認証されているかについて検査する。ユーザＩＤが認証されない場合、ｂｏｔはログインＵＲＬをユーザに送信する。次いで、ユーザはログインＵＲＬをクリックし、その結果、サード・パーティ・アプリケーションに関連付けられたブラウザ・ウィンドウをオープンすることができる。次いで、ユーザは、サード・パーティ・アプリケーションに関連付けられたユーザのアカウント（例えば、ユーザのＩｎｓｔａｇｒａｍ（登録商標））にログインする。ユーザの資格情報を検証すると、サード・パーティ・アプリケーションは、ｂｏｔに関連付けられたｗｅｂサービス（例えば、サード・パーティのｂｏｔ開発者が所有するｗｅｂサイト）にアクセス・トークンを渡す。しかしながら、ｗｅｂサービスがサード・パーティ・アプリケーションからアクセス・トークンを受け取る一方で、現在のソリューションでは、Ｉｎｓｔａｇｒａｍ（登録商標）にログインするためにｗｅｂブラウザをオープンしたユーザの識別情報が、メッセージング・アプリケーション内においてｂｏｔを利用しているユーザと同一であることをセキュアに保証することができない。
その結果、ユーザは伝統的に、ｂｏｔによって、直感的ではなくぎこちない認証プロセスを経験している。
【００１２】
[0022]  本開示は、ユーザがｗｅｂアプリケーションに対して（または、ｗｅｂアプリケーションに関連付けられたｗｅｂサービスに対して）彼／彼女自身を手動で認証することが要求されないソリューションについて説明するものである。代替では、先に説明したように、ｂｏｔ ｗｅｂサービスによってノンスが自動的に生成または格納される。次いで、ノンスをメッセージング・アプリケーションに送信する。次いで、メッセージング・アプリケーションは、ノンスをｗｅｂアプリケーション（例えばｂｏｔ）に不可視で送信する。受け取ったノンスが、（例えば、ｂｏｔ ｗｅｂサービスによって格納されて）キャッシュ内に格納されているノンスと一致するかどうかを判定することによって、ｂｏｔは受け取ったノンスを検証する。受け取ったノンスが、格納されているノンスと一致する場合には、ユーザが認証されると共に、ユーザはサード・パーティ・アプリケーション（例えばＩｎｓｔａｇｒａｍ（登録商標））へのアクセスが許可される。場合によっては、ｗｅｂアプリケーションを介したサード・パーティ・アプリケーションへの将来のアクセスのために、アクセス・トークンがユーザＩＤに関連付けられることがある。
【００１３】
[0023]  開発者およびユーザが、ｗｅｂアプリケーションに対してユーザを認証するための追加作業を発生させないだけでなく、ユーザ体験がまた大幅に向上する。更に、本明細書に開示されるソリューションは、多様な動作環境上における多数のデバイスにわたって実装することができ、ユーザ体験を更に改善する。例えば、ラップトップ・コンピュータのメッセージング・アプリケーション内部でユーザがｂｏｔによってセキュアに認証される場合に、ユーザは、モバイル・デバイス上で起動している同一のメッセージング・アプリケーション内部でｂｏｔとの後続のセキュアな接続を確立することができる。
【００１４】
[0024]  図１は、ｗｅｂアプリケーションを介してｂｏｔユーザをセキュアに認証する例示の分散システム１００を示している。
【００１５】
[0025]  サード・パーティ・アプリケーション（例えば、Ｉｎｓｔａｇｒａｍ（登録商標）、Ｆａｃｅｂｏｏｋ（登録商標）、Ｓｎａｐｃｈａｔ（登録商標）等のようなソーシャル・ネットワーキング・アプリケーション）のためのユーザ資格情報をメッセージング・アプリケーション（例えば、チャット・アプリケーション）内でチャットｂｏｔに対しセキュアに認証するシステム１００が提供される。このようなシステムは電子デバイス上で起動される。電子デバイスは、これに限定されないが、モバイル・フォン１０２、タブレット１０４、およびパーソナル・コンピュータ１０６のようなクライアント・デバイスを含む。開示されるシステムは、サード・パーティ・アプリケーションに関連付けられる、デバイス・ログイン資格情報を受け取る。システムは、これらログイン資格情報を多数のデバイスにわたって共有し、ユーザにとってログイン・プロセスがシームレスであることを確証にすることができる。
【００１６】
[0026]  一例では、ユーザは、メッセージング・アプリケーション（例えば、チャット・アプリケーション、すなわち「チャット・アプリ(ChatApp)」）内にホストされるチャットｂｏｔを利用する。ユーザに関連付けられた如何なるデバイス（例えば、クライアント・デバイス１０２、１０４、１０６を介して、ユーザはメッセージング・アプリケーションにアクセスする。デバイスは、メッセージング・アプリケーションをローカルで実行し、および／または、リモートで（例えば、サーバ１１６上で）実行するメッセージング・アプリケーションに（例えば、ブラウザを介して）アクセスする。複数の態様では、サード・パーティのチャットｂｏｔ（以下、「ｂｏｔ」という。）は、１つ以上の他のサーバ（例えば、サーバ１１８）上で実行するｗｅｂサービスに関連付けられてもよい。更なる複数の態様では、ｂｏｔは、メッセージング・アプリケーションからｂｏｔに渡された識別情報（例えば、ユーザのメッセージングＩＤ）に基づいて、ユーザを認証してもよい。幾らかの場合では、ユーザは、ユーザに関連付けられたサード・パーティ・アプリケーション（Ｉｎｓｔａｇｒａｍ（登録商標）、Ｆａｃｅｂｏｏｋ（登録商標）、Ｓｎａｐｃｈａｔ（登録商標）等のユーザ・アカウント）にアクセスするようにｂｏｔに要求することがある。複数の態様では、これらサード・パーティ・アプリケーションは、１つ以上の他のサーバ（例えば、サーバ１２０）によってホストされてもよい。しかしながら、このようなサード・パーティ・アプリケーションでユーザＩＤが認証されていない場合には、ｂｏｔは、アクセスを得ることができないことになる。この状況に対して本ソリューションが向けられている。
【００１７】
[0027]  この場合には、メッセージング・アプリケーション内においてｂｏｔは、要求されたサード・パーティ・アプリケーションに関連付けられたログインＵＲＬをユーザに供給する。ログインＵＲＬをアクティブにすると、サード・パーティ・アプリケーションに関連付けられたウィンドウがメッセージング・アプリケーション内にオープンされ、ユーザが、（例えば、ネットワーク１０８を介してサーバ１２０上で）サード・パーティ・アプリケーションにログインすることを可能にする。次いで、サード・パーティ・アプリケーションは、ユーザの資格情報を検証し、アクセス・トークン（または他の認証）を、ｂｏｔに関連付けられた（例えば、サーバ１１８上でホストされる）ｗｅｂサイトに転送する。しかしながら、この場合は、ｂｏｔは、ログインＵＲＬにアクセスしたユーザがメッセージング・アプリケーションを介してｂｏｔにアクセスしているユーザと同一であることを検証することはできないことがある。この事態に対処するために、ｂｏｔ ｗｅｂサイトは、ノンスを生成してメッセージング・アプリケーションに送信し、次いで、不可視のメッセージを介してノンスをｂｏｔに再送信する。次いで、ｂｏｔは、受け取ったノンスを、ｂｏｔ ｗｅｂサイトによりキャッシュに保存された格納済みノンスのインデックスと比較することにより、これを検証することができる。受け取ったノンスが、格納されているノンスと一致する場合は、ユーザが認証され、ｂｏｔはユーザＩＤをサード・パーティ製アプリケーションのアクセス・トークン（または他の認証）に関連付ける。複数の態様では、ユーザＩＤがサード・パーティ・アプリケーションによって一旦認証されると、引き続き、（ユーザの同一デバイスまたは別のデバイス上で起動する）メッセージング・アプリケーション内のｂｏｔがサード・パーティ・アプリケーションにアクセスしてもよい。
【００１８】
[0028]  本明細書で開示されるシステムに関連付けられるアクセス・トークンおよびノンスは、ローカルにおよび／またはリモートに格納される。電子デバイスは、ローカル・データベース１１０、１１２または１１４に格納されたローカル・データ、サーバ１１６、１１８および１２０に格納されたリモート・データベース、またはこれらの両方の組み合わせを利用する。例えば、モバイル・フォン１０２は、ローカル・データベース１１０、およびネットワーク１０８（複数可）を介してアクセス・サーバ１１６、１１８および／または１２０を利用して、ｗｅｂアプリケーションを介してｂｏｔユーザをセキュアに認証することができる。他の例示の態様では、タブレット１０４は、ローカル・データベース１１２およびネットワーク１０８（複数可）を利用して、ｂｏｔユーザをセキュアに認証することができ、同様に、関連付けられる任意のアクセス・トークンまたはノンス値を格納および送信することができる。
【００１９】
[0029]  なお、図１に関連して説明してきた様々な方法、デバイス、コンポーネント等は、説明した特定コンポーネントによって実行されているシステム１００に限定することを意図するものではないことが認められて然るべきである。したがって、追加のトポロジ構成を使用して、本明細書の方法およびシステムを実施してもよく、並びに／または、説明したコンポーネントは、本明細書に開示される方法およびシステムから逸脱することなく除外されてもよい。
【００２０】
[0030]  図２は、ｗｅｂアプリケーションを介してｂｏｔユーザをセキュアに認証するための通信システム２００を示している。
【００２１】
[0031]  システム２００は、初期接続プロセスで始まる。初期接続プロセスは、電子デバイス２０２のような電子デバイスと関与する。電子デバイス２０２を使用して、メッセージング・アプリケーション（例えば、ＷｈａｔｓＡｐｐ（登録商標）、Ｆａｃｅｂｏｏｋ（登録商標）メッセンジャ、ＷｅＣｈａｔ（登録商標）、Ｓｌａｃｋ（登録商標）等のようなチャット・アプリケーション）のようなアプリケーションを起動することができる。ｂｏｔは、当該メッセージング・アプリケーション内でアクセスすることができる。ユーザは、ユーザに関連付けられたサード・パーティ・アプリケーションにアクセスするようｂｏｔに要求する。次いで、ｂｏｔは、メッセージング・アプリケーションからの識別情報（例えば、ユーザＩＤ）が、要求されたサード・パーティ・アプリケーション（例えば、Ｉｎｓｔａｇｒａｍ（登録商標））によって認証されているかについて検査する。その場合に、ｂｏｔは、要求されたサード・パーティ・アプリケーションにアクセスするように進む。そうでない場合には、ｂｏｔは（メッセージング・アプリケーションを介して）サード・パーティ・アプリケーションの（サーバ２０６上の）ログインＵＲＬにユーザをリダイレクトすることにより、ログイン資格情報の入力をユーザに指示する。ｂｏｔによって提供されたＵＲＬをユーザがクリックすると、メッセージング・アプリケーション内のウィンドウによって、サード・パーティのアカウントに関連付けられたログイン資格情報をユーザが入力するのを可能にする。メッセージング・アプリケーション内のウィンドウは電子デバイス２０２上に表示され、サード・パーティ・アカウントに関連付けられたｗｅｂページは、ネットワーク２０４を通じてサーバ２０６によって電子デバイス２０２に供給される。ログイン資格情報は、サーバ２０６上のサード・パーティのアカウントについて格納されたログイン資格情報と比較され、引き続き、例えばサーバ２０８上のｂｏｔに関連付けられたｗｅｂページにアクセス・トークンを通信する。
【００２２】
[0032]  しかしながら、この時点では、メッセージング・アプリケーション内のｂｏｔは、ログインＵＲＬにアクセスしたユーザがメッセージング・アプリケーション内でｂｏｔと通信しているユーザと同一であることを検証することができない場合がある。したがって、（サーバ２０８上の）ｂｏｔ ｗｅｂページは、任意の一意の番号であるノンスを生成する。また、ｂｏｔによってアクセス可能なキャッシュにノンスを格納し、メッセージング・アプリケーションに付随するソフトウェア開発キット（ＳＤＫ）にノンスを渡す。すなわち、サーバ２０８上で起動するｂｏｔ ｗｅｂページは、電子デバイス２０２上でアクセスされるメッセージング・アプリケーション（例えば、ローカルに、或いは、ネットワーク２０４（複数可）上のブラウザを介してリモートの何れかで起動するメッセージング・アプリケーション）にノンスを渡す。メッセージング・アプリケーションは、ノンスを受け取り、次いで、サイレント・メッセージを介してノンスをメッセージング・アプリケーション内でｂｏｔに再送信する。複数の態様では、「サイレント」すなわち「不可視」のメッセージとは、ユーザに見ることができるものではないメッセージ、および／またはユーザによって手動で実装されないメッセージのこととしてもよい。ｂｏｔは、格納されているノンスが、受け取ったノンスと一致するかについてキャッシュを検査する。ｂｏｔキャッシュに保存したノンスとメッセージから受信したノンスとが一致する場合には、ｂｏｔはセキュアに認証されて、（例えば、サーバ２０６上の）サード・パーティのログインＵＲＬから、（例えば、サーバ２０８上の）ｂｏｔ ｗｅｂサイトに渡されるアクセス・トークンを用いて、サード・パーティ・アプリケーションにアクセスすることができる。
ｂｏｔおよび／またはメッセージング・アプリケーションは、更に、サード・パーティ・アプリケーションのアクセス・トークンを、メッセージング・アプリケーションのユーザＩＤに関連付ける。
【００２３】
[0033]  幾らかの例示の態様では、ｂｏｔ ｗｅｂページ・サーバ２０８は、ネットワーク２０４（複数可）を介して電子デバイス２０２と通信してもよい。情報はまた、ネットワーク２０４（複数可）を介して、サード・パーティ・アプリケーション・サーバ２０６からｂｏｔ ｗｅｂページ・サーバ２０８に送信される。電子デバイス２０２、サーバ２０６、および／またはサーバ２０８の間で情報を通信するために、ネットワーク２０４（複数可）には、１つ以上のローカル・エリア・ネットワーク（例えば、ＬＡＮ）および／またはワイド・エリア・ネットワーク（複数可）（例えば、ＷＡＮ）、プライベート・ネットワーク（例えば、イントラネット）、および／またはパブリック・ネットワーク（例えば、インターネット）の任意の組み合わせが含まれる。
【００２４】
[0034]  なお、図２に関して説明された様々な方法、デバイス、コンポーネント等は、説明される特定のコンポーネントによって実行されているシステム２００に限定することを意図するものでないことが認められて然るべきである。したがって、追加のトポロジ構成を使用して、本明細書の方法およびシステムを実施してもよく、並びに／または、説明したコンポーネントは、本明細書に開示される方法およびシステムから逸脱することなく除外されてもよい。
【００２５】
[0035]  図３は、ｗｅｂアプリケーションを介してｂｏｔユーザをセキュアに認証する方法３００を示すブロック図である。
【００２６】
[0036]  図示されているように、システム３００は要求受取動作３０２によって開始する。複数の態様では、ユーザは、メッセージング・アプリケーション（例えば、チャット・アプリ）内でチャットｂｏｔと通信してもよい。幾らかの場合では、ユーザがｂｏｔにアクセスするために、メッセージング・アプリケーションは、ユーザ識別情報（例えば、ユーザＩＤ）を、ｂｏｔをホストするｗｅｂサイトに渡すことがある。例えば、（例えば、１つ以上のサーバ上で実行する）ｂｏｔ ｗｅｂサイトは、サービスとしてのチャットｂｏｔを様々なメッセージング・アプリケーションに提供する。更なる態様では、ｂｏｔはメッセージング・アプリケーション内でホストされてもよいが、ｂｏｔ ｗｅｂサイト上で、および／またはｂｏｔ ｗｅｂサイトと直接通信して実行されてもよい。なお、本方法は、メッセージング・アプリケーション内でアクセスされる「チャットｂｏｔ」に関して説明される一方で、別のアプリケーション内の任意のｗｅｂアプリケーションは、本明細書で説明される方法に従って同様にユーザを認証することが認められて然るべきである。
【００２７】
[0037]  ユーザ要求受取動作３０２では、ｂｏｔは、メッセージング・アプリケーションを介して、Ｉｎｓｔａｇｒａｍ（登録商標）、Ｓｎａｐ Ｃｈａｔ（登録商標）、Ｆａｃｅｂｏｏｋ（登録商標）のようなサード・パーティ・アプリケーションからユーザ情報にアクセスする要求を受け取る。
【００２８】
[0038]  認証判定動作３０４では、ｂｏｔは、メッセージング・アプリケーションのユーザ識別子（例えば、ユーザＩＤ）が、サード・パーティ・アプリケーション（例えば、Ｉｎｓｔａｇｒａｍ（登録商標））のユーザのアカウントへのアクセスについて認証されているかを判定する。ユーザＩＤが既に認証されている場合は、ｂｏｔは、認証動作３０４から「Ｙｅｓ」を応答し、要求受取動作３０２でメッセージング・アプリケーションに戻り、サード・パーティ・アプリケーションへのアクセスのためにアクセス受取動作３３８に進む。そのアクセスは、アクセス許可動作３３６においてサード・パーティ・アプリケーションによって許可される。幾らかの例示の態様では、ユーザＩＤがサード・パーティ・アプリケーション上のユーザ・アカウントへのアクセスについて認証されているときに、ｂｏｔ（またはメッセージング・アプリケーション）は、サード・パーティ・アカウントが既に認証されていることの通知をユーザに供給してもよい。
【００２９】
[0039]  しかしながら、メッセージング・アプリケーションのユーザＩＤがサード・パーティ・アプリケーションへのアクセスについて尚も認証されていないときは、本方法はアクセス要求動作３０６の受け取りに進む。アクセス要求動作３０６では、サード・パーティ・アプリケーションは、ｂｏｔからアクセスの要求を受け取る。アクセスの要求に応答して、ログイン提供動作３０８では、サード・パーティ・アプリケーションは、ｂｏｔ ｗｅｂサイトに、サード・パーティ・アプリケーションに関連付けられるログインＵＲＬ（例えば、Ｉｎｓｔａｇｒａｍ（登録商標）のログインＵＲＬ）を供給する。ログイン・ホスト動作３１０では、ｂｏｔ ｗｅｂサイトは、ログインＵＲＬをホストし、メッセージング・アプリケーションにログインＵＲＬを供給する。受取／表示動作３１２では、メッセージング・アプリケーションは、ログインＵＲＬを受け取り、ログインＵＲＬをユーザに表示する。入力受取／ウィンドウ・オープン動作３１４では、メッセージング・アプリケーションは、（例えば、ログインＵＲＬでのクリック、タッチ、スワイプ、ホバー等を介して）ユーザ入力を受け取り、メッセージング・アプリケーション内にウィンドウをオープンして、（ホスト動作３１０で）ｂｏｔ ｗｅｂサイトを介して、サード・パーティ・アプリケーションのログインＵＲＬに関連付けられるｗｅｂページへとナビゲートすることができる。様々な態様では、ユーザがログインＵＲＬにナビゲートするときに、メッセージング・アプリケーションとサード・パーティ・アプリケーションとの間で信頼境界線３０１を越えてもよい。
【００３０】
[0040]  ユーザ・ログイン受取／検証動作３１６では、ユーザがログインＵＲＬにアクセスしてユーザの資格情報を入力するときに、サード・パーティ・アプリケーションは、ユーザのアカウントについてのユーザ資格情報を受け取り、それを検証する。例えば、サード・パーティ・アプリケーションは、ユーザ資格情報を、サード・パーティ・アプリケーションを実行する１つ以上のサーバによって保持されるユーザ資格情報のストアと比較する。
【００３１】
[0041]  ユーザ資格情報が検証された場合は、ユーザ・ログイン受取／検証動作３１６で、サード・パーティ・アプリケーションは認証コードを生成し、ｂｏｔ ｗｅｂサイトにアクセス・トークンを渡す（すなわち送る）。複数の態様では、認証コードの有効期限が短くてもよい（例えば１０分）。この場合、承認／要求アクセス・トークン受取動作３１８では、ｂｏｔ ｗｅｂサイトは、サード・パーティ・アプリケーションから認証コードを受け取り、また、より長い寿命を有するアクセス・トークンを要求する。認証コードおよび／または他の適切な判定に基づいて、生成／送信動作３２０では、サード・パーティ・アプリケーションは、アクセス・トークン（ＡＴ）を生成して、ｂｏｔ ｗｅｂサイトに送る。受取動作３２２では、ｂｏｔ ｗｅｂサイトは、アクセス・トークンを受け取る。
【００３２】
[0042]  幾らかの場合では、先に説明したように、メッセージング・アプリケーション内においてｂｏｔにアクセスするために、メッセージング・アプリケーションは、ユーザＩＤをｂｏｔ ｗｅｂサイトに渡すことがある。この場合、ユーザＩＤは、ｂｏｔへのアクセスをｂｏｔ ｗｅｂサイトに要求するユーザを認証してもよい。また、ｂｏｔは、メッセージング・アプリケーションによってホストされ、またはメッセージング・アプリケーション内でアクセスされるｗｅｂアプリケーションである一方で、ｂｏｔは、ｂｏｔ ｗｅｂサイト上で実行され、および／またはｂｏｔ ｗｅｂサイトと直接通信する。
【００３３】
[0043]  先に詳述したように、ｂｏｔ ｗｅｂサイトは、メッセージング・アプリケーション内でｂｏｔにアクセスするユーザが、サード・パーティ・アプリケーションのログインＵＲＬにユーザ資格情報を入力したユーザと同一であることを検証することができない場合がある。つまり、受取動作３２２では、ｂｏｔ ｗｅｂサイトは、サード・パーティ・アプリケーションに関連付けられたユーザのアカウントについてのアクセス・トークンを受け取る一方で、ｂｏｔ ｗｅｂサイトはユーザを認証することができない場合がある。この場合、ノンス生成動作３２４では、ｂｏｔ ｗｅｂサイトはノンスを生成する。ノンスは、一度しか使用することができない任意の一意の番号である。また、ノンス生成動作３２４では、ｂｏｔ ｗｅｂサイトは、サード・パーティ・アプリケーションから受け取ったアクセス・トークン（ＡＴ）をノンスと関連付け、また、ノンスＡＴをキャッシュに格納する。複数の態様では、ノンスは、ユーザＩＤに基づいてキャッシュ内でインデックス付けされるか、またはアクセス・トークンと共に単に格納されてもよい。更なる態様では、キャッシュは、格納されたノンスのコレクションを含んでもよい。
【００３４】
[0044]  ノンス受取動作３２６では、メッセージング・アプリケーションは、ｂｏｔ ｗｅｂサイトからノンスを受け取る。幾らかの態様では、ｂｏｔ ｗｅｂサイトは、ユーザＩＤと共にノンスをメッセージング・アプリケーションに渡してもよい。
【００３５】
[0045]  渡し動作３２８では、メッセージング・アプリケーションは、不可視のメッセージ（不図示）を介してｂｏｔに戻すようにノンスを渡す。つまり、ｂｏｔ ｗｅｂサイトからノンスを受信すると、メッセージング・アプリケーションは、（例えば、ユーザＩＤに基づいて）ユーザを識別して、メッセージング・アプリケーション内でユーザと通信しているｂｏｔに、不可視のメッセージを介してノンスを渡す。先に説明したように、「不可視」メッセージは、ユーザには見ることができない、および／またはユーザによって手動で実装されないメッセージのことである。
【００３６】
[0046]  受取動作３３０では、ｂｏｔは、メッセージング・アプリケーションからノンスを受け取る。また、ｂｏｔは、ノンス生成動作３２４でｂｏｔ ｗｅｂサイトによって格納されたノンスのキャッシュにアクセスして、判定動作３３２を実行することができる。なお、ｂｏｔはメッセージング・アプリケーション内からアクセスされるが、ｂｏｔはｂｏｔ ｗｅｂサイト上で、および／またはｂｏｔ ｗｅｂサイトと直接通信して実行していてもよい。
【００３７】
[0047]  判定動作３３２では、ｂｏｔは、メッセージング・アプリケーションから受け取ったノンス（例えば、受信済みノンス）がキャッシュ内に格納されているノンスと一致するかについて判定する。受け取ったノンスが、保存されているノンスと一致しない場合は、ユーザは認証されることができずに、本方法は終了する。この場合、ｂｏｔは、サード・パーティ・アプリケーション（例えば、Ｉｎｓｔａｇｒａｍ（登録商標））上のユーザのアカウントにはアクセスせず、また、ｂｏｔは、サード・パーティ・アプリケーションへのアクセス要求を完了できないことの通知をユーザに供給する。代替では、受け取ったノンスがキャッシュに格納されているノンスと一致する場合は、本方法はオプションの関連付け動作３３４に続いてもよい。
【００３８】
[0048]  オプションの関連付け動作３３４では、ｂｏｔ（またはメッセージング・アプリケーション）は、サード・パーティ・アプリケーションのアクセス・トークンを、メッセージング・アプリケーションのユーザＩＤに関連付ける。この場合、サード・パーティ・アプリケーションのユーザのアカウントにアクセスするための後続の要求に対して、ｂｏｔは、ユーザＩＤがサード・パーティ・アプリケーションについて認証されているかを判定し、また、ｂｏｔはアクセス許可動作３３８に直接進む。
【００３９】
[0049]  アクセス許可動作３３６では、サード・パーティ・アプリケーションは、ｂｏｔによって、サード・パーティ・アプリケーション上のユーザのアカウントにアクセスするのを許可する。幾らかの場合では、アクセス許可動作３３６でアクセスを許可するのよりも前に、サード・パーティ・アプリケーションは、ｂｏｔ（またはメッセージング・アプリケーション）からアクセス・トークンを受け取って、これを検証することがある。複数の態様において、アクセス・トークンは、ユーザＩＤ内でサード・パーティ・アプリケーションに、ｂｏｔ（またはメッセージング・アプリケーション）からサード・パーティ・アプリケーションへのメッセージ内、またはその他によって渡されてもよい。
【００４０】
[0050]  アクセス受取動作３３８で、メッセージング・アプリケーション内のｂｏｔは、サード・パーティ・アプリケーションのユーザ・アカウント内の情報（例えば、Ｉｎｓｔａｇｒａｍ（登録商標）にポストされた写真）へのアクセスを受け取る。幾らかの態様では、ｂｏｔがサード・パーティ・アプリケーションによって一旦認証されると、引き続き、ｂｏｔは、（例えば、アクセス・トークンに関連付けられたユーザＩＤに基づいて）認証を繰り返すことなくユーザ・アカウントにアクセスしてもよい。更なる態様では、アクセス・トークンは有効日が関連付けられてもよい。当該有効日が満了すると、ｂｏｔ（またはメッセージング・アプリケーション）がサード・パーティ・アプリケーションによって再認証することが要求される。
【００４１】
[0051]  これらのステップを利用することにより、サード・パーティ・アプリケーション・サーバ、ｂｏｔ ｗｅｂサイト・サーバ、および本明細書に開示されるシステムに関連付けられる電子デバイスは、ユーザにはサイレント（または不可視）で全て通信する。更に、ユーザおよび／または開発者は、追加の負担を負うことにならない。例えば、マジック番号を手動でコピー・アンド・ペーストすることが要求されず、および／または開発者が署名を検証することが要求されず、ユーザ認証の成功が生じることになる。
【００４２】
[0052]  なお、図３に関して説明した様々な方法、デバイス、コンポーネント等は、説明した特定のコンポーネントによって実行されているシステム３００に限定することを意図するのではないことが認められてしかるべきである。したがって、追加のトポロジ構成を使用して、本明細書の方法およびシステムを実施してもよく、並びに／または、説明したコンポーネントは、本明細書に開示される方法およびシステムから逸脱することなく除外されてもよい。
【００４３】
[0053]  図４Ａは、チャット・アプリケーション内でチャットｂｏｔに関連付けられる例示のインタフェースを示している。
【００４４】
[0054]  メッセージング・アプリケーション内においてアクセスされるｂｏｔのユーザをセキュアに認証するシステムを開始するために、最初に、ユーザはモバイル・デバイス４０１のような電子デバイス上でメッセージ・アプリケーション（例えば、「チャット・アプリ」）をオープンする。幾らかの態様では、チャット・アプリには、ユーザと通信するためのチャットｂｏｔが含まれてもよい。例えば、チャットｂｏｔと通信するために、ユーザは、チャット・アプリに関連付けられたインタフェースにメッセージ４０４Ａを入力する。幾らかの場合では、ユーザは、サード・パーティ・アプリケーション（不図示）に関連付けられるユーザのアカウントの情報にアクセスするようにチャットｂｏｔに要求することがある。
例えば、ユーザは、ユーザのＩｎｓｔａｇｒａｍ（登録商標）のアカウント（不図示）内にユーザがポストした写真にアクセスするようチャットｂｏｔに要求する。
【００４５】
[0055]  サード・パーティ・アプリケーションにアクセスするための要求の受け取りに応じて、チャットｂｏｔは、チャット・アプリに関連付けられたユーザＩＤが認証されて、サード・パーティ・アプリケーションに関連付けられたユーザ・アカウントにアクセスできるかについて判定する。ユーザＩＤが認証された場合は、チャットｂｏｔはユーザのＩｎｓｔａｇｒａｍ（登録商標）のアカウント内でユーザによって要求された写真にアクセスするように進む。代替として、図４Ｂに示されるように、ユーザＩＤがサード・パーティ・アプリケーションに認証されていない場合には、チャットｂｏｔは、認証が要求されていることのプロンプトをユーザに（チャット・アプリ内から）供給する。
【００４６】
[0056]  図４Ｂは、認証プロンプトを表示するチャット・アプリケーション内において、チャットｂｏｔに関連付けられた例示のインタフェースを示している。
【００４７】
[0057]  要求されたサード・パーティ・アプリケーションにアクセスするために、ユーザＩＤがこれまでに認証されていない場合には、チャット・アプリ内においてチャットｂｏｔは、認証プロンプト４０６を通じてサード・パーティ・アプリケーションにログインするようにユーザに指示する。ユーザは認証プロンプト４０６を選択する。認証プロンプト４０６は、サード・パーティ・アプリケーション（例えば、Ｉｎｓｔａｇｒａｍ（登録商標））のログイン・ページにユーザをリダイレクトするために、ログインＵＲＬによってチャット・アプリ内にウィンドウをオープンする。先に説明したように、ユーザはログインＵＲＬを介してサード・パーティ・アプリケーションにログインし、ユーザのログイン資格情報を検証すると、サード・パーティ・アプリケーションは認証コード（その後はアクセス・トークン）を、チャットｂｏｔに関連付けられるｗｅｂページに送信する。
【００４８】
[0058]  しかしながら、この時点では、ｂｏｔ ｗｅｂサイトは、ログインＵＲＬにログイン資格情報を入力したユーザが、チャット・アプリ内のチャットｂｏｔにアクセスしているユーザと同一であることを検証することができない場合がある。したがって、ユーザを認証するために、ｂｏｔ ｗｅｂサイトは、ノンスを生成およびキャッシュする。ノンスは任意の一意の値である。次いで、ノンスはメッセージング・アプリケーション（チャット・アプリ）に渡される。次いで、メッセージング・アプリケーションは、ユーザには不可視のメッセージを介してノンスをチャットｂｏｔに渡す。次いで、チャットｂｏｔは、受け取ったノンスが、ｂｏｔ ｗｅｂサイトによって作成およびキャッシュされているキャッシュ済みノンスと一致することを検証する。受け取ったノンスとキャッシュ済みノンスとが一致する場合、ユーザは認証されて、チャットｂｏｔはサード・パーティ・アプリケーション（例えば、Ｉｎｓｔａｇｒａｍ（登録商標））から受け取ったアクセス・トークンを使用して、ユーザのＩｎｓｔａｇｒａｍ（登録商標）のアカウント内でユーザによって要求された写真にアクセスすることができる。
【００４９】
[0059]  なお、図４Ａおよび図４Ｂに関して説明された様々な方法、デバイス、コンポーネント等は、説明される特定のコンポーネントによって実行されているシステム４００に限定することを意図するものでないことが認められて然るべきである。したがって、追加のトポロジ構成を使用して、本明細書の方法およびシステムを実施してもよく、並びに／または、説明したコンポーネントは、本明細書に開示される方法およびシステムから逸脱することなく除外されてもよい。
【００５０】
[0060]  図５は、チャット・アプリケーションがサード・パーティ・アプリケーション・サーバ（複数可）およびｂｏｔ ｗｅｂサイト・サーバ（複数可）と通信する方法の例を示している。
【００５１】
[0061]  一態様の例では、モバイル・デバイス５０２のような電子デバイス上のユーザは、チャット・アプリケーションのウィンドウ内におけるチャットｂｏｔによってサード・パーティ・アプリケーションのログイン資格情報を入力するように指示される。ユーザは、認証プロンプト４０６（図４Ｂを参照のこと。）を選択し、サード・パーティ・アプリケーションのログイン・ページにリダイレクトされる。例えば、ユーザが認証プロンプト４０６を選択すると、プロンプトは処理中ホイール５０４に変更する。ログインＵＲＬをクリックすると（ログリンＵＲＬはウィンドウ内に提供され、または、デバイス５０２に関連付けられたインタフェースをオーバーレイしている（不図示））、次いで、サード・パーティ・アプリケーション・サーバ５０６（複数可）上で実行している、および／またはサード・パーティ・アプリケーション・サーバ５０６（複数可）によってネットワーク５１０（複数可）を介して通信しているｗｅｂページに、ユーザはログイン資格情報を入力する。ログイン資格情報は、サード・パーティ・アプリケーション・サーバ５０６（複数可）によって検証され、認証コード（および、後のアクセス・トークン）が作成され、ネットワーク５１０（複数可）を介してｂｏｔ ｗｅｂサイト・サーバ５０８（複数可）に渡される。ネットワーク５１０（複数可）には、モバイル・デバイス５０２、サーバ５０６、および／またはサーバ５０８の間で情報を通信するために、１つ以上のローカル・エリア・ネットワーク（例えば、ＬＡＮ）および／若しくはワイド・エリア・ネットワーク（例えば、ＷＡＮ）、プライベート・ネットワーク（例えば、イントラネット）、並びに／または公衆ネットワーク（例えば、インターネット）の任意の組み合わせが含まれる。
【００５２】
[0062]  しかしながら、先に詳述したように、サード・パーティのｂｏｔ ｗｅｂサイト・サーバ５０８（複数可）は、サード・パーティ・アプリケーションに関連付けられたｗｅｂページに資格情報を入力したユーザが、チャット・アプリケーション内においてチャットｂｏｔにアクセスするユーザと同一であることを検証することができない場合がある。この時点で、ｂｏｔ ｗｅｂサイト・サーバ５０８（複数可）は、アクセス・トークンを受け取り、ノンスを作成する。ノンスは、アクセス・トークンを用いてキャッシュされ、次いで、モバイル・デバイス５０２上で起動しているチャット・アプリケーション（例えば、チャット・アプリ）に戻すように、ノンスは渡される。次いで、チャット・アプリケーションは、不可視のメッセージを介して、チャット・アプリケーション内においてノンスをチャットｂｏｔに渡す。チャットｂｏｔは、受け取ったノンスを、キャッシュされているノンスと比較する。受け取ったノンスとキャッシュされているノンスとが一致する場合は、次いで、チャットｂｏｔ（またはチャット・アプリ）は、チャット・アプリのユーザＩＤを、サード・パーティ・アプリケーション・サーバ５０６（複数可）から受け取ったアクセス・トークンに関連付ける。
【００５３】
[0063]  チャット・アプリケーションと、チャットｂｏｔと、サード・パーティ・アプリケーションおよびそのサーバと、サード・パーティｂｏｔ ｗｅｂサイトおよびそのサーバと、の間での通信は、バックグラウンドで生じる（つまり、ユーザには不可視である。）。このようにして、ユーザは、サード・パーティｂｏｔ ｗｅｂサイトから受け取った「マジック・ナンバ」を入力したり、さもなければ手動で彼／彼女を認証したりすることは要求されない。つまり、ノンスの生成と検証は自動かつセキュアである。
【００５４】
[0064]  なお、図５に関して説明された様々な方法、デバイス、コンポーネント等は、説明される特定のコンポーネントによって実行されているシステム５００に限定することを意図するものでないことが認められて然るべきである。したがって、追加のトポロジ構成を使用して、本明細書の方法およびシステムを実施してもよく、並びに／または、説明したコンポーネントは、本明細書に開示される方法およびシステムから逸脱することなく除外されてもよい。
【００５５】
[0065]  図６は、ｗｅｂアプリケーションを介してｂｏｔユーザの認証に成功することを示している。
【００５６】
[0066]  受け取ったノンスの値とキャッシュされているノンスの値とが一致することを確認(ensure)した後、次いで、ｂｏｔは、ログイン成功のメッセージ６０４がモバイル・デバイス６０２に表示される。また、チャットｂｏｔは、サード・パーティ・アプリケーションのユーザのアカウントに関連付けられた、要求された情報にアクセスする。引き続き、一旦認証されると、チャットｂｏｔは、チャット・アプリのユーザＩＤに関連付けられたアクセス・トークンに基づいて、サード・パーティ・アプリケーションのユーザのアカウントにアクセスする。しかしながら、先に検討したように、例えば、トリガ・イベントが発生した場合、また、特定の時間期間が経過した場合に、アクセス・トークンは無効になり、および／または期限切れとなる。この例では、ｂｏｔユーザは、新規のアクセス・トークンを抽出するために、サード・パーティ・アプリケーションにログイン資格情報を再入力する必要があり、サード・パーティｂｏｔ ｗｅｂサイトに対しｂｏｔユーザの再認証を要求する。
【００５７】
[0067]  なお、図６に関して説明された様々な方法、デバイス、コンポーネント等は、説明される特定のコンポーネントによって実行されているシステム６００に限定することを意図するものでないことが認められて然るべきである。したがって、追加のトポロジ構成を使用して、本明細書の方法およびシステムを実施してもよく、並びに／または、説明したコンポーネントは、本明細書に開示される方法およびシステムから逸脱することなく除外されてもよい。
【００５８】
[0068]  図７から図１０および関連する説明は、本開示の態様が実施される様々な動作環境を検討するのを提供する。しかしながら、図７から図１０に関して図示および説明されたデバイスおよびシステムは、例示および図示の目的のためであり、本明細書で説明されるように、本開示の態様を実施するために利用される膨大な数のコンピューティング・デバイスの構成を限定するものではない。
【００５９】
[0069]  図７は、本開示の態様が実施されるコンピューティング・デバイス７００の例示の物理コンポーネント（例えば、ハードウェア）を示すブロック図である。次に説明するコンピューティング・デバイス・コンポーネントは、コンピューティング・デバイス（例えば、サーバ・コンピューティング・デバイスおよび／またはクライアント・コンピューティング・デバイス）上で認証マネージャ７２０を実装するためのコンピュータ実行可能命令を有する。認証マネージャ７２０のためのコンピュータ実行可能命令は、ｗｅｂアプリケーションを介してｂｏｔユーザを自動的に認証する方法を含む、本明細書に開示される本方法を実装するように実行される。基本構成において、コンピューティング・デバイス７００は、少なくとも１つの処理ユニット７０２およびシステム・メモリ７０４を含む。コンピューティング・デバイスの構成および種別に応じて、システム・メモリ７０４は、これに限定されないが、揮発性ストレージ（例えば、ランダム・アクセス・メモリ）、不揮発性ストレージ（例えば、リード・オンリ・メモリ）、フラッシュ・メモリ、またはこれらのようなメモリの任意の組み合わせを含む。システム・メモリ７０４は、オペレーティング・システム７０５と、認証マネージャ７２０（特に、ノンス生成器７１１、ノンス検証器７１３、アプリケーション通信マネージャ７１５、および／またはＵＸコンポーネント７１７）を起動するのに好適な１つ以上のプログラム・モジュール７０６とを含む。
【００６０】
[0070]  オペレーティング・システム７０５は、例えば、コンピューティング・デバイス７００の動作を制御するのに好適である。更に、本開示の実施形態は、グラフィックス・ライブラリ、他のオペレーティング・システム、または他のアプリケーション・プログラムと連携して実施され、また、任意の特定のアプリケーションまたはシステムに限定されない。
この基本構成は、図７では、破線７０８内のこれらコンポーネントによって示される。
コンピューティング・デバイス７００は、追加の特徴または機能を有してもよい。例えば、コンピューティング・デバイス７００はまた、例えば磁気ディスク、光ディスク、またはテープのような付加的な（取り外し可能および／または取り外し不能の）データ・ストレージ・デバイスも含んでもよい。このような付加的なストレージは、図７では、取り外し可能ストレージ７０９および取り外し不能ストレージ７１０によって示される。
【００６１】
[0071]  先に述べたように、多くのプログラム・モジュールおよびデータ・ファイルがシステム・メモリ７０４に格納される。処理ユニット７０２で実行している間、プログラム・モジュール７０６（例えば、認証マネージャ７２０）は、本明細書で説明する態様を含むがそれに限定されないプロセスを実行する。本開示の態様によれば、特にｗｅｂアプリケーションを介してｂｏｔユーザを自動的に認証するために使用される他のプログラム・モジュールは、ノンス生成器７１１、ノンス検証器７１３、アプリケーション通信マネージャ７１５、および／またはＵＸコンポーネント７１７等を含む。
【００６２】
[0072]  更に、本開示の実施形態は、個別の電子素子を備えた電気回路、論理ゲートを収容したパッケージされまたは集積された電子チップ、マイクロプロセッサを利用した回路、或いは電子素子またはマイクロプロセッサを収容する単一チップで実施される。例えば、本開示の実施形態は、システム・オン・チップ（ＳＯＣ）を介して実施され、図７に示されるコンポーネントの各々またはその多くが単一の集積回路で統合される。このようなＳＯＣデバイスは、１つ以上の処理ユニット、グラフィックス・ユニット、通信ユニット、システム仮想化ユニット、および、そのすべてが単一の集積回路としてチップ基板に集積（または「焼き付け」）される様々なアプリケーション機能を含む。ＳＯＣを介して動作するとき、プロトコルを切り替えるクライアント性能に関し、本明細書で説明される機能は、単一の集積回路（チップ）上のコンピューティング・デバイス７００の他のコンポーネントと統合される特定用途向けロジックを介して動作する。本開示の実施形態はまた、これに限定されないが、機械、光、流体、および量子技術を含む、例えばＡＮＤ、ＯＲおよびＮＯＴのような論理演算を実行することができる他の技術を使用して実施されてもよい。加えて、本開示の実施形態は、汎用コンピュータ内または他の任意の回路若しくはシステム内で実施されてもよい。
【００６３】
[0073]  コンピューティング・デバイス７００はまた、キーボード、マウス、ペン、音若しくは音声入力デバイス、タッチ若しくはスワイプ入力デバイス等のような１つ以上の入力デバイス７１２（複数可）を有してもよい。ディスプレイ、スピーカ、プリンタ等のような出力デバイス７１４（複数可）がまた含まれてもよい。上述したデバイスは例示であり、他のものが使用されてもよい。コンピューティング・デバイス７００は、他のコンピューティング・デバイス７５０との通信を可能にする１つ以上の通信接続７１６を含む。好適な通信接続７１６の例には、これに限定されないが、無線周波数（ＲＦ）送信機、受信機、および／または送受信機回路と、ユニバーサル・シリアル・バス（ＵＳＢ）、パラレルおよび／またはシリアルポートとが含まれる。
【００６４】
[0074]  本明細書で用いられるコンピュータ可読媒体という用語には、コンピュータ・ストレージ媒体が含まれる。コンピュータ・ストレージ媒体には、コンピュータ可読命令、データ構造、またはプログラム・モジュールのような情報をストレージするための任意の方法または技術で実装される揮発性および不揮発性かつ取り外し可能および取り外し不能の媒体が含まれる。システム・メモリ７０４、取り外し可能ストレージ・デバイス７０９、および取り外し不能ストレージ・デバイス７１０は、全てコンピュータ・ストレージ媒体の例（例えば、メモリ・ストレージ）である。コンピュータ・ストレージ媒体には、有形ストレージ媒体（例えば、ＲＡＭ、ＲＯＭ、電気的消去可能リード・オンリ・メモリ（ＥＥＰＲＯＭ）、フラッシュ・メモリ若しくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）若しくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージ若しくは他の磁気ストレージ・デバイス、または、情報を格納するのに使用することができ、コンピューティング・デバイス７００によってアクセスすることができる他の製造物品）が含まれる。このような有形コンピュータ・ストレージ媒体は、コンピューティング・デバイス７００の一部としてよい。コンピュータ・ストレージ媒体は、搬送波または他の伝播または変調データ信号を含まない非一時的媒体としてよい。
【００６５】
[0075]  通信媒体には、コンピュータ可読命令、データ構造、プログラム・モジュール、または搬送波や他のトランスポート・メカニズムのような変調データ信号の他のデータによって具体化され、任意の情報配信媒体が含まれる。「変調されたデータ信号」という用語は、信号内の情報をエンコードするような手法で設定または変更される１つ以上の特性を有する信号について記述している。一例では、これに限定されないが、通信媒体には、有線ネットワークまたはダイレクト有線接続のような有線媒体と、音響、無線周波数（ＲＦ）、赤外線、および他の無線媒体のような無線媒体とが含まれる。
【００６６】
[0076]図８Ａおよび図８Ｂは、例えば、モバイル・フォン、スマートフォン、ウェアラブル・コンピュータ（例えば、スマートウォッチ、または仮想現実アプリケーション用のヘッド・マウント・ディスプレイ）、タブレット・コンピュータ、ラップトップ・コンピュータ等のモバイル・コンピューティング・デバイス８００を示し、本開示の実施形態を実施する。幾らかの態様では、クライアントはモバイル・コンピューティング・デバイスとしてよい。図８Ａを参照する。複数の態様を実装するモバイル・コンピューティング・デバイス８００の一態様が示されている。基本構成において、モバイル・コンピューティング・デバイス８００は、入力要素と出力要素の両方を有するハンドヘルド・コンピュータである。モバイル・コンピューティング・デバイス８００は、通常、ディスプレイ８０５と、ユーザがモバイル・コンピューティング・デバイス８００に情報を入力できるようにする１つ以上の入力ボタン８１０と、を含む。モバイル・コンピューティング・デバイス８００のディスプレイ８０５はまた、入力デバイス（例えば、タッチ・スクリーン・ディスプレイ）としても機能する。オプションの側面入力要素８１５が含まれる場合、これにより、更にユーザ入力を可能としてもよい。側面入力要素８１５は、回転スイッチ、ボタン、または他の任意の種別の手動入力要素としてよい。代替の態様では、モバイル・コンピューティング・デバイス８００は、より多くのまたはより少ない入力要素を組み込んでもよい。例えば、幾らかの実施形態においてディスプレイ８０５はタッチ・スクリーンでなくてもよい。更に別の代替の実施形態では、モバイル・コンピューティング・デバイス８００は、セルラ・フォンのようなポータブル・フォン・システムである。モバイル・コンピューティング・デバイス８００はまた、オプションのキーパッド８３５を含んでもよい。任意のキーパッド８３５は、物理キーパッド、またはタッチ・スクリーン・ディスプレイ上に生成された「ソフト」キーパッドとしてよい。様々な実施形態において、出力要素は、グラフィカル・ユーザ・インターフェース（ＧＵＩ）、視覚インジケータ８２０（例えば、発光ダイオード）、および／またはオーディオ・トランスデューサ８２５（例えば、スピーカ）を示すためのディスプレイ８０５を含む。幾らかの態様では、モバイル・コンピューティング・デバイス８００は、ユーザに触覚フィードバックを供給するための振動トランスデューサを組み込んでもよい。更に別の態様では、モバイル・コンピューティング・デバイス８００は、外部デバイスとの間で信号を送受信するために、オーディオ入力（例えば、マイク・ジャック）、オーディオ出力（例えば、ヘッドフォン・ジャック）、およびビデオ出力（例えば、 ＨＤＭＩ（登録商標）ポート）のような入力／出力ポートを組み込む。
【００６７】
[0077]  図８Ｂは、モバイル・コンピューティング・デバイスの一態様のアーキテクチャを示すブロック図である。すなわち、モバイル・コンピューティング・デバイス８００は、幾つかの態様を実装するシステム（例えば、アーキテクチャ）８０２を組み込むことができる。一実施形態では、システム８０２は、１つ以上のアプリケーション（例えば、ブラウザ、電子メール、カレンダ、コンタクト・マネージャ、メッセージング・クライアント、ゲーム、およびメディア・クライアント／プレーヤ）を起動する性能を有する「スマートフォン」として実装される。幾らかの態様では、システム８０２は、統合パーソナル・デジタル・アシスタント（ＰＤＡ）およびワイヤレス・フォンのようなコンピューティング・デバイスとして統合される。
【００６８】
[0078]  １つ以上のアプリケーション・プログラム８６６は、メモリ８６２にロードされ、オペレーティング・システム８６４上で起動し、またはオペレーティング・システム８６４に付随して起動する。アプリケーション・プログラムの例には、通話ダイヤラ・プログラム、電子メール・プログラム、個人情報管理（ＰＩＭ）プログラム、ワード・プロセシング・プログラム、スプレッドシート・プログラム、インターネット・ブラウザ・プログラム、メッセージング・プログラム等が含まれる。システム８０２はまた、メモリ８６２内に不揮発性ストレージ領域８６８を含む。不揮発性ストレージ領域８６８は、システム８０２の電源が切られた場合に損失されてはならない永続的な情報を格納するのに使用される。アプリケーション・プログラム８６６は、電子メールまたは電子メールアプリケーションによって使用される他のメッセージ等のような情報を使用して、不揮発性ストレージ領域８６８に格納する。同期アプリケーション（不図示）はまたシステム８０２上に常駐する。また、ホスト・コンピュータ上に常駐する対応の同期アプリケーションと対話するようにプログラムされ、不揮発性ストレージ領域８６８に格納された情報を、ホスト・コンピュータに格納されている対応の情報と同期して維持することができる。なお、他のアプリケーションがメモリ８６２にロードされ、モバイル・コンピューティング・デバイス８００で起動され、ｗｅｂアプリケーション（例えば、ノンス生成器２１１、ノンス検証器２１３、アプリケーション通信マネージャ２１５、および／またはＵＸコンポーネント２１７等）を介してｂｏｔユーザを自動的に認証するための命令を含むことが認められて然るべきである。
【００６９】
[0079]  システム８０２は電源８７０を有し、１つ以上のバッテリとして実装される。電源８７０は更に、ＡＣアダプタ、または電池を補充または再充電する電力ドッキング・クレードルのような外部電源を含んでもよい。システム８０２はまた、無線周波数通信を送信および受信する機能を実行する無線インタフェース・レイヤ８７２を含む。無線インタフェース・レイヤ８７２は、通信キャリアまたはサービス・プロバイダを介して、システム８０２と「外界」との間の無線接続性を促進にする。無線インタフェース・レイヤ８７２との間での送受信は、オペレーティング・システム８６４の制御の下で実施される。言い換えれば、無線インタフェース・レイヤ８７２によって受信される通信は、オペレーティング・システム８６４を介してアプリケーション・プログラム８６６に向けて伝播される。その逆もまた同様である。
【００７０】
[0080]  視覚インジケータ８２０が使用されて視覚通知を提供することができ、および／または、オーディオ・インタフェース８７４が使用されて、オーディオ・トランスデューサ８２５（例えば、図８Ａに示されるオーディオ・トランスデューサ８２５）を介して可聴通知を作成することができる。図示された実施形態では、視覚インジケータ８２０は発光ダイオード（ＬＥＤ）であり、オーディオ・トランスデューサ８２５はスピーカである。これらのデバイスは、電源８７０に直接結合される。その結果、活性化された時には、バッテリ電力を節約するためにプロセッサ８６０および他のコンポーネントがシャットダウンした場合でも、通知メカニズムによって指示された期間にわたりオン状態を維持することができる。ＬＥＤは、ユーザがデバイスの電源オン状態を示すためのアクションを行うまで、無期限にオンのままとなるようにプログラムされる。オーディオ・インタフェース８７４が使用されて、可聴信号をユーザに供給することができ、また、可聴信号をユーザから受け取ることができる。例えば、オーディオ・トランスデューサ８２５に結合されていることに加えて、オーディオ・インタフェース８７４はまた、可聴入力を受け取るためにマイクロフォンに結合されて、その結果、電話での会話を促進することができる。本開示の実施形態によれば、マイクロフォンはまた、これより次に説明するように、通知の制御を促進にするオーディオ・センサとしても機能してもよい。システム８０２は更に、周辺機器デバイス８３０（例えば、オンボード・カメラ）の動作によって、静止画像、ビデオ・ストリーム等を記録することを可能にするビデオ・インタフェース８７６を含む。
【００７１】
[0081]  システム８０２を実装するモバイル・コンピューティング・デバイス８００は、追加の特徴または機能を有してもよい。例えば、モバイル・コンピューティング・デバイス８００はまた、磁気ディスク、光ディスク、またはテープのような付加的な（取り外し可能および／または取り外し不能な）データ・ストレージ・デバイスを含んでもよい。このような付加的なストレージは、図８Ｂに不揮発性ストレージ領域８６８によって示されている。
【００７２】
[0082]  モバイル・コンピューティング・デバイス８００によって生成またはキャプチャされ、システム８０２を介して格納されるデータ／情報は、先に説明したように、モバイル・コンピューティング・デバイス８００上にローカルに格納されてもよい。或いは、無線インタフェース・レイヤ８７２を介して、またはモバイル・コンピューティング・デバイス８００とモバイル・コンピューティング・デバイス８００に付随する別個のコンピューティング・デバイス（例えば、インターネットのような分散コンピューティング・ネットワークのサーバ・コンピュータ）との間の有線接続を介して、データは、デバイスによってアクセスされる任意の数のストレージ媒体上に格納されてもよい。なお、このようなデータ／情報は、無線インタフェース・レイヤ８７２を介して、または分散コンピューティング・ネットワークを介して、モバイル・コンピューティング・デバイス８００を介してアクセスされることが認められて然るべきである。同様に、このようなデータ／情報は、電子メールおよび共同データ／情報共有システムを含む、周知のデータ／情報転送およびストレージ手段に従って、ストレージおよび使用のためにコンピューティング・デバイス間で容易に転送されてもよい。
【００７３】
[0083]  なお、図８Ａおよび図８Ｂは、本方法およびシステムを例示する目的で説明され、ステップの特定のシーケンス、またはハードウェア若しくはソフトウェア・コンポーネントの特定の組み合わせに本開示を限定することを意図するものではないことが認められて然るべきである。
【００７４】
[0084]  図９は、先に説明したように、汎用コンピューティング・デバイス９０４（例えば、パーソナル・コンピュータ）、タブレット型コンピューティング・デバイス９０６、またはモバイル・コンピューティング・デバイス９０８のようなリモート・ソースからコンピューティング・システムで受け取ったデータを処理するシステムのアーキテクチャの一態様を示す。サーバ・デバイス９０２で表示されるコンテンツは、異なる通信チャネルまたは他のストレージ種別に格納される。例えば、ディレクトリ・サービス９２２、ｗｅｂポータル９２４、メールボックス・サービス９２６、インスタント・メッセージング・ストア９２８、またはソーシャル・ネットワーキング・サービス９３０を用いて、様々な文書が保存される。認証マネージャ９２１は、サーバ・デバイス９０２と通信するクライアントによって採用されてもよく、および／または認証マネージャ９２０は、サーバ・デバイス９０２によって採用されてもよい。サーバ・デバイス９０２は、ネットワーク９１５を通じて、汎用コンピューティング・デバイス９０４、タブレット型コンピューティング・デバイス９０６、および／またはモバイル・コンピューティング・デバイス９０８（例えば、スマート・フォン）のようなクライアント・コンピューティング・デバイスとの間でデータを供給する。一例では、図１から図９に関して先に説明したコンピュータ・システムは、汎用コンピューティング・デバイス９０４（例えば、パーソナル・コンピュータ）、タブレット型コンピューティング・デバイス９０６、および／またはモバイル・コンピューティング・デバイス９０８（例えば、スマート・フォン）で具体化されるのがよい。コンピューティング・デバイスのこれら任意の実施形態は、グラフィック生成システムで事前処理されるか、または受け取ったコンピューティング・システムで事後処理されるのに使用可能なグラフィック・データを受け取ることに加えて、ストア９１６からコンテンツを取得する。
【００７５】
[0085]  なお、図９は、本方法およびシステムを例示する目的で説明され、ステップの特定のシーケンス、またはハードウェア若しくはソフトウェア・コンポーネントの特定の組み合わせに本開示を限定することを意図するものではないことが認められて然るべきである。
【００７６】
[0086]  図１０は、本明細書で開示される１つ以上の態様を実施する例示のタブレット型コンピューティング・デバイス１０００を示している。また、本明細書に説明される態様と機能は、分散システム（例えば、クラウド・ベースのコンピューティング・システム）を通じて動作する。ここでは、アプリケーションの機能、メモリ、データのストレージと抽出、および様々な処理機能が、インターネットまたはイントラネットのような分散コンピューティング・ネットワークを通じて相互にリモートで動作する。様々な種別のユーザ・インタフェースおよび情報は、オンボードのコンピューティング・デバイスを介して、または１つ以上のコンピューティング・デバイスに付随するリモート・ディスプレイ・ユニットを介して表示される。例えば、様々な種別のユーザ・インタフェースおよび情報は、様々な種別のユーザ・インタフェースおよび情報が投影される壁面に表示され、また、これと相互作用される。本発明の実施形態を実施する多数のコンピューティング・システムとの相互作用は、キーストローク入力、タッチ・スクリーン入力、音声または他のオーディオ入力、ジェスチャ入力（関連するコンピューティング・デバイスが、コンピューティング・デバイスの機能を制御するためのユーザ・ジェスチャをキャプチャおよび解釈する検出（例えばカメラ）機能を備える。）等を含む。
【００７７】
[0087]  なお、図１０は、本方法およびシステムを例示する目的で説明され、ステップの特定のシーケンス、またはハードウェア若しくはソフトウェア・コンポーネントの特定の組み合わせに本開示を限定することを意図するものではないことが認められて然るべきである。
【００７８】
[0088]  複数の態様では、ｗｅｂアプリケーションのユーザを認証するプロセッサ実装方法が提供されてもよい。本方法は、ｗｅｂアプリケーションをホストする第１アプリケーションによって、第２アプリケーションにアクセスする要求を受け取るステップを含み、第２アプリケーションは第１アプリケーションからはリモートにある。第２アプリケーションへのアクセスがｗｅｂアプリケーションに認証されていないときに、本方法は、第２アプリケーションへのリンクを提供するウィンドウを前記第１アプリケーション内にオープンするステップを含み、当該リンクは第２アプリケーションのユーザ・アクセス資格情報を受け取るように動作可能である。本方法は、更に、第１アプリケーションによって、ｗｅｂアプリケーションに関連付けられるｗｅｂサービスからノンスを受け取るステップと、第１アプリケーションによって、不可視のメッセージを介してｗｅｂアプリケーションにノンスを送るステップとを含む。送られたノンスと、格納されているノンスのコレクションのうち１つの格納されたノンスとの間の一致に基づいて、本方法はまた、ｗｅｂアプリケーションにおけるユーザの認証を受け取るステップと、ｗｅｂアプリケーションを介して第２アプリケーションにアクセスするために、第１アプリケーション内にウィンドウをオープンするステップとを含む。
【００７９】
[0089]  更なる態様では、ｗｅｂアプリケーションのユーザを認証するためのシステムが提供されてもよい。本システムは、少なくとも１つの処理ユニットと、コンピュータ実行可能命令を格納した少なくとも１つのメモリとを備える。コンピュータ実行可能命令が少なくとも１つの処理ユニットによって実行されると、本システムに方法を実行させる。本方法は、ｗｅｂアプリケーションをホストする第１アプリケーションによって、第２アプリケーションにアクセスする要求を受け取るステップを含み、第２アプリケーションが第１アプリケーションからはリモートにある。第２アプリケーションへのアクセスがｗｅｂアプリケーションに認証されていないときに、本方法は更に、第２アプリケーションへのリンクを提供するウィンドウを前１アプリケーション内にオープンするステップを含み、当該リンクが第２アプリケーションのユーザ・アクセス資格情報を受け取るように動作可能である。また、本方法は、第１アプリケーションによって、ｗｅｂアプリケーションに関連付けられるｗｅｂサービスからノンスを受け取るステップと、第１アプリケーションによって、不可視のメッセージを介してｗｅｂアプリケーションにノンスを送るステップとを含む。本方法はまた、送られたノンスが、キャッシュされているノンスと一致することの確認を受け取るステップと、該確認に基づいて、ｗｅｂアプリケーションを介して第２アプリケーションにアクセスするために、第１アプリケーション内にウィンドウをオープンするステップとを含む。
【００８０】
[0090]  更なる態様では、コンピュータ・ストレージ媒体が提供されてもよい。コンピュータ・ストレージ媒体はコンピュータ実行可能命令を備える。コンピュータ実行可能命令が処理ユニットによって実行されるときに、ｗｅｂアプリケーションのユーザを認証する方法を実行する。本法は、更に、ｗｅｂアプリケーションをホストする第１アプリケーションによって、第２アプリケーションにアクセスする要求を受け取るステップを含み、第２アプリケーションが前記第１アプリケーションからはリモートにある。第２アプリケーションへのアクセスがｗｅｂアプリケーションに認証されていないときに、本法は、更に、第２アプリケーションへのリンクを提供するウィンドウを第１アプリケーション内にオープンするステップを含み、当該リンクが第２アプリケーションのユーザ・アクセス資格情報を受け取るように動作可能である。また、本法は、第１アプリケーションによって、ｗｅｂアプリケーションに関連付けられるｗｅｂサービスからノンスを受け取るステップと、第１アプリケーションによって、不可視のメッセージを介してｗｅｂアプリケーションにノンスを送るステップとを含む。送られたノンスと、格納されているノンスのコレクションのうち１つの格納されたノンスとの間の一致に基づいて、本方法は、ｗｅｂアプリケーションにおけるユーザの認証を受け取るステップと、ｗｅｂアプリケーションを介して第２アプリケーションにアクセスするために、第１アプリケーション内にウィンドウをオープンするステップとを含む。
【００８１】
[0091]  本明細書で説明される本開示の実施形態は、１つ以上のコンピュータ・システムの論理ステップとして実装される。本開示の論理動作は、（１）１つ以上のコンピュータ・システムで実施する一連のプロセッサ実装ステップとして、また、（２）１つ以上のコンピュータ・システム内の相互接続されたマシンまたは回路モジュールとして実装される。実装は選択の問題であり、本開示を実装するコンピュータ・システムのパフォーマンス要件に依存する。したがって、本明細書で説明される本開示の実施形態を構成する論理動作は、動作、ステップ、オブジェクト、またはモジュールとして広く称される。更に、明示的に別の方法で特許請求され、または特許請求の範囲の文言によって特定の順序が本質的に必要とされない限り、論理演算は任意の順序で実行されることが理解されるべきである。
【００８２】
[0092]  上記の仕様、例、およびデータは、本開示の例示の実施形態の構造および使用についての完全な説明を提供する。本開示の多くの実施形態は、本開示の主旨および範囲から逸脱することなく作成することができるので、本開示は以降に添付される特許請求の範囲に属する。また、異なる実施形態の構造的特徴は、特許請求の範囲の記載から逸脱することなく、更に別の実施形態で組み合わされてもよい。
【図１】
2020520009.tif 000003
【図２】
2020520009.tif 000004
【図３】
2020520009.tif 000005
【図４Ａ】
2020520009.tif 000006
【図４Ｂ】
2020520009.tif 000007
【図５】
2020520009.tif 000008
【図６】
2020520009.tif 000009
【図７】
2020520009.tif 000010
【図８Ａ】
2020520009.tif 000011
【図８Ｂ】
2020520009.tif 000012
【図９】
2020520009.tif 000013
【図１０】
2020520009.tif 000014
【国際調査報告】
2020520009.tif 000015
2020520009.tif 000016