Springブートで構築され、OAuth2を使用するWebベースのAPIがあります。 APIはモバイルアプリケーション用です。Springブートを使用してOAuth2を使用する既存のAPIにクイックサインアップを統合する
モバイルアプリケーションのログインの一環として、ログインするオプションの1つとして、Twitter/Facebookアカウントが使用されています。
私の最初の考えは、APPがFacebook/Twitterでユーザーを認証してからトークンをAPIに渡すことでした。 APIはFacebook/Twitterでトークンを確認し、FB/Twitter Idを収集し、そのIDを使用して新しいアカウントを作成します。しかし、このアプローチの問題は、OAuthライブラリがそのすべてを処理する標準ログイン(ユーザー名/パスワード)のように、既存のOAuthライブラリを使用してベアラトークンを作成する方法がわからないことです。
もう1つの選択肢は、APPにFacebook/Twitterでユーザーを認証させ、ユーザー名としてユーザーFB/Twitter IDを使用してAPIを使用してユーザーを通常どおり登録することですが、統合がはるかに容易です。
分の時点で、認証トークンはOAuthライブラリによってMySQLデータベーステーブルoauth_access_tokenに格納されます。私は手動でJWTを作成し、このテーブルを自分で更新できると思います。
私は有用な提案にはお答えできません。
**パスワードを暗号化しないでください**、攻撃者がDBを取得したときにも暗号化キーを取得します。約100msの間、ランダムな塩でHMACを繰り返し、塩をハッシュで保存します。 password_hash、PBKDF2、Bcryptなどの関数を使用します。要点は、攻撃者が無差別にパスワードを見つけるのに多くの時間を費やすことです。 – zaph
申し訳ありませんが、私は言及すべきでした。パスワードは、塩と一緒にパスワードを格納するBCryptを使用してデータベースに格納されます。私が使用する唯一の暗号化は、ソーシャルメディアアカウントのパスワードを生成することです。ユーザーのtwitter IDが123456の場合は、暗号化キーを使用してパスワードを作成し、その結果をデータベースに格納してから、BCryptを最初に渡します。明らかに、もし誰かがプロジェクトのソースコードを入手しようとすれば、私たちがソーシャルパスワードをどのように作成するかを決めることができますが、別の方法で考えることはできません。 – SheppardDigital
攻撃者はサーバーへの管理アクセス、つまり攻撃の仕組みを取得します。攻撃者は専門家であり、毎日働き、攻撃システムで作業しますが、これは通常の仕事です。彼らは熟練しており、おそらくあなたよりもセキュリティと暗号技術が熟練しており、優れた攻撃ツールを持っています。明らかにこれをある程度理解するか、サーバー上の暗号化を気にしないでください。暗号化キーがサーバー上のファイルに格納されている場合は、そのキーが検出されて使用されます。あなたはたぶん攻撃があったことを決して知らないでしょう。 – zaph