私は、RESTful APIを介してのみバックエンドと通信するアプリケーションを開発しています。今私の認証/承認はすべてOAuth2プロトコルに基づいています。これが十分に安全かどうかは疑問です。私のOAuth2ログインは安全ですか?
私のログイン/ログアウトワークフロー:
- は、アクセストークンを要求するためのAPI呼び出しを発行します。情報は、
app_key
,app_secret
,username
,password
,grant_type
を含む。このトークンをローカルストレージに保存します。これは、このユーザーがログインしていることを示します。 /api/profile
のような制限付きのリソースを要求する場合、フロントエンドは、token
のAjaxリクエストをリクエストヘッダー:Authorization [token]
に送信します。- バックエンドは
token
から現在のユーザーを取得し、許可するかどうかを決定します。 - ログアウトするには、ローカルストレージからトークンを削除するだけです。
(XSSから保護するための)HTMLエンコードと(トークンの爆発を防ぐための)HTTPSを追加する予定です。
このような「シンプルな」メカニズムは、CSRFなどの一般的な攻撃から自分のサイトを保護するのに十分な安全性を備えているのでしょうか?
ありがとう@Erlend。しかし、OAuth2は認証用ではありませんか?私はGoogleアカウントに似たシステムを手に入れようとしています。その後、Gmailアカウントは認証を行うことができますか?もう一つのポイントは、クライアントがログインできるようにするには、クライアントが自分のシステムにAppを登録する必要があるため、クライアントが秘密を知っていることです。 Google Appと同じように、アプリの秘密を安全に保つことは、クライアントの責任です。私は正しいですか? – Joy
あなたのポイント2と4は間違いなく感謝します、ありがとう。 – Joy
GoogleはOpenID接続を使用しています:https://developers.google.com/identity/protocols/OpenIDConnect(OAuth 2の上に構築されています) – Erlend