私は非常に典型的な Web アプリ製品を構築しています。将来的に対応するモバイルアプリが登場する可能性があります。OAuth2を使用して保護されたREST APIを使用して、ゼロから構築しています。OAuth2 が機能しており、さまざまな許可タイプを使用して正常に接続できます。
私が少し混乱しているのは、実際の Web アプリに使用する許可の種類です。これが私が念頭に置いていたことです:
パブリック API アクセス
ユーザーが Web アプリにログインする前に、ユーザー登録やパスワードのリセットなどのためにいくつかの API アクセスが必要です。私はclient_credientials
グラントタイプを使用することを考えていました。アクセス トークンと引き換えに、単純なクライアント ID とシークレットの検証。
ただし、パブリック リクエストごと、またはセッションごとにトークンへのアクセスをリクエストする必要はまったくないようです。Web アプリが常に使用するアクセス トークンを 1 つだけ生成する方が理にかなっているようです。
しかし、これは OAuth が機能するように設計されている方法に反しているようです。たとえば、アクセス トークンは期限切れになります。これを行う正しい方法は何ですか?
プライベート ユーザー API アクセス
次に、ユーザーが Web アプリにログインするには、password
付与タイプ (リソース所有者のパスワード資格情報) を使用する予定でした。このアプローチによりuser_id
、アクセス トークンを使用して を保存できるため、どのユーザーがログインしているかがわかります。さらに、スコープを使用することで、API 内のアクセスを制限できます。
PHPセッション内にアクセストークンを保存する予定です。PHP セッションがアクティブである限り、Web アプリにログインしたままになります。
これはユーザー ログインの適切な設計ですか?