こんにちは。Tedです。
先日メール・LINE共有クラウドRe:lationにてGoogleからGmail API利用の承認を得ました。予想していたより大変であったので、備忘録的にここに記載しておこうと思います。
Google OAuth利用の声は高まっていた
Re:lationではメールの送受信にSMTP、POP3を利用します。Gmail(ここではG Suiteも併せて単に「Gmail」と書きます)ではSMTP、POP3をRe:lationなど外部メールクライアントにて利用するためには、Gmail設定にて「安全性の低いアプリを許可する」ことが必要でした。
SMTP等を使うことを一方的に「安全性が低い」と決めつけられるのは気持ちのいいものではありません。ただGoogleとしてはID、Passwordを他のシステムで保存されるようなことは極力避けたいのでしょう。Google OAuthを使ってほしいという思惑でもあると思います。実際Re:lationでもGoogle OAuth対応は以前より取り組み予定として位置づけていました。
またGoogle OAuth対応までは、下記のようなお声をいただくこともありました。
https://twitter.com/juners/status/716261432908603392
対応の予定はしていたものの、他の案件との兼ね合いでこれまでリリースできていなかったことを申し訳ないなと感じていました。
SASL XOAUTH2対応が必要となった
いよいよRe:lationにてGoogle OAuth(SASL XOAUTH2)対応に着手できるようになった頃、奇しくもGoogleから「Turning off less secure app access to G Suite accounts(「安全性の低いアプリ」設定を廃止するよ)との通達がありました。
G Suite Updates Blog: Turning off less secure app access to G Suite accounts
この通達では2020年6月以降「安全性の低いアプリ(LSAs)」の設定に制限を実施すること、2021年2月にはこのLSAs許可設定ができなくなることが書かれていました。*1 つまりRe:lationでのGoogle OAuth対応の期日が決められたことになります。私たちは早速開発を進めました。
開発・そしてリリース
この対応にはGmailユーザのみGmail REST APIを使う手もありましたが、他のメールサービス同様にSMTPプロトコルを使う(スコープは https://mail.google.com/)こととしました。
開発およびテストはスムーズに進んだと思います。他の案件も並行して進める中で約4週間で完了しました。
Google OAuthできない!なぜ??
この機能、リリース当日は問題ありませんでしたが、翌日になると利用者より「Google OAuthでのログインができない」との声が寄せられるようになりました。
理由は明快でした。OAuth可能ユーザ数の上限に達したためにそれ以降のログインが許可されなくなっていたのでした。
Google OAuthを利用可能なユーザは、最初100までと決められています。
このことは理解していましたが、正式に機能をリリースしてGoogleに「連絡」さえすればこの上限は外されると勝手に思い込んでしまっていました。けれどもそれは間違いで、この制限を取り払うためにはGoogleに「審査」を依頼する必要があったのでした。
Unverified apps - Google Cloud Platform Console Help
GoogleにOAuth利用を申請
Gmail APIスコープは制限されたスコープとなっています。そのため、このスコープをOAuthにて設定するにはGoogleによる以下の検証(認証)が必要です。
- Google’s API Services User Data Policy に従っているか
- Additional Requirements for Specific Scopes に従っているか
また加えて、上記がGoogleにて確認された後、第三者によるセキュリティアセスメントも必要となっています。
これらはかなり本格的なものであり、承認取得までには私たちが当初予測していたよりずっと長い時間と対応が必要でした。
次回は、GoogleからのGmail API承認取得までの道のりについて書きたいと思います。
*1:注:2020年5月8日時点では、Googleによるこれらの予定は急遽延期されることとなっています。おそらく新型コロナの影響かと思われます