質問: ウェブアプリがあり、画面からできる操作を、自分で作ったスマホアプリからもできるようにしたいので、ウェブアプリで行っている操作を API 化して、スマホからの操作を受け付けるようにしたいです。その際、認証まわりの設計のベストプラクティスなどはありますか? アプリで user/pass を覚えておいて、 毎回 user/password で Basic 認証させる api 、がパッと思いつきますが、毎回 password 送ることに若干の気持ち悪さを覚えています。
回答: ベストプラクティスかは知りませんが、OAuthで認可を得て通信を行うのが一般的だと思います。 ざっくり流れを言うと、API通信を行う前に認可サーバーにusername/passwordを送信し、API通信を許可するためのアクセストークンを得ます。 そして、そのアクセストークンをAPIリクエストのヘッダなどに乗せて通信を行うことで、そのリクエストが認められたものなのかを判別する、という感じです。 詳しくは調べてみてください。(このあたりは言葉の使い方が難しいので説明が間違っているかもしれませんが、「OAuth 2.0」で調べるとより詳細に分かるかと思います。)