私は現在、GoにAPIを書いており、認証/承認を正しく安全に行う方法について頭を悩ましています。API認証フロー
私はそれを理解するように、これはそれが行く方法です:アカウントの
- 新規ユーザー登録を
api/user/register
エンドポイント(または既存のユーザーのapi/user/login
)を介して - サーバーは、ユーザー名が一意であることを要求してチェックを受けますその後、アクセストークンとリフレッシュトークン(どちらもうまくいけば)が発行され、両方ともセキュリティが強化されて署名されています。
- クライアントアプリケーションはトークンを受信し、ブラウザのCookie(またはローカル/セッションストレージ)に保存し、後続のすべてのリクエストで確実にHTTPS経由でそれらを送信します。
- 保護ルートへのリクエストを受信すると、サーバーはアクセストークンの有効期限をチェックし、有効期限が切れていれば、データベースのリフレッシュトークンの有効性をチェックします。無効な場合は、クライアント側の再認証を依頼してください。それ以外の場合は、新しいアクセストークンを再発行します。
私の質問は、リフレッシュトークンを扱う手順に関するものです。
私は(Reactの)クライアントアプリケーションも書いています。 APIを一般に公開することはしません。私はクライアントアプリケーション用のAPIとしてバックエンドを書いています。
- まだリフレッシュトークンを使用する必要がありますか?
api/auth/token
ルートが必要ですか?私は実装の例でそれらについて読んでいますが、私はちょうどそうするように別のエンドポイントを照会する代わりに、バックエンドコードでデータベースを照会してトークンを再発行するいくつかのヘルパー関数を持つことができます。
申し訳ありませんが、彼らは馬鹿な質問だが、私は認証仕様を詳細ページの後のページの上に熟読してきたし、ページからページへの微妙な違いは、私は混乱し、本当に「ベストプラクティスは何かがわからないままにしている場合" 生産中。
個別の更新トークンを必要とする要件がありますか?私はあなたの質問に何かを特定することができませんでした。私は実際の世界の生産システムを知っていますが、ほとんどはそうしていません。 –