web-dev-qa-db-ja.com

OAuthユーザーがトークンを取り消す

自分で読んだことはありませんが、同僚から、エンドユーザーは自分のOAuthトークンを取り消すことができます。検索しましたが、十分なドキュメントが見つかりませんでした。

  1. これは本当ですか/エンドユーザーがトークンを取り消すのですか?
  2. ツール/コード/スクリプト、またはエンドユーザーがそれを行う方法についての議論を教えてもらえますか?

ありがとう!

3
Stefany

リソース所有者の資格情報とは異なり、トークンは制限されたスコープと制限された有効期間で発行され、個別に取り消されます。

から http://tools.ietf.org/html/rfc5849

RFCにも例があると思いますが、私はそれを完全に閲覧しました。 oauthサイトにもいくつかのコードがあります。おそらくそれはあなたを助けることができます、 http://oauth.net/code/

4
M'vy

プロトコルはこの可能性を義務付けていませんが、エンドユーザーのためのオプションがあるのは良いことです。次のシナリオを想像してみてください。

エンドユーザーは、自分のGoogleアカウントデータにアクセスしたいアプリケーションの使用を開始します。そのため、エンドユーザーはリクエストを承認するためにGoogleにリダイレクトされます。彼がリクエストを承認すると、Googleはサードパーティアプリケーションにアクセストークンを発行します。これで、サードパーティのアプリケーションがエンドユーザーのGoogleデータを取得できるようになりました。ただし、このアプリケーションを5分間使用した後、ユーザーはそれについて考えを変え、このアプリケーションが疑わしい、信頼できない、または単に気に入らないと判断します。それで彼はグーグルアカウント、より具体的にはここに行きます: https://www.google.com/accounts/IssuedAuthSubTokens

そして、彼はそのアプリケーションのアクセストークンを取り消すことができます。つまり、このトークンは無効化されるか、Googleデータベースから削除されるだけであり、アプリケーションはエンドユーザーのGoogleアカウントデータを取得できなくなります。

これを行うために特定のコードを表示する必要はありません。 OAuthプロバイダーの場合、特定のユーザーIDに関連付けられたトークンを含むDBテーブルがあるはずです。

token <-> user_id

次に、単純なページを作成します。これは、ユーザーがアクセスしたときに次のことを行います。

どのユーザーIDがページにアクセスしているかを確認し、データベースからそのユーザーのすべてのトークンを選択して、単純なリンクを表示します。各トークンの横にあるトークンを取り消します。ユーザーがトークンの取り消しをクリックした後、それを削除するだけです:)

それはロケット科学ではなく、持っているのに良い選択肢です。

3
luben