2010-11-29 13 views
1

Ich verfüge über eine GWT-Anwendung, über die sich Nutzer mit ihrem Google Apps-Konto anmelden können (OpenID-Anmeldung). Nun möchte ich wissen können, ob der angemeldete Benutzer ein Admin für diese Domain ist.So erhalten Sie den Administratorstatus eines Google Apps-Nutzers

Dies funktioniert bereits mit dem folgenden Code:

private boolean isAdmin (String username) { 
    boolean ret= false; 

    if (username.indexOf ("@") > 0) username= username.substring (0, username 
    .indexOf ("@")); 

    AppsForYourDomainClient client= null; 
    try { 
    client= new AppsForYourDomainClient ("[email protected]", "password", 
     "orgapage.de"); 

    UserEntry user= client.retrieveUser (username); 
    if (user.getLogin().getAdmin().equals (Boolean.TRUE)) ret= true; 
    else ret= false; 
    } 
    catch (Exception ex2) { 
    log.severe (ex2.getMessage()); 
    ex2.printStackTrace(); 
    } 

    return ret; 
} 

Das Problem ist, dass ich die Benutzername und das Kennwort eines Admin dieser Domain eingeben, für die aktuellen angemeldeten Benutzer zu überprüfen.

Gibt es eine Möglichkeit, dies zu tun, ohne das Passwort eines Admins kennen zu müssen? Vielleicht mit OAuth?

Die einzige Möglichkeit, den Administratorstatus abzurufen, den ich bisher gefunden habe, ist der obige. Hier ist die Dokumentation davon:

http://code.google.com/googleapps/domain/gdata_provisioning_api_v2.0_reference_java.html#Retrieve_Account_Example

Antwort

3

Wenn Sie den Google Apps Marketplace verwenden, können Sie über Double-Legged OAuth schreibgeschützten Provisioning API-Zugriff auf die Google Apps-Domain anfordern. Dies würde es Ihnen ermöglichen, Ihren Beispielcode oben zu verwenden, anstatt einen Domain-Admin-Benutzernamen/Pass zu benötigen. Lesen Sie die Dokumentation unter:

http://code.google.com/googleapps/marketplace/data_access.html http://code.google.com/googleapps/marketplace/manifest.html

Jay

+0

Danke Jay! Ich dachte mir, dass dies der richtige Weg ist. Obwohl ich immer noch Probleme mit der Bereitstellungs-API habe. +1 – JochenJung

-1

Die UserService eine Methode hat isUserAdmin genannt zu bestimmen, ob der aktuelle Benutzer ein Administrator für die Anwendung ist.

http://code.google.com/appengine/docs/java/javadoc/com/google/appengine/api/users/UserService.html#isUserAdmin()

Nicht sicher, ob dies ist, was Sie suchen!

+0

Gedanke so auch, aber nein. Diese Methode gibt den Admin-Status des AppEngine-Benutzers zurück, in dem der Code ausgeführt wird. Der Code wird immer im selben AppEngine-Konto ausgeführt, während er von dort aus für verschiedene Google Apps-Domains bereitgestellt werden kann. Und ich möchte den Administratorstatus dieser Apps-Domain haben. – JochenJung

Verwandte Themen