サービス用のパブリック HTTP バックエンド API を開発しています。その上に、ユーザーがログインする Web アプリがあり、バックエンド API を使用してユーザーの要求を満たす必要があります。API は OAuth2 をサポートし、Web アプリは単一ページのアプリであり、JavaScript が大量に含まれています。
私の懸念は、ブラウザーと Web アプリが API とどのように対話するかです。私は2つの可能な方法を見つけました。
ブラウザは API を直接使用します
ユーザーが資格情報を入力してログインすると、Web アプリはその資格情報を API に渡し、OAuth access_token を受け取ります。OAuth access_token はブラウザーに直接渡され、何らかの Cookie に保存されます。その後、API へのすべてのリクエストは、JSONP を介してブラウザーから直接行われます。ユーザーがログアウトすると、Web アプリはセッションを破棄します。
ブラウザーは Web アプリと通信し、Web アプリは API と通信します
ユーザーが資格情報を入力してログインすると、Web アプリはその資格情報を API に渡し、OAuth access_token が与えられます。ユーザーでセッションが作成され、access_token がセッションに保存されます。ブラウザーが API と通信する必要がある場合、Web アプリを経由します。Web アプリはセッションでアクセス トークンを使用し、API を呼び出して、ブラウザーに応答を配信します。
どちらの方法にも、パフォーマンスとセキュリティのトレードオフに関する長所と短所があります。どう思いますか?
PS: 私が見たところ、twitter はブラウザーから直接パブリック API を使用しますが、認証のためにセッション Cookie を渡します。つまり、彼らの API は Cookie セッションもサポートしているということですか?