こんにちは、CData Software Japanテクニカルサポートエンジニアの大川です。
今回は、CData製品でよく出てくるOAuth認証について簡単に解説させていただきます。
はじめに
たとえば弊社製品にはGoogleスプレッドシートのデータをExcelに簡単に取り込むことができる「Excel Add-In for Google Sheets」という製品があります。
こちらをお使いいただくと、インストールしてExcelのCData接続マネージャから「接続テスト」ボタンを押すと自動的にブラウザが開き、冒頭の画像のように「CData Sheet ConnectorがGoogleアカウントへのアクセスをリクエストしています」という画面が表示され、ここで「許可」をクリックするだけで認証・認可が完了してExcel上でGoogleスプレッドシートのデータ操作が可能となります。
弊社で扱っているJDBCドライバ、ODBCドライバなど他の製品でもこのように実際に利用開始するまでの手順が非常に簡単にできるようになっています。
では、「許可」ボタンを押すにあたって、誰に対して、何が「許可」されるのかをもう少しご説明したいと思います。
記事を書こうと思った動機
私はCData Software JapanにJoinする前はOAuthの仕組みに触れる機会がほとんどありませんでした。
初めてCData製品を触ってこの画面を見たとき、「これを許可すると私のアカウントにCData社のサーバから接続されるようになってしまうのかな」と思ったものです。そういった疑問を持つ方は他にもいらっしゃると思い、(今ならサポートエンジニアとして)理解している内容に基づいて説明させていただきたいと思います。
OAuth
ちなみにこちらは「OAuth」という権限認可の仕組みで実現されているのですが、OAuth自体の説明はインターネット上にも多数存在するため、ここでは触れません。また、簡単のため以後細かな説明も省略します。
「許可」ボタン画面の意味
実際、弊社製品でOAuthで認可情報を取得しようとすると、ブラウザに以下のような表示がされて許可を求められることがあります。今回は「Excel Add-In for Google Sheets」でCData接続マネージャから「接続テスト」ボタンを押した場合を例にご説明します。
CDataロゴや「CData Sheets Connector」の正体
さてこの画面ですが、CDataのロゴや「CData Sheets Connector」という表記があります。これは何を意味しているのでしょうか。
これは、弊社がコネクタ製品をあらかじめGoogleのプラットフォームでアプリ情報として登録をしており、認可を求める際にアプリ情報の識別子(Client IDと呼ばれます)をブラウザ経由でGoogleに渡すことで、認可を求めているのが弊社アプリであることが識別されて表示されているものになります。
「誰に」権限を認可するのかという点ですが、「CData Sheets Connector」の表記は今回の場合は端末上で「接続テスト」ボタンを押した「Excel Add-In for Google Sheets」に含まれているコネクタに対して、ということになります。
「何を」認可するのかという点については、画面に表示されている権限を今後のアクセスに対して許可する、ということとなります。
Authorization Successful画面
また、「許可」した後のブラウザを確認すると以下のようにlocalhostへリダイレクトされていることが分かります。
これは、Google側から認可の情報(認可コードと呼ばれます)を「Excel Add-In for Google Sheets」がループバックアドレスで立ち上げたローカルWebサーバにURLリダイレクトによって受け取り、その後内部でアクセストークンと呼ばれる符号をGoogleから取得する処理が行われ、問題なく処理が完了した場合にローカルWebサーバが返している画面になります。
このようにして得たアクセストークンなどの情報を用いて、以後の通信が行われます。
図にしてみる
以上の流れを図にしてみたのが以下になります。既にブラウザで認証自体は済んでいる、複数ユーザでログインしていない、など前提はありますが、簡単のためご容赦ください。
更に詳しく知りたい方は、OAuthについて解説しているサイトや、以下のGoogleのサイトの解説もご覧になってください。
おわりに
今回ご紹介した画面のように、OAuthの流れの中で「許可」ボタンを押す際は、表示されているアカウントおよび権限、認可先を確認いただいたうえで許可していただくようにしてください。
弊社製品をお使いいただく中でもこのような認可を求める画面が出てくることは多くあります。画面の表示内容について疑問に思われること等ございましたら、遠慮無く弊社テクニカルサポートへお問い合わせいただければ幸いです。