3

单击Google Apps帐户中Google通用导航栏的“更多”部分中的导航链接时,我不直接登录到我的应用程序,而是单击登录页面显示我的应用程序。Google Apps Marketplace - 适用于Google App Engine的SSO Java应用程序

我Apps Marketplace中的清单:

<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> 

我的web.xml中相关部分:

<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> 

回答

0

您需要创建一个servlet来处理http://myappid.appspot.com/ms.jsp?hd=${DOMAIN_NAME}。它将获得域名并重定向到使用域名的登录网址federatedIdentity。请参阅:

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

有了正确的federatedIdentity设置,用户将谷歌从应用程序自动登录。

0

另外。你应该添加到您的应用程序的manifest.xml:

<Edition id="free"> 
    <Name>Myapp Navlink Name</Name> 
    <Extension ref="navLink" /> 
    <Extension ref="realm" /> 
</Edition> 
相关问题