0

セットアップは次のとおりです。組織向けに構築されたWebアプリケーションがあります。これらの組織は、カスタマイズされたシステムにログインする単一のユーザー名とパスワードを持つことも、システム内のさまざまな権限を持つ複数のユーザー名とパスワードを持つこともできます。ユーザー名とパスワードは独自のデータベースに保存していますが、ユーザーがTwitter、Facebook、GMailなどの資格情報を介してシステムにログインできるように(プロファイルや連絡先などにアクセスできるように)OAuthの使用を検討しています。すべてのユーザーが同じログインページにアクセスします。

私の質問はこれです:

OAuthを使用して、正しい権限で正しいシステムにログインさせるにはどうすればよいですか?

彼らは通常どおりにログインし(私のWebアプリのクレデンシャルを使用して)、「Twitterアカウント「Example123」にこのシステムへのアクセスを許可したい」と指定する場所が必要ですか?

4

1 に答える 1

0

現在のデータベースの各ユーザー名とパスワードは、将来のデータベースの各サービスプロバイダーのユーザーIDに対応します。例えば:

user_id | group_id | username | password | twitter_user_id | facebook_user_id | google_user_id
1001    | 3003     | fred     | abc123   | aaaaaaaa        | bbbbbbbb         | ccccccc

このような構造を使用すると、既存のログインメカニズムを引き続き使用できるだけでなく、ユーザーがfacebook / twitter/etcアカウントを現在のログインにリンクできるようにすることができます。データベースに何らかの形式のユーザーIDとグループIDが既に設定されていると想定していますが、そうでない場合は、これが最も簡単な方法だと思います。

既存のアカウントをユーザーのさまざまなサービスプロバイダーアカウントにリンクするには、さまざまな方法があります。既存の構造に適合し、ユーザーに最もシームレスなエクスペリエンスを提供するアカウントを選択するのは、実際にはあなた次第です。ユーザーが新しいサービスプロバイダーを自分のアカウントにリンクできるWebサイトの1つの可能なoauthフローは次のとおりです。

  • ユーザーがサイトのログイン画面に移動します
  • ユーザーは元のユーザー名とパスワードを使用してログインします
  • ユーザーが自分のアカウントにリンクするサービスプロバイダー(Twitterなど)を選択する
  • ユーザーはTwitterにリダイレクトされます
  • ユーザーはTwitterのOAuth画面でTwitterのパスワードを入力し、あなたが必要だと言った情報にWebサイトがアクセスできるようにすることに同意します
  • 次に、Twitterはユーザーをoauthコールバックページにリダイレクトします
  • 返されたTwitterID(およびTwitterが返すその他の情報)を取得し、このユーザーに対してデータベースに配置します
  • 今後、ユーザーはツイッターのみでログインできるようになります

ユーザーが1つのサービスプロバイダーを有効にすると、同じアカウントにアクセスするための2つの手段があります。

上記のプロセスに加えて、ユーザーが自分のアカウントで実行されたアクションを確認できるように、監査証跡を追加することをお勧めします。これはあなたが利用できる時間に依存するかもしれませんが、それはあなたに将来のカスタマーサポートの多くの苦痛な時間を安全にする可能性があります。ユーザーに伝えることができる情報が多ければ多いほど、またこの情報を管理するためにユーザーに与える力が大きいほど、自分で行う必要のある調査が少なくなり、ユーザーの問題を修正するために費やす時間が少なくなります。

于 2012-09-14T01:55:03.430 に答える