このブログを検索

2018年12月4日

【Apps調査隊】Gmail API を使ったGmail 委任設定ついて調査せよ③ −OAuth 2.0 Playground を使用したテストの方法−

Apps調査隊の小林です。

Gmail API の拡張により、 G Suite 管理者は Gmail の受任者を追加、確認、削除できるアプリを承認できるようになりました。

前回に引き続き、今回はOAuth 2.0 Playground を使用したテストの方法をご案内いたします。 ※API の新規実装ではありません。

 ーーーーーーーーーーーーーーーーーーーーーーー

【第1回】 Gmail代理と委任について

【第2回】 2)APIを利用するための設定について プロジェクトの作成、Google OAuthの設定、APIの許可方法など

【第3回】 Gmail API を使ったGmail 委任設定: Users.settings.delegatesのOAuth 2.0 Playground を使用したテストの方法

 ーーーーーーーーーーーーーーーーーーーーーーー
< OAuth 2.0 Playground テスト手順 >

 1. Google Cloud Console https://console.cloud.google.com を開きます。 ( デフォルトでは、ホームページに移動し、作成済みプロジェクトがあれば既存プロジェクトを開いた状態 )

2. ページの上部にあるドロップダウンで、プロジェクトを作成する組織を選択します。

3. [ 作成 ] か [ 新しいプロジェクト ] をクリックします 。

4. 表示された [ 新しいプロジェクト ] ウィンドウでプロジェクト名を入力し、必要に応じて請求先アカウントを選択します。




5. 新しいプロジェクトの詳細を入力したら、 [ 作成 ] をクリックすると、新しいプロジェクトのホームページにリダイレクトされます。

6. 画面の左上にある [ ≡ ] ( メニュー ) をクリックし、 [ API とサービス ] をクリックします。




 7. 画面中央上部 [ + API とサービスの有効化 ] をクリックします。



 8. 必要な API の名前 ( 今回は Gmail ) を検索して選択し、 [ 有効にする ] をクリックします。

9. [ API とサービス ] で [ 認証情報 ]をクリックします。

10. [ OAuth 同意画面 ] タブをクリックし、 [ アプリケーション名 ] に名前を追加し、 [ 保存 ] をクリックします。



11. [ 認証情報 ] タブで [ 認証情報の作成 ] をクリックし、 [ OAuth クライアント ID ] をクリックします。 [ OAuth クライアント ID の作成 ] ページにリダイレクトされます。

12. [ Webアプリケーション ] を選択し、名前を追加します。各項目に次のように入力して Enter キーで確定します。

- 承認済みの JavaScript 生成元 : https://developers.google.com
- [ 承認されたリダイレクトURI ] : https://developers.google.com/oauthplayground



13. [ 作成 ] をクリックすると、クライアント ID とクライアント シークレットが表示されます 。※後で使用しますので、上記情報を保存してください。




14. [ 認証情報 ] タブに戻り、 [ 認証情報の作成 ] をクリックし、 [ サービス アカウント キー ] をクリックし、 [ 新しいサービスアカウント ] を選択します。
 アカウント名を追加し、役割から [ Project > オーナー ] を選択し、 [ JSON ] を選択したまま、 [ 作成 ] をクリックします。 ( JSON ファイルがダウンロードされますが、今回は使用しません ) 
※後で使用しますので、サービス アカウント キーのクライアント ID を保存してください。


15. [ 認証情報 ] にリダイレクトとされるので、 [ サービス アカウント キー ] 右側の [ サービスアカウントの管理 ] をクリックします。



16. サービスアカウントのアドレスの右側にある 3点メニューをクリック > [ 編集 ] > [ ドメイン全体の委任を表示 ] > [ G Suite ドメイン全体の委任を有効にする ] をオン > [ 保存 ] の順にクリックします。




17. 新規タブで管理コンソールを開き [ セキュリティ ] > [ 詳細設定 ] > [ APIクライアントアクセスを管理する ] に移動します

- 17.1 手順 13 で保存したクライアント ID を [ クライアント名 ] と [ 1つ以上のAPIスコープ ] で使用するスコープ ( 今回必要なスコープ:https://www.googleapis.com/auth/gmail.settings.sharing ) を入力して、 [ 承認 ] をクリックします。)





17.2 ドメイン全体の委任を有効にするために、手順 14 で保存したクライアントIDを [ クライアント名 ] に入力し、次のスコープを入力します。 https://www.googleapis.com/auth/admin.directory.user, https://www.googleapis.com/auth/admin.directory.group 入力後 [ 承認 ] をクリックします。

※ ご不明な点がある場合は、https://developers.google.com/admin-sdk/directory/v1/guides/delegation をご覧ください。

※ 最後にクライアントとスコープが正しく表示されていることを確認してください。

18. https://developers.google.com/oauthplayground/ にアクセスし、 画面の右上にある [ 設定 ] ( 歯車アイコン ) をクリックします。
- 下記のとおり設定してください。
* OAuth flow: Server-side
* OAuth endpoints: Google
* Authorization endpoint: 変更不要
* Token endpoint: 変更不要
* Access token location: Authorization header w/ Bearer prefix
* Access type: Online
* Force prompt: No
* [ Use your own OAuth credentials ] のチェックをオン
* OAuth Client ID: 手順 13 で保存したクライアント ID
* OAuth Client secret: 手順 13 で保存したクライアント シーレット
* [ Close ] をクリック


19. [ Select & authorize APIs ] で、Input your own scopes にhttps://www.googleapis.com/auth/gmail.settings.sharing を挿入し、 [ Authorize APIs ] をクリックします。



20. [ Exchange authorization code for tokens ] をクリックします。



21. [ HTTP method ] で [ POST ] を選択し、https://www.googleapis.com/gmail/v1/users/userId/settings/delegates と入力します。( [ userId ] に代理人の追加先アカウントを挿入します )



22. [ Enter request body ] をクリックし、以下を挿入します。
{ "delegateEmail": "user@yourdomain", "verificationStatus": "accepted" }

23. [ Close ] をクリックしてから [ Send the request ] をクリックします ( すべて正常に完了した場合、応答コード 200 が表示されます ) 手順は以上です。

<新規実装について>
◆テスト環境にて正常に動作が確認できましたら、新規実装を行います。

新規実装についての注意としましては、
Create Method : 代理人の作成方法 (検証ステータスを受け付けた代理人を、検証メールを送信せずに直接追加します。 )

 ※条件:代理人ユーザーは、委任者ユーザーと同じG Suite組織のメンバーである必要があります。

Gmailは、G Suite組織の各ユーザが持つことができる代理人と委任者の数に制限を課しています。  
制限は組織によって異なりますが、一般に各ユーザーは最大25人の代理人と最大10人の 委任者を持つことができます。
代理人であるユーザーは、電子メールエイリアスではなく、 基の電子メールアドレスで参照する必要があります。

また、新しい代理人が作成されてから、 その委任機能を使用できるようになるまでに1分ほどかかる場合があります。

また、この方法はドメイン全体の権限が委任されているサービスアカウントクライアントでのみ 使用可能です。

◆ API の新規実装をスプレッドシートで行う場合には、新規スプレッドシートを作成 > リソース > Googleの拡張サービスをクリックし、Google API 、V1、 GmailをONにします。




また、リソース >Cloud Platformプロジェクト をクリックし、プロジェクト番号を入力します。GCPのプロジェクト情報よりプロジェクト番号を参照できます。これでスクリプトにプロジェクトを関連付けできます。




<感想>
APIを利用してGmail管理の代理を委任することができますが、結局委任された代理人が「承認」を行わない限り、代理設定が完遂しません。また、この方法はドメイン全体の権限が委任されているサービスアカウントクライアントでのみ 使用可能の為、誤って操作した場合のリスクなども考えられます。委任設定を行う数が多くないのであれば、直接ユーザー間で代理設定を行う方がよいのかもしれません。