DotNetOpenAuth に基づいて OAuth2 承認/リソース サーバーを実装しています。私のサーバーは、非常に長い有効期間を持つアクセス トークンを発行します。これらのトークンは、iOS デバイスから使用されます。私の見方では、フローは次のようになります。1) ユーザーは iOS デバイスでユーザー名/パスワードを入力するように求められます 2) リソース所有者パスワード資格情報の付与タイプでアクセストークンが要求されます 3) トークンが付与され、保存されます将来の使用のために iOS デバイスで。
時々、ユーザーが無効になります。同時にトークンを取り消したいと思います。どうすればいいですか?そのためにメソッドを使用する必要があると思わICryptoKeyStore.RemoveKey
れますが、削除するキーを見つける方法がわかりません。
注 1: 将来、サーバーはサードパーティの Web アプリケーションによって使用されます。
注 2: Resource Owner Password クレデンシャルのグラント タイプが必要な理由は、iOS デバイスにブラウザ リダイレクトを実装する価値がないと判断されたためです。
更新 1
ソース コードの一部の発掘調査では、DotNetOpenAuth は、そのままではトークンの有効期限を強制するこの機能をサポートしていないことが示唆されています。さらに、標準実装では、トークンの有効期間はチェックさえされません。私が見ることができる限り、これは calss が原因であり、プロパティとプロパティをStandardAccessTokenAnalyzer
無視します。また、標準クラスにはデータベース アクセスがコード化されていないようで、トークンの有効性はトークン コンテンツによってのみチェックされるため、トークンを期限切れにする機能を追加する必要がある場合は、自分でデータベースに接続する必要があるようです。何か不足していますか?Lifetime
UtcCreationDate
ResourceServer
ResourseServer
更新 2 ここで答えを見つけたと思います: https://groups.google.com/forum/#!topic/dotnetopenid/aLabu1ujkt4これは私が望んでいたものではなく、まだ不明な点がいくつかあります。たとえば、アンドリューは次のように書いています。
その後、カスタム クラスはアクセス トークンを受け取り、承認サーバーへのプライベート HTTP 要求を使用して、トークンの継続的な有効性を検証します。
認証 ID が含まれていないため、この検証がどのように行われるかは不明です。AccessToken
これにより、ターゲットの Authorization レコードを見つけるのが難しくなる可能性があります。理論的には、クライアント、ユーザー、および発行時間の組み合わせで検索を試みることができますが、私が見る限り、これらが一意であるという保証はありません。