2015-04-21 64 views
1

根據現已棄用的Google Apps配置API,我們的組織可以代表我們的用戶配置密碼,只需授權爲超級管理員用戶,如下所示:如何在不需要OAuth授權的情況下代表我們的組織用戶配置密碼

User userService = new UserService(GoogleAppsPasswordSyncConnector.class.getSimpleName()); 
AuthTokenFactory authTokenFactory = AuthTokenFactoryThreadLocal.getAuthTokenFactory(adminUsername, adminPassword); 
userService.setAuthTokenFactory(authTokenFactory); 

然而,隨着新目錄的API,根據Directory API: Authorize Requests,要求「給目錄API的所有請求都必須通過身份驗證的用戶進行授權。」這是基於OAuth 2.0授權請求。

我們如何代表我們的組織用戶設置密碼,而不要求他們授權請求?

請注意,在某些情況下,我們可能手頭提供了他們當前的Google密碼,以便我們可以代表他們進行編程授權。但是,對於新的Google帳戶,我們不知道配置的密碼。

請注意,我們使用'GADS'(Google Apps Directory Synch)來配置新的Google帳戶。

回答

0

無論您如何看待它,您都必須使用OAuth進行身份驗證,因爲您已鏈接。但是,如果你不想做繁重的工作,你可能需要查看其他一些工具。如果您使用.Net/C#在Windows中工作,請查看我的項目gShell,它在最基本的級別是wrapper for the authentication in .Net,但也提供了可以編寫腳本的PowerShell cmdlet。

在PowerShell中,一旦你做的一次認證就可以使用Set-GAUser更新用戶的密碼編程,像這樣:

Set-GAUser MyUser -NewPassword ThisIsTheNewPassword 

或者你可以把它生成一個給你,如果你願意。

如果您打算使用Python或想要使用命令行,請檢查Google Apps Manager作者:jay0lee這也是一個很好的資源。

至於新帳戶,您應該可以使用GADS來創建新帳戶和密碼。如果你不使用密碼,你應該可以使用上述方法之一來配合你現有的代碼。

最後,如果您沒有按照我在這裏設想的使用Windows,我提到的兩個項目都是開源的,您可以瀏覽代碼以找到如何進行身份驗證的示例,儘管您已經找到的Google資源可能是更簡單一點。

+0

對不起,我沒有更多的幫助。無論如何,您仍然需要進行身份驗證並獲取OAuth工作流程。幸運的是,新的API看起來非常相似,所以我提到的兩個項目中的代碼可能會幫助您朝着正確的方向(也許不是)。您可以從他們的[Java快速入門文檔](https://developers.google。com/admin-sdk/directory/v1/quickstart/quickstart-java#step_3_set_up_the_sample)。 (對於將來的問題,請確保使用''''Java'''標記或任何適當的標記標記您的帖子,以便您獲得更多有針對性的幫助!) – squid808

+0

Java是我們的開發平臺,我選擇的平臺之一將構建密碼供應解決方案。 我仍然想知道API是否需要用戶當前的密碼才能授權密碼更改請求(我將以他們的名義編程執行),還是我可能只是使用一些系統級別的憑證(例如客戶端ID,客戶端祕密,系統私人密鑰)以更改任何用戶密碼。 – Lee

+0

我在他們的開發人員控制檯中創建了一個「服務帳戶」憑據,位於Google的API和Auth下,我希望能夠單獨使用這些憑據執行密碼更改。 – Lee

1

在Google開發人員控制檯(https://console.developers.google.com/project)API和身份驗證憑據中創建服務帳戶類型OAuth客戶端ID,並在API項目中啓用Admin SDK,然後將API範圍'https://www.googleapis.com/auth/admin.directory.user'添加到作用域爲https admin .google.com/AdminHome安全'管理API客戶端訪問',我可以使用下面的代碼設置密碼。請注意,用於建立上述配置的帳戶對所涉及的Google電子郵件具有管理權限。

 HttpTransport httpTransport = new NetHttpTransport(); 
     JsonFactory jsonFactory = new JacksonFactory(); 

     Credential credential = new GoogleCredential.Builder() 
       .setTransport(httpTransport) 
       .setJsonFactory(jsonFactory) 
       .setServiceAccountId(clientEmail) 
       .setServiceAccountUser(adminUser) 
       .setServiceAccountPrivateKeyFromP12File(new File(privateKeyStoreLocation)) 
       .setServiceAccountScopes(scopes).build(); 

     Directory directory = new Directory.Builder(httpTransport, jsonFactory, credential) 
       .setApplicationName(applicationName) 
       .build(); 

     Directory.Users.Get get = directory.users().get(userEmail); 
     User user = get.execute(); 
     user.setPassword(newPassword); 
     directory.users().patch(userEmail, user).execute(); 
相關問題