14

ここで説明したように、Web API (個々のアカウント) のセキュリティを実装しました。

Godaddy (共有ホスティング) で Web サイトをホストしており、正常に動作しています。URL「domain.com/token」でトークンを要求すると、有効期限が15日以内のトークンが取得できます。これを「StartupAuth.cs」で設定しました

AccessTokenExpireTimeSpan = TimeSpan.FromDays(15)

例えば:

{
  "access_token":"qwertyuiop.....",
  "token_type":"bearer",
  "expires_in":1209599, 
  "userName":"user@example.com",
  ".issued":"Wed, 11 Feb 2015 01:00:00 GMT",
  ".expires":"Thu, 26 Feb 2015 01:00:00 GMT"
}

(上記のコードに値を入れましたが、「.expires」フィールドのアイデアがわかります。

トークンを取得してから 5 分後、「get」、「post」、または API の任意のメソッドにアクセスしようとすると、承認を渡すことによって: ヘッダーのベアラー トークンを次のように指定します。

Authorization: Bearer qwertyuiop.....

次のエラーが表示されます。

{"Message":"Authorization has been denied for this request."}

たった 5 分で、トークンは 15 日間有効であるはずですが、5 分以内に有効期限が切れます。5 分以内にメソッド「get」/「post」をリクエストすると、JSON のデータで適切な応答が得られます。つまり、承認は成功します。

Fiddler、Chrome の REST プラグイン、および API を使用するモバイル アプリを介してテストすることで、この動作を繰り返しました。

以下のようにセッションのweb.config値があります(関連していると思いました)

<sessionState timeout="180" />

フォーム認証は使用されないため、web.config のそのセクションでのタイムアウトは不要であることに注意してください。

何が起こっているのか分かりますか?このタイムアウトにより、API を使用するモバイル アプリのユーザーが時々再ログインすることになります。どんな助けでも大歓迎です。

ありがとう。

4

3 に答える 3

12

WebServer を確認します。IIS では、アプリケーション レベルでマシン キーを設定できます。アプリケーション プールがリサイクルされるたびに、新しいマシン キーが生成されるため、新しいトークンが必要です。Web サイト レベルまたはルート サーバー レベルでマシン キーを設定できます。たぶんこれが役立つかもしれません

于 2015-03-19T12:35:19.770 に答える