質問: アプリケーションのバックエンドサーバから呼出される(インターネットに公開しない)WEB APIを開発しています。 内部犯の脅威を考慮した場合に、このようなAPIの認証についてどのように考えるべきでしょうか。 ネットワークのレイヤでは特定の内部サーバからしかAPIアクセスできないよう制限を設ける事になると思いますが、 アプリケーションとしてどのような認証を行うべきか、少し混乱しています。 呼出元がユーザではなく、プログラムとなるため、認証の考え方が変わってくるのかなと思うのですが、 整理ができておりません。 「認証」、「認可」のそもそもの定義を鑑みると今回のケースは認証は不要で認可ができればいいのでしょうか? ・Basic認証 ・クライアント証明書による認証 ・独自のトークン払い出し ・Oauth などなど様々な方法で実現はできそうなのですが、 この当たりをどのように考えたらよいのか、ご教示いただけますと幸いです。
回答: もし、apiを叩きたい元のアプリケーションが、webapiと同一の環境で実行されるのならば、そもそも外へポートを開放せずにループバックでapiを使うことができますね。 そうではなく、apiを提供するサーバーが同じLANの中に居る別さーばーの場合は、静的NATさえ設定しなければLANの外からはアクセスできないので心配ありません。 ただ特定の端末からのみならば、ファイアウォールでipを指定してポートへのアクセスを弾けば大丈夫です。 とりあえずもう少し詳しいシステム構成を教えていただければ、もう少し的確な回答ができるかもしれません。