私は自分の問題 (こことここ)についてさまざまな質問をしました。また、IRC の #oauth & #openid freenode のチャネルでも質問しました。(これは「UP」の質問であり、別の問題です)
私のプロジェクト構成を要約します: 誰でも私の API を使用できるアプリを作成する可能性があります。まず、API と Web ベースのアプリに取り組みますが、API に関するドキュメントは公開されます。これは、Twitter API に少し似ています。
私が直面している問題は、どのユーザーが API を使用しているか (ツイートなどの個人データを取得するため) をどのように確認できるかということです。周りのすべてのアプリ)。
私はよくグーグルで検索し、以前の回答の助けを借りて、OAuth を調べました。
OAuthの仕組みを理解している限り、ここでどのように:
- ユーザーが自分の API (ウェブ、モバイルなど) を使用するアプリにアクセスします。
- アプリは、認証 (ここでは OpenId を使用します) と承認 (OAuth) のためにユーザーを API にリダイレクトします。API にはログインと承認用の Web インターフェイスがあるため、これは少し奇妙です (Twitterがそうしているので、これがどのように機能するかを推測します) 。
- API は、いくつかのトークンを使用して、接続されたユーザーをアプリにリダイレクトします。これらのトークンには、現在アプリを使用しているユーザーを API に示すために、アプリが保存する必要があるユーザーを表すトークンがあります (私は正しいですか?)
これまでのところ、すべてがうまくいっています。しかし、私が理解できないのは、ユーザーがアプリを終了して再び行ったときです。アプリは、ユーザーが以前に使用したユーザーであることをどのように記憶できますか?
( Cookieの回答を私に提示する前に、これは単純な例であることに注意してください。ユーザーが Cookie をクリアしたり、コンピューターをフォーマットしたり、コンピューターを変更したりしても同じです。)
私が見つけることができる唯一の解決策は、認証されていないユーザー (たとえば、Cookie を記憶していない) がアプリにアクセスしたときに、アプリが彼を API に再度リダイレクトして自分自身を認証することですが、今回はユーザーが再認証する必要はありません。アプリは既に許可されているため、許可 (承認) します。その後、API はユーザーをアプリに戻し、ユーザーがこれで遊べるようにします。
これは適切で安全な方法ですか?
#OAuth IRC チャネルは新しいプロトコル WebID について教えてくれましたが、これは現在ドラフト前のモードであり、将来的に継続的に変更されるものを使用したくありません :/
ご助力ありがとうございます!