私たちはアンドロイドアプリを持っており、それにいくつかのWebサービスを呼び出す必要があります。 バックエンドサービスは、ベアラ認可アルゴリズムで機能します。ユーザがログインすると、サーバは彼にアクセストークンを与え、このトークンは約1時間有効です。 サービスを呼び出すときに、このトークンをHTTPヘッダーとして送信します。トークンが有効であればOKです。トークンが有効でない場合、サーバーはエラーを返し、新しいトークンを取得し、この新しいトークンでそのサービスを呼び出すために別のサービスを呼び出す必要があります。 私の質問は、このワークフローを実装するパターンはありますか? この種のWebサービスコールに関するその他のアイデア。ここでは、高度なベアラー認可アルゴリズムに基づいてWebサービスを呼び出す
答えて
で
おかげで、私は、以前の
- を実装したソリューションは、ユーザーのトークンを生成して保存しますこれ、あなたのWebサービスでの認証機能を記述しています。資格があればTOKENを返してください。
- あなたのAndroidアプリケーションにTOKENを安全に保管してください。
- 各Webサービス呼び出しの場合、すべてのWebサービスの呼び出し
- における主要な引数としてトークンを使用、トークンは、あなたはまた、ユーザーならば、ユーザー
- を識別するためにトークンを使用することができます データベース
- でチェックする必要があります(ポイントと同じなし1)他のデバイスからログインし、認証機能は、次に記憶を新たなトークンを生成し、それを返すべき
- 次に、新しいトークンは、Webサービスの呼び出しで動作します。古い認証されたデバイスは、「無効なトークン」
トークンはメモリ/キャッシュ(MemCache/Redis)に存在する必要があります(データベースには存在しません)。トークンは頻繁にアクセスされるため、DBアクセスは遅延します。 –
これは認証フレームワークのレイアウトです。また、すべてをキャッシュするためのInnoDBをトークンテーブルに使用することもできます。あなたがする必要があるのは、mysqlが使用するメモリを増やすことだけです。他のデータベースベンダーも、静的行読み取りのパフォーマンスを向上させる同様のテクニックを持っています。 Viswanathとして –
@ChristlinJosephは私の次のプロジェクトは、トークンに基づいたシステムを必要とするので、あなたは、私たちにそれを行うには、別の最良の方法を伝えることができ、サーバは、サーバ –
- 1. ESB + Camel前の呼び出しからの応答に基づいて複数のWebサービスを呼び出す
- 2. フレックスの基本認証でWebサービスを呼び出す方法
- 3. Bpel 12c - 基本認証でWebサービスを呼び出す
- 4. C#クライアントで基本認証Java Webサービスを呼び出す
- 5. Web API認証基本とベアラー
- 6. Webサービスを呼び出すWebサービス
- 7. Webサービスを呼び出す
- 8. Webサービスに応じて呼び出す
- 9. 同じサービスを呼び出すWebサービスとWebアプリケーションを呼び出すWin-app
- 10. 関数呼び出しに基づいて異なるレイアウトを呼び出す
- 11. 基本認証401快適なWebサービスを呼び出す不正なエラー
- 12. Webサービス参照でAPI呼び出しに認証を渡す
- 13. 角2 HTTP呼び出しの別のサービスに基づくURL
- 14. Webサービス呼び出しHTTPS
- 15. iOS基本認証を使用したWebサービスの迅速な呼び出し
- 16. Webサービスを呼び出す例外を呼び出す
- 17. 改造「認可」、「ベアラー」+トークン
- 18. conditionに基づいてSpringのinitメソッドを呼び出す
- 19. リストエントリに基づいて関数を呼び出す方法は?
- 20. キネシスのレコードに基づいてラムダを呼び出すパーティションキー
- 21. 人気度に基づいてWordPress投稿を呼び出す
- 22. タイプに基づいてDALメソッドを呼び出す
- 23. セルの値に基づいてサブを呼び出す
- 24. URIに基づいてPHP関数を呼び出す
- 25. サブクラスの型に基づいて別のメソッドを呼び出す
- 26. phpの入力に基づいてフォームを呼び出す
- 27. ダイナミックレンジに基づいて関数を呼び出す方法は?
- 28. ADSF Webアプリケーション呼び出しWebサービス
- 29. Web API呼び出しWebサービス
- 30. タイプに基づく呼び出しメソッド
を返す必要があります私はあなたのユースケースを理解することができますが、私は本当の問題が何であるかを作るように見えることはできません。あなたはあなたの質問を言い換えて、特定のことを聞くことに集中したいですか?実際には、この種の認証フレームワークは今日はかなり標準的です。通常はトークンを要求します。サービスはrefreshTokenとアクセストークンを返します。 'Refresh token'は、古いものが期限切れになったときに新しい' access token'を取り出すために使われます。認証時には、 'access_token'を使用して自分自身を識別するための認証が必要なサービスを呼び出します。 –
@ SamuelToh私はデザインパターンが必要です。 Webサービス呼び出しの1つが失敗した場合に備えて、これを処理する方法が必要だと思います。多分私たちは単にこのサービスをそれぞれ呼び出すべきではないかと思います。 –
この問題のデザインパターンはわかりません。私はあなたが外部のパーティのWebサービスのドキュメントを読んで、例外を適切に処理しなければならないと思う。例えば。アクセストークンが期限切れになったことを示す特定のHTTPコードとエラーを返す場合、コードは適切なトークンリフレッシュAPIを呼び出して、新しいアクセストークンでWebサービスを再試行する必要があります。あなたのソリューションは、外部パーティがエンドポイントと例外をどのように設計するかにかなり依存します。 –