3

Ich werde nicht direkt in meine App eingeloggt, wenn mein navLink im "Mehr" Bereich der universellen Navigationsleiste von Google in einem Google Apps-Konto angeklickt wird, stattdessen die Login-Seite von Meine Bewerbung wird angezeigt.Google Apps Marketplace - SSO für Google App Engine Java-Anwendung

Meine apps Markt manifestieren:

<ApplicationManifest xmlns="http://schemas.google.com/ApplicationManifest/2009"> 
    <Name>App Name</Name> 
    <Description>App Description</Description> 

    <!-- Administrators and users will be sent to this URL for application support --> 
    <Support> 
    <Link rel="support" href="http://myappid.appspot.com/help.html" /> 
    </Support> 

    <!-- Show this link in Google's universal navigation for all users --> 
    <Extension id="navLink" type="link"> 
    <Name>Myapp Navlink Name</Name> 
    <Url>http://myappid.appspot.com/ms.jsp?hd=${DOMAIN_NAME}</Url> 
    </Extension> 

    <!-- Declare our OpenID realm so our app is white listed --> 
    <Extension id="realm" type="openIdRealm"> 
    <Url>http://myappid.appspot.com/</Url> 
    </Extension> 

</ApplicationManifest> 

Mein web.xml relevanten Teil:

<servlet> 
    <servlet-name>loginJsp</servlet-name> 
    <jsp-file>/login.jsp</jsp-file> 
</servlet> 

<servlet-mapping> 
    <servlet-name>loginJsp</servlet-name> 
    <url-pattern>/_ah/login_required</url-pattern> 
</servlet-mapping> 

<security-constraint> 
    <web-resource-collection> 
    <web-resource-name>ms</web-resource-name> 
    <url-pattern>/ms.jsp</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
    <role-name>*</role-name> 
    </auth-constraint> 
</security-constraint> 

Antwort

0

Sie benötigen ein Servlet erstellen http://myappid.appspot.com/ms.jsp?hd=${DOMAIN_NAME} zu handhaben. Es wird den Domain-Namen erhalten und zu einer Login-URL weitergeleitet, die die Domain federatedIdentity verwendet. Siehe:

http://code.google.com/appengine/docs/java/javadoc/com/google/appengine/api/users/UserService.html#createLoginURL%28java.lang.String,%20java.lang.String,%20java.lang.String,%20java.util.Set%29

Mit dem richtigen federatedIdentity Satz, wird der Benutzer automatisch von Google Apps anmelden.

0

Auch. Sie sollten dies auf Ihre applikations manifest.xml hinzufügen:

<Edition id="free"> 
    <Name>Myapp Navlink Name</Name> 
    <Extension ref="navLink" /> 
    <Extension ref="realm" /> 
</Edition>