質問: Google APIを使ってツールを作成しました。Webアプリのようなものではなく、ローカルで動くPythonスクリプトで、REST APIにアクセスしています。 これの公開を考えていますが、現状、client_id, client_secretが丸見えです。 そこで、質問です。 1. OAuth2のclient_secretが漏れると、誰(例:API公開者であるGoogle, APIを使ったアプリの開発者である私, アプリの利用者, それ以外の第三者)にとって、どのようなリスクがありますか? 2. もしclient_secretを漏らすべきでないとすれば、どのようにして隠すのがセオリーでしょう?
回答: > > 1. OAuth2のclient_secretが漏れると、誰(例:API公開者であるGoogle, APIを使ったアプリの開発者である私, アプリの利用者, それ以外の第三者)にとって、どのようなリスクがありますか? > > > OAuth2は「認可」のための仕様です。「あなた(ユーザ)に代わって、○○さん(が作ったプログラム)があなたの情報を扱うことになるが良いか?」という許可をユーザから得ることになります。つまり、そのユーザに対して、プログラムの作者を信用してもらうことが必要になってきます。 client_secretが漏れること、それはすなわち、別の誰かが「あなたの名前を語って」ユーザの情報を扱うことができるようになってしまう、ということを意味しています。ほとんどの場合、ユーザの情報は個人情報などを含む非常に大事な情報になりますので、client_secretの保護を怠った開発者は自分の名前を誰かに語られて不正にユーザ情報を収集され、ユーザ情報が悪用された結果、その責任が「client_secretの保護を怠った開発者」に降りかかってくる可能性が非常に高まると言うことができるかと思います。 > > 2. もしclient_secretを漏らすべきでないとすれば、どのようにして隠すのがセオリーでしょう? > > > 「ローカルで動くPythonスクリプト」を公開するのであれば、そのスクリプトにあなたが取得したclient_id及びclient_secretを書かない状態で公開するのが良いかと思います。そのスクリプトを使いたければ、自分でclient_idやclient_secretを取得して自己責任で使ってください、とすれば良いかと思います。