0

科技谷歌驅動的數據所需:C#訪問域寬,ServiceAccount演員用戶

描述:我的工作,以創建應用程序,該網站會要求谷歌認證與用戶同意的屏幕工作流程,並且一旦被授權域管理員,網站將有權訪問該域下的所有用戶,並訪問驅動器和團隊驅動器數據。

嘗試的方式進行身份驗證:

  1. 創建的服務帳戶的用戶,從admin.google.com爲谷歌提供的作用域必要的權限給該用戶
  2. 創建超級管理員用戶,服務分配其角色具有在#1中創建的服務帳戶的帳戶演員。與ServiceAccountCredential對象

    ServiceAccountCredential credential = new ServiceAccountCredential(
            new ServiceAccountCredential.Initializer("Service_Account_Email") 
    { 
        Scopes = SCOPES, 
        User = ADMIN_EMAIL, 
    }.FromPrivateKey("PRIVATE_KEY")); 
    

    通過使用ServiceAccountCredential對象的使用

代碼,我可以列出域用戶,以及驅動器的詳細信息,如需要。唯一的問題是,我需要客戶端創建#1中提到的服務帳戶和身份驗證步驟,並且還要求提供我不想要的憑據(服務帳戶電子郵件,私鑰,管理員電子郵件)。

我試圖用管理員用戶(#2)進行身份驗證,該用戶具有帶有用戶同意屏幕的服務帳戶主角色以及下面的代碼。

GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer 
{ 
    ClientSecrets = new ClientSecrets 
    { 
     ClientId = Constants.GoogleClientId, 
     ClientSecret = Constants.GoogleClientSecret 
    }, 
    Scopes = Constants.GoogleScopes 
    //,DataStore = new FileDataStore("Drive.Api.Auth.Store") 
}); 

UserCredential credential = new UserCredential(flow, email, response); 

var service1 = new DriveService(new BaseClientService.Initializer() 
{ 
    HttpClientInitializer = credential, 
    ApplicationName = "Drive API Service Account Sample", 
}); 

使用上面的代碼「service1.Teamdrives.List().execute();」總是結果團隊驅動器可用與管理員用戶我使用身份驗證,但我在UserCredential對象中傳遞不同的電子郵件。

我需要幫助,在這裏,我需要能夠操縱所有用戶的硬盤數據,而不一旦被管理員用戶(服務帳戶演員)

任何幫助,將不勝感激驗證任何用戶干預。

由於

回答

0

AFAIK,在delegating domain-wide authority to a service accountUserCredential使用應該是域的成員。在documentation警告的注意,

服務帳戶應用於執行委託,其中有效身份證是在一個域中的個人用戶。此外,服務帳戶可能不會獲得額外的存儲配額,也不會充當域的成員。

你可能想嘗試以下步驟授予訪問權限(帳戶服務和應用程序管理員的角色是必填項):

  • 登錄到谷歌聯繫,去應用 - 「G套房 - >硬盤和文檔 - >共享設置子菜單,然後選擇ON從共享選項
  • 點擊管理團隊驅動子菜單,並在團隊驅動器單擊要授予
  • 012訪問
  • 點擊在成員訪問添加成員彈出
  • 輸入服務帳戶的帳戶ID(電子郵件),選擇訪問級別(我選擇全部),檢查跳過發送通知並點擊發送

對於額外的見解,看到這些帖子SO和教程:

+0

我需要實現以下服務帳戶演員角色的用戶身份驗證的工作流程。 1:用戶來到我們的網站,即googledriveconnect.com進行連接。 2:Google用戶許可屏幕將顯示給用戶,該用戶要求訪問屬於example.com域名的所有用戶的驅動器數據的權限。 3:[email protected](Service Account Actor)用戶將在用戶許可屏幕上登錄並授權googledriveconnect.com的許可。 4:一旦管理員用戶批准,googledriveconnect.com現在可以訪問屬於example.com域的所有用戶的谷歌驅動器內容。 –