web-dev-qa-db-ja.com

マルチテナントWebアプリのAPI設計-別のシステムからユーザーを識別する方法は?

認証されたユーザーがアプリケーションインスタンスに変更を加えることができるマルチテナントWebアプリケーションがあります-例としてコメントを作成します。

外部Webアプリのユーザーが自分のアプリでアクションを実行し、外部アプリのログインしたユーザーが実行したアクションを記録できるAPIを構築したいと考えています。例:「Wanda Bloggsが3分前にコメントしました」

APIを可能な限り一般的に保ちながら、これは可能ですか? (1つの特定の外部アプリに関連付けられていません)。これを実装できるようにするには何を見なければなりませんか?

別のオプションは、「APIユーザーが3分前にコメントした」のようにすべてのAPIアクティビティをマークすることですが、その方法はあまりに匿名で理想的ではありません。

ガイダンスや正しい方向への指示は大歓迎です!

1
user3895395

基本的には、アプリ内のユーザーごとに「Web APIトークン」を取得し、アプリ内に安全かつローカルに保存します。次に、それを使用して要求を認証します(最も単純な場合は、通常の要求に沿って送信します)。

Webアプリに接続し、認証してトークンを取得するには、一度だけ使用する関数が必要です。または、QRcodeを介して(もちろん認証後)Webページに表示でき、アプリはQRcodeをスキャンします。

これを少し安全にするために、現在のUnixタイムスタンプと、そのタイムスタンプとトークンの暗号的に安全なハッシュを一緒に送信できます。その後、サーバーはタイムスタンプが新しいこと、およびハッシュが一致することを確認できます。

これは、HTTPSリクエストの追加ヘッダーとして追加できます。

1
LSerni