私は複数のAzureモバイルサービスインスタンスを用意する予定ですので、最初に必要なのは、認証されたユーザーのアクセストークンをさまざまなアプリケーションインスタンスで共有することです。この記事では、マシン上にローカルに保存されているトークンを共有することができず、ブロブストレージに配置することはプロダクションアプリには推奨されないと述べているhttps://cgillum.tech/2016/03/07/app-service-token-store/が見つかりました。現時点で可能な解決策は何ですか?異なるWebアプリケーションインスタンス間でAzureモバイルサービストークンを共有する方法
答えて
私はあなたがApp Service Token Storeについて言及したblogを読んでいます。トークンが住んでいる場所について述べたように:
を内部的には、これらすべてのトークンはDの下で、アプリケーションのローカルファイルストレージに格納されます。を/home/data/.auth/tokens。トークン自体はすべて、アプリ固有の暗号化キーを使用してユーザー固有の.jsonファイルで暗号化され、ベストプラクティスごとに暗号署名されています。
私はそれがマシン上でローカルに保存されているとして、今私たちは、トークンを共有することができないと述べて、この記事https://cgillum.tech/2016/03/07/app-service-token-store/を見つけました。 AzureのWebアプリケーションを扱うことができ永続ファイルについてAzure-runtime-environment状態として
:
彼らはDに根ざし:ホーム、\これはまた%のHOMEを使用して見つけることができます%環境変数。
これらのファイルは永続的なものです。これらのファイルは、変更するまではそのファイルに頼ることができます。また、サイトのすべてのインスタンス間で共有される(複数のインスタンスにスケールアップする場合)です。内部的には、これが動作する方法は、ローカルファイルシステムではなく、Azure Storageに格納されていることです。
また、Azureのアプリケーションサービスは、同じインスタンスに話しクライアント後続の要求を維持するためにARRアフィニティを可能にします。セッション・アフィニティ・クッキーを無効にすると、リクエストはすべてのインスタンスに分散されます。詳細については、blogを参照してください。
また、私はその後、私はいつもブラウザhttps://[my-website].azurewebsites.net/.auth/meは、現在ログインしているユーザーに関する情報を取得することができ、ARR親和を無効にして、複数のインスタンスに私の携帯電話サービスを拡張しようとしています。
あなたのアプリケーションに認証ミドルウェアを使用するには、自分で認証/承認を行うことができます。しかし、これにはもっと多くの作業が必要です。プラットフォームはあなたのために世話をするので、簡単な認証とトークンストアを活用し、モバイルサービスを何も心配することなく複数のインスタンスに拡張できると仮定します。
- 1. 異なるサーバーにある2つのアプリケーションインスタンス間の共有データベース
- 2. 複数のアプリケーションインスタンス間でメモリを共有
- 3. AzureのWebアプリケーションインスタンス
- 4. Azure WebアプリケーションとOnprem .net Webアプリケーション間でデータを共有する
- 5. 異なる機能間でオブジェクトを共有する方法
- 6. 異なるメソッド間でintを共有する方法java
- 7. 異なるモジュールのコントローラ間でデータを共有する方法
- 8. 2つの異なるWebサイト間でログインを共有
- 9. 異なるページのビジュアルWebパーツ間でデータを共有
- 10. 異なるプロジェクト間でnode_modulesを共有
- 11. Azure関数 - 異なる呼び出し間の共有オブジェクト
- 12. 異なるサーバー間で共有キャッシュ
- 13. 異なるアクティビティタイプ間で共通の機能を共有する
- 14. Xamarin.iOS、異なるストーリーボードで2つのプロジェクト間でビューコントローラを共有する方法
- 15. Pythonで異なるクラス間でインスタンス変数を共有する方法
- 16. Webアプリケーション間でメッセージオブジェクトを共有する
- 17. Matlabの異なるmファイル間で変数を共有する方法
- 18. 角2:異なるルート間で非モジュールレベルのサービスを共有する方法
- 19. android - 2つの異なるRecyclerViewAdapter間で共有プリファレンスを使用する方法
- 20. 異なるJSファイル間で同じスコープ変数を共有する方法
- 21. 異なるラムダ関数間でデータベース接続を共有する方法
- 22. 同じアプリケーション内の異なるミニアプリ間でReact Routerを共有する方法
- 23. いくつかのクラス間で異なるオブジェクトを共有する方法
- 24. RSpec変数を共有コンテキスト間で共有する方法は?
- 25. 異なるWAR間のスレッドプールの共有
- 26. 異なるWebサイトアプリケーション間でASP.NET .ascxコントロールを共有する最も良い方法は?
- 27. Web2PyのWebユーザ間でデータベースなしで変数を共有する方法
- 28. drupalで異なる.tpl.phpテンプレート間で変数を共有する
- 29. 異なるPythonプロセス間で異なるニューラルネットワークの共有重みを設定する方法は?
- 30. 異なるユーザーアカウント間でMysql DBテーブルを共有する
ありがとうBruce、上の質問では、私は複数のインスタンスについて言及しましたが、私は、異なる地域にまたがる複数の紺碧のモバイルサービスインスタンスを意味します。アジアでは1つ、ヨーロッパでは1つ、米国ではもう1つ、Azureトラフィックマネージャを使用して最寄りのインスタンスにリクエストします。私はasia地域のサーバーを更新しています)、そのトークンはアジアのサーバーにローカルに保存されているので、リクエストがヨーロッパのサーバーに行くと要求が拒否されます – Anu
最新のシナリオに基づいて、サーバーを更新するときにアクセスできる場合は、[deployment slot](https://docs.microsoft.com/en-us/azure/app-service-web/web-sites-staged-publishing)を活用して開発環境を設定することができますプロダクションスロットとスワップする前に、ステージングデプロイメントスロットでアプリの変更を検証します。 –
または、あなたのアプリケーションに認証サービスを構築し、ログインした情報(プロバイダ、アクセストークンなど)を共有ストレージ(例:[Azure Redis Cache](https://docs.microsoft.com))に保存する必要があります。/en-us/azure/redis-cache/cache-dotnet-how-to-use-azure-redis-cache))を使用すると、パフォーマンスが向上します。さらに、この[チュートリアル](https://www.asp.net/web-api/overview/security/external-authentication-services)を参照することもできます。 –