Google Directory API:サービスアカウントでユーザー情報を取得する場合は403

マットウェスター

これは、Google Directory APIがshowDeleted = trueのuser_listに対して403を返すことに関連している可能性がありますが、残念ながらまだコメントできず、提供する回答がありません。

学校のGSuiteから許可を得サービスアカウントを受け取りました

https://www.googleapis.com/auth/admin.directory.user.readonly

G Suite管理者は、ドメイン全体の権限をアカウントに委任していることを示しました。サービスアカウントJWTを作成し、HTTP / RESTフローを使用してAPIを呼び出すためのアクセストークンを取得できます。ただし、ユーザーgetエンドポイントを呼び出すと、アカウントに関する情報を要求します-

https://www.googleapis.com/admin/directory/v1/users/redacted%40redacted.com?projection=full

私は以下を受け取ります:

The remote server returned an error: (403) Forbidden.
{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "forbidden",
        "message": "Not Authorized to access this resource/api"
      }
    ],
    "code": 403,
    "message": "Not Authorized to access this resource/api"
  }
}

私は彼らのGSuite管理パネルにアクセスできないので、自分自身をいじくり回すことはできませんが、管理者は、クライアントがadmin.directory.user.readonly権限にアクセスできることを確認しました。上記のように、ドメイン全体にアクセスできる役割で。管理者が割り当てられた権限を失っている可能性がある場所、または私のアプローチで欠けている可能性がある場所についての提案を受け入れています(ただし、JWTビルド/署名およびアクセストークンの取得は期待どおり機能しているようです)。私が提供できる他の有用な情報があれば、私に知らせてください、そして私は更新します。

更新:アカウントの権限は正しいようです-ユーザーから情報を取得したり、APIエクスプローラーで取得したりできました。ただし、APIExplorerはURLを使用しています

https://www.googleapis.com/admin/directory/v1/users/redacted%40redacted.com?projection=full&key={YOUR_API_KEY}

また、サービスアカウントまたはusers / getドキュメントのいずれにも、キーパラメータに関するドキュメントが見つかりません。仕様で定義されているように、認証ヘッダーにベアラートークンとしてaccess_tokenを含めていますが、キークエリ文字列パラメーターとして送信しようとすると、上記と同じ403エラーが発生します。Stackにも同様の質問がありますGoogle APIクライアントusers()。get(userKey ='[email protected] ')は、このリソース/ apiへのアクセスが許可されていません)を返しますが、回答はありません。

noogui

Admin SDKをいじったことはありませんが、サービスアカウントの使用に重点を置いているため、Perform G Suite Domain-Wide Delegation ofAuthorityを確認することをお勧めします。

ドメイン全体の権限をサービスアカウントに委任します

作成したサービスアカウントには、アクセスするGSuiteドメインのユーザーデータへのアクセスを許可する必要があります。G Suiteドメインの管理者は、次のタスクを実行する必要があります。

  1. GSuiteドメインの管理コンソールに移動します。
  2. コントロールのリストから[セキュリティ]を選択します。[セキュリティ]が表示されない場合は、ページ下部の灰色のバーから[その他のコントロール]を選択し、コントロールのリストから[セキュリティ]を選択します。
  3. オプションのリストから[詳細設定]を選択します。
  4. [認証]セクションで[APIクライアントアクセスの管理]を選択します。
  5. [クライアント名]フィールドに、サービスアカウントのクライアントIDを入力します。
  6. [1つ以上のAPIスコープ]フィールドに、アプリケーションにアクセスを許可する必要があるスコープのリストを入力します(下の画像を参照)。たとえば、ユーザーとグループへのドメイン全体のアクセスが必要な場合は、次のように入力します。https://www.googleapis.com/auth/admin.directory.user, https://www.googleapis.com/auth/admin.directory.group
  7. [承認]ボタンをクリックします。

これで、サービスアカウントは、ドメインのすべてのユーザーがGoogle Admin SDK DirectoryAPIにドメイン全体でアクセスできるようになりました。これで、GSuiteドメインのユーザーに代わって承認されたAdminSDKDirectoryサービスオブジェクトをインスタンス化する準備が整いました。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

GolangでGoogleサービスアカウントの認証情報を手動で提供する

分類Dev

サービスアカウントの認証情報をダウンロードせずに、Google Compute EngineからローカルでGoogle API(Google Drive API)を認証するにはどうすればよいですか?

分類Dev

Googleサービスアカウントのユーザーが干渉する

分類Dev

google- / playstoreアカウントなしでAndroidの位置情報サービスを使用できますか?

分類Dev

(PHP) oauth およびサービス アカウントを使用してプライベート Google フォト (Picasa Web) API 情報にアクセスする

分類Dev

IntelliJ IDEAでデバッグするときにはGoogle App Engineにサービスアカウントの資格情報を追加する方法?

分類Dev

Directory APIを使用して作成した直後に、プログラムでGoogle Appsユーザーを会社のカレンダーにサブスクライブするにはどうすればよいですか?

分類Dev

Google Apps Admin API:サービスアカウントのアカウントユーザーを指定する必要がありますか?

分類Dev

Google Analytics ManagementAPI-Python-ビュー/プロファイル/アカウントのリストを取得します。シングルユーザーの場合

分類Dev

Google管理SDKでサービスアカウントを使用してユーザーを作成しますか?

分類Dev

ユーザーがGoogleアカウントを介してログインした場合、Chromeで正確なユーザーの場所を取得することは可能ですか?

分類Dev

Google Drive API (.NET) - サービス アカウントからドメイン ユーザーに所有権を譲渡する

分類Dev

Google管理SDK:特権ユーザーの代わりにサービスアカウントのメールを使用してG Suiteログを取得するにはどうすればよいですか?

分類Dev

サービスアカウントの認証情報を使用してGoogleドライブにファイルをアップロードする方法

分類Dev

Google App Engineとローカル開発サーバーで秘密鍵ファイルと偽装ユーザー(DWD)を使用してサービスアカウントを使用するにはどうすればよいですか?

分類Dev

どのように私は、サービスアカウントの資格情報を使用してGoogleチームドライブ内のフォルダにファイルをアップロードすることができますか?

分類Dev

ユーザー情報を取得するGoogle-PHP-クライアントの問題?

分類Dev

ユーザーがホームページを離れてGoogleアカウントからサインオンした場合、ユーザーをサインアウトする必要がありますか?

分類Dev

Google Directory APIは、カスタムスキーマを追加/それをGoogle APIごとにユーザーに更新(進行中)

分類Dev

Golangを使用してサービスアカウントの認証情報でGoogleスプレッドシートにアクセスできません

分類Dev

サービスアカウントでGoogleスプレッドシートを作成し、Javaで他のGoogleユーザーと共有するにはどうすればよいですか?

分類Dev

Google + APIを使用してユーザー認証情報を取得する

分類Dev

サービスアカウントは、Google Sheets API v4の使用制限のユーザーと見なされますか?

分類Dev

gsuiteグループまたはユーザーにすべてのGoogleサービスアカウントになりすますためのアクセス権を与えるにはどうすればよいですか

分類Dev

GoogleサービスアカウントアクセストークンJavaScriptを取得する方法

分類Dev

GoogleサービスアカウントはGSuiteユーザーになりすますことはできません

分類Dev

Google Search ConsoleAPIからユーザー情報を取得する方法

分類Dev

Google Directory API non-admin accounts

分類Dev

デフォルトの認証情報ファイルなしでGoogleサービスアカウントを認証するにはどうすればよいですか?

Related 関連記事

  1. 1

    GolangでGoogleサービスアカウントの認証情報を手動で提供する

  2. 2

    サービスアカウントの認証情報をダウンロードせずに、Google Compute EngineからローカルでGoogle API(Google Drive API)を認証するにはどうすればよいですか?

  3. 3

    Googleサービスアカウントのユーザーが干渉する

  4. 4

    google- / playstoreアカウントなしでAndroidの位置情報サービスを使用できますか?

  5. 5

    (PHP) oauth およびサービス アカウントを使用してプライベート Google フォト (Picasa Web) API 情報にアクセスする

  6. 6

    IntelliJ IDEAでデバッグするときにはGoogle App Engineにサービスアカウントの資格情報を追加する方法?

  7. 7

    Directory APIを使用して作成した直後に、プログラムでGoogle Appsユーザーを会社のカレンダーにサブスクライブするにはどうすればよいですか?

  8. 8

    Google Apps Admin API:サービスアカウントのアカウントユーザーを指定する必要がありますか?

  9. 9

    Google Analytics ManagementAPI-Python-ビュー/プロファイル/アカウントのリストを取得します。シングルユーザーの場合

  10. 10

    Google管理SDKでサービスアカウントを使用してユーザーを作成しますか?

  11. 11

    ユーザーがGoogleアカウントを介してログインした場合、Chromeで正確なユーザーの場所を取得することは可能ですか?

  12. 12

    Google Drive API (.NET) - サービス アカウントからドメイン ユーザーに所有権を譲渡する

  13. 13

    Google管理SDK:特権ユーザーの代わりにサービスアカウントのメールを使用してG Suiteログを取得するにはどうすればよいですか?

  14. 14

    サービスアカウントの認証情報を使用してGoogleドライブにファイルをアップロードする方法

  15. 15

    Google App Engineとローカル開発サーバーで秘密鍵ファイルと偽装ユーザー(DWD)を使用してサービスアカウントを使用するにはどうすればよいですか?

  16. 16

    どのように私は、サービスアカウントの資格情報を使用してGoogleチームドライブ内のフォルダにファイルをアップロードすることができますか?

  17. 17

    ユーザー情報を取得するGoogle-PHP-クライアントの問題?

  18. 18

    ユーザーがホームページを離れてGoogleアカウントからサインオンした場合、ユーザーをサインアウトする必要がありますか?

  19. 19

    Google Directory APIは、カスタムスキーマを追加/それをGoogle APIごとにユーザーに更新(進行中)

  20. 20

    Golangを使用してサービスアカウントの認証情報でGoogleスプレッドシートにアクセスできません

  21. 21

    サービスアカウントでGoogleスプレッドシートを作成し、Javaで他のGoogleユーザーと共有するにはどうすればよいですか?

  22. 22

    Google + APIを使用してユーザー認証情報を取得する

  23. 23

    サービスアカウントは、Google Sheets API v4の使用制限のユーザーと見なされますか?

  24. 24

    gsuiteグループまたはユーザーにすべてのGoogleサービスアカウントになりすますためのアクセス権を与えるにはどうすればよいですか

  25. 25

    GoogleサービスアカウントアクセストークンJavaScriptを取得する方法

  26. 26

    GoogleサービスアカウントはGSuiteユーザーになりすますことはできません

  27. 27

    Google Search ConsoleAPIからユーザー情報を取得する方法

  28. 28

    Google Directory API non-admin accounts

  29. 29

    デフォルトの認証情報ファイルなしでGoogleサービスアカウントを認証するにはどうすればよいですか?

ホットタグ

アーカイブ