2021年09月29日 スタッフブログ 関戸
昨今メール送受信のセキュリティが高くなってきているようで、特にGmailやGsuiteの場合、設定を変更しない限りOAUTH2.0認証以外でのメール送受信ができなくなっているようです。
そこで現在、このOAUTH2.0認証に対応し、Gmailアカウントを送信元としてPCできる蔵からメール送信する機能を開発しています。
なかなか情報が少なく、手探りで開発している状態ですが、ここまで整理できた内容をまとめてみました。
OAUTH2.0認証を用いてデータを取得したり操作したりする場合、事前にユーザーが同意する必要があります。
スマホにアプリをインストールすると、初回起動時に許可を求められる場合がありますが、ちょうどそのイメージです。
この許可や実際の操作などだれが何をしているのかを図にまとめるとこちらのようになります。
OAUTH2.0認証の場合、「許可サーバー」というものがあり、こちらが認可・認証・権限等のコントロールを行っているのがポイントのようです。
上記の図をPCできる蔵を使ってGmailアカウントを送信元としてメール送信するというケースに当てはめてみました。
まず、APIを作成・公開し、許可サーバーに認証されてメール送信できるようにするまでの設定の流れは下記となります。
各矢印で何が作成されたり、何が送信されるのかは、具体的にはこちらになります。
(Google Cloud Platform管理画面)
(PCできる蔵設定画面)
(ブラウザ表示)
(ブラウザ)
(Http通信)
設定が完了し、実際にメール送信する際の流れは下記となります。
各矢印で何が作成されたり、何が送信されるのかは、具体的にはこちらになります。
(Http通信)
(Http通信)
(Http通信)
開発しながら気が付いたのですが、このOAUTH2.0認証を使った場合、メールアカウントのパスワードを登録する必要がありません。
今回のケースの場合、PCできる蔵内のプログラムやデータベースにこのGmailアカウントのパスワードを保存する必要がありません。ですので、仮にもしデータが流出しても、このGmailアカウントが乗っ取られる心配がありません。
また、APIを作成する際、どの範囲の操作を許可するか(スコープと言うそうです)を正しく設定しておけば、それ以外の操作ができなくなります。例えば、今回の場合はメール送信のみを許可する設定にしておけば、過去のメールを閲覧することなどもできません。
この辺りの点がOAUTH2.0認証のポイントと言えそうです。
今後、メールアカウントの認証はOAUTH2.0認証が必須となりつつなるようなので、他のメールアカウントでも対応できるよう開発を進めているところです。
また、クラウドサービスのデータをAPIを用いて利用するケースなどもOAUTH2.0認証が必要なケースも増えているようなので、このような場合にも応用できると思います。