2

私は IAuthorizationState (AuthorizationState) と WebServerClient を使用して作業しており、取得時にフレームワークが取得するためにどの呼び出しを行う必要があるかについて最適な決定を下せるように、認証状態情報を永続化する正しい方法を見つけようとしています。 Web サービスの呼び出しに必要なアクセス トークン。

ゼロから始めて、DB に永続化されたトークンがまだないと仮定すると、次の手順を実行します。

  1. WebServerClient.PrepareRequestUserAuthorization- ユーザーは Google に送信されます。URL には、更新トークンのオフライン パラメータが含まれています
  2. ProcessUserAuthorization- Google からコード パラメータ (認証コード) を取得し、呼び出して AccessToken と RefreshToken を有効期限とともに取得します

それを永続化したい場合は、日付も永続化されるようにオブジェクト全体を永続化する必要がありますか、それとも 2 つのトークンで十分でしょうか?

ユーザーが認証状態情報を必要とする別のアクションを実行する場合、DB ルックアップを実行してトークンを取得できるようになりました。トークンを取得した後、常に RefreshAuthorization メソッドを呼び出す必要がありますか?それとも、日付が有効期限を過ぎているかどうかを確認するために独自のロジックを実行する必要がありますか?

更新 1:

IAuthorizationState を最後の状態に完全に復元できるように、DB に日付を保持することになりました。それから私は電話します

client.RefreshAuthorization(auth, TimeSpan.FromSeconds(MinRefreshTimespanInSec));

トークンが最終的に更新された場合は true を返し、トークンがまだ有効で更新する必要がない場合は false を返します。変数 auth は、DB から復元された承認状態です。

4

2 に答える 2

1

少なくとも 2 つのトークンを保存する必要がありますが、OAuth サービスにアクセスする必要がある場合は、日付も保存します。

  1. AccessToken: プロバイダーのサービスを消費するために使用されます。例えば。Twitter とツイートの投稿。
  2. リフレッシュ トークン: 新しいアクセス トークンを取得するためのものだと思います。

では、なぜ日付を保存するのでしょうか。まあ、サービスにアクセスしようとする前に日付データをチェックとして使用できる場合は、ユーザーをリダイレクトして、プロバイダーに対して事前に再認証することができます..そうでない場合は、サービスにアクセスしようとします(たとえば、ツイートを投稿します)エラー(アクセス期限切れなど)が発生します...つまり、そのエラーケースを処理し、ユーザーを認証に再度リダイレクトする必要があります。

もちろん、これらのサービスをまったく使用していない場合 (たとえば、Twitter に対して認証されているが、Twitter サービスを使用する予定がない場合)、そのデータをわざわざ保存する必要はありません。結局、あなたはそれを使うつもりはありません。

おまけのヒント:シンプル認証は、.NET アプリケーションに対して (シンプルな) OAuth を実行するためのより簡単な方法かもしれません。

于 2013-09-09T13:48:12.807 に答える