1

私は、OAuth2.0の暗黙のフロー(OIDC付き)がかなりシンプルなSPA/Mobileクライアント(別名クライアント)と私のREST API(別名リソースサーバ)との関係について理解しようとしています。&新規アカウントを作成しています。SPAでImplicit Flowを使用する場合、実際にデータベースでアカウントを作成する場所はどこですか?

クライアントがAuthサービス(Auth0/Stormpath/IdentityServer/etc)からトークンを要求する方法を、多かれ少なかれ理解しています。その後、このトークンを使用して制限されたAPIエンドポイントにアクセスします。 k素晴らしい!

私が読んでいるすべての例は、これらの認証サービス(これらは必須で、私は完全にkewlです)でも作成されていますが、サービス(私のリソースサーバー)では何も作成されません。

私は自分のDBにアカウントを作成する必要があります。私が保存したいユーザーデータ/設定(例えば、注文など)があるからです。もちろん、私はセキュリティ情報を格納しないようにしないでください。なぜ私は外部の認証サービスを使用しています。

したがって、どのように暗黙的なフローを使用するか説明することができます。トークン(または具体的には、OpenID Connectを使用してユーザー情報を取得するとき)が返されると、ユーザーが存在するかどうかを調べ、新しいものなら1つ。

また、トークンissuer_id + subは、認証サービスの時点からuniqueユーザーを決定する必要があります。

最後に、「新しいアカウントのスパム/不正行為」を防ぐ方法を教えてください。私はクライアントのある時点(各Rest APIリクエストの前にローカルストレージトークンを確認する)で、新しいユーザーを作成するときに、bearerヘッダーにトークンを付ける必要があると仮定しています。 ..私のREST Api(別名リソースサーバー)は、新しいユーザーを作成するためのエンドポイントを持っています.. POST /account/のようなものです。どうすれば、新しいアカウントを作成する新しいランダムなPOSTをspam'dから取得してサーバーを保護するのですか? IP +時間制限の制限?

乾杯!

答えて

1

実際にデータベースにアカウントを作成していますか?

isssubの列を含むデータベーステーブルを作成します。これらの列を、ユーザーを表す固有の複合キーとして設定します。そこにユーザーアカウントを挿入します。

したがって、どのように彼らが暗黙的なフローを使用するか説明することができます。トークン(または具体的には、OpenID Connectを使用してユーザー情報を取得するとき)が返されたとき、ユーザーが存在するかどうかを判断しますそれが新しい場合は1つを作成しますか?

あなたは既に答えを知っているようですね。

  1. id_tokenを解析します。
  2. isssubを取得します。
  3. iss + subキーのアプリの表を確認してください。
  4. ある場合は、そのユーザーが存在します。そうでない場合は、ユーザーを作成します。スペックから

サブジェクト識別子:ローカルで一意と決してクライアントによって消費されることを意図しているエンドユーザーのために発行者の中に識別子を再割り当て。ユーザを表す一意の複合キーとして

https://openid.net/specs/openid-connect-core-1_0.html

isssub働きます。例はid_tokenです。

{ 
alg: "RS256", 
kid: "1e9gdk7" 
}. 
{ 
iss: "http://server.example.com", 
sub: "248289761001", 
aud: "s6BhdRkqt3", 
nonce: "n-0S6_WzA2Mj", 
exp: 1311281970, 
iat: 1311280970 
}. 
[signature] 

は、あなたが他のユニークなユーザ識別子を扱うのと同じ方法でiss + sub複合キーを扱います。

このように、新しいアカウントを作成する新しいランダムなPOSTをスパムから取得しないようにサーバーを保護するにはどうすればよいですか?

エンドポイント/api/accountへのPOSTには、SPAのドメインのみが許可されるように、クロスオリジンリソース共有(CORS)の制限が設定されています。

+1

大丈夫です。だから私がトークンを取得したら、私たちのAPIをヒットして、ユーザーの作成が必要かどうか、あるいは既存のものを使う必要があるかどうかを確認する必要があります。また、そのエンドポイントを保護するためにCORS制限(ホワイトリスト?)を使用できます。 –

関連する問題