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