私があなたの質問を正しく解釈している場合、あなたは次のようなものを探しています:
- ユーザーがブラウザ アプリまたはネイティブ アプリ (おそらくモバイル アプリ) を起動します。
- ユーザーはまだアカウントを持っていないため、そのアカウントを作成するための適切なダイアログを表示します。
- 次に、「Identity Service」にそのユーザーのプロファイルを作成するよう依頼します
- ID サービスがアクセス用のトークンを返す
これは、モバイル ネットワーク業界で常に行われていることです。技術的には、TAC/ACS または HSS プロファイル サービスがありますが、どちらの場合も同じです。専用のサービスとネットワーク プロセスで、次のことを行います。
- さまざまなクライアント (Web、モバイル、デスクトップなど) からの接続を受け入れます。
- データベース CRUD (作成、読み取り、更新、削除) モデルに沿ったさまざまなプリミティブがあります。
- Answers はデータベースを要求します
事前構成されたソリューションが必要な場合は、ネットワーク化されたデータベースを REST スタイル コネクタ (MongoDB かな?) などで使用できますが、NoSQL または SQLLite データベースと対話するプロセスでこれを使用することもできます。最終結果は同じです。
商用ソリューションの場合、コードを実行できる OpenStack が好きかもしれません。OpenStack には CoOpt できる ID ブローカーがあります。
個人的には、次のような RESTful リクエストに応答する Amazon の EC2 のようなクラウド上でデータストアを実行するだけです。
- 指定されたプロファイル セットでユーザーを作成し、一意のトークンを返します
- トークンを指定してユーザーを削除する
- 特定のトークンのプロファイルの要素を更新します
ここではセキュリティなどの必要なことを省略していますが、おわかりいただけたでしょうか。
これには、すべてのアプリケーション/アプリケーション サービスに対して単一の ID サービスを使用できるという利点もあります。特定のアプリケーション要素の詳細は、プロファイル内の単なるサブフィールドです。これにより、Web、デスクトップ、およびモバイル用の共通 ID ブローカーだけでなく、すべてのアプリケーションのシングル サインオンが提供されます。ユーザーは一度サインインすると、所有するすべてのものに対して認証されます。サイトからサイトへの移動がシームレスになりました。
最後に、ID 管理、バックアップ、セキュリティ トークン管理などをアプリケーションの外に配置します。後で 2 要素認証用に Google Authenticator を追加する場合は、使用しているすべてのアプリケーションに追加する必要はありません。
また、ID データベースを直接インターネット接続ポイントに保持したくないことも付け加えておく必要があります。誰かがあなたの人生を困難にし、後でそれを手に入れることができます. むしろ、ID サーバーにプライベート リンクを持たせたいと考えています。次に、次のようにします。
- アカウントが作成されたら、パスワードを保存せず、ハッシュを保存します -- はるかに安全です
- アプリケーション (Web またはその他) にログインとしてキーを計算させる
この場合、ユーザーはユーザー名とパスワードを入力する可能性がありますが、アプリケーションまたは Web サイトはそれをトークンに変換します。それがあなたが送るものです。
- 次に、そのトークン (および適切なセキュリティ マジック) を使用して、THAT を所有者キーとして使用します。
- そのキーをデータストアに送信し、必要な値を取得します
- トークンを使用してそれらを暗号化してブロブに戻します
- ブロックを送る
- アプリケーションはブロブを復号化して値を取得します
なぜこれを行うのですか?
まず、誰かが ID データベースにアクセスしようとしても、何の役にも立ちません。ログイン用の不透明なトークンと、暗号化されたデータのブロブのみが含まれています。先に進みましょう -- データベースを取得してください。私たちは気にしません。
第 2 に、トランスポートを盗聴しても、攻撃者は何も得られません。これも、すべて暗号化された BLOB です。
これは、後でブローカーを使用する 5 つのアプリケーションがあり、誰かがネットワークをハッキングしてデータベースを盗んだとしても、ユーザーは最初からログインとパスワードを提供したことがないため、気にしないことを意味します。ユーザーキーを持っていない人にとっては、データ自体はゴミです。
これは役に立ちますか?