google-app-engine - Google Apps Marketplace - Google App Engine Java 应用程序的单点登录

标签 google-app-engine openid single-sign-on google-apps-marketplace

当我点击 Google Apps 帐户中 Google 通用导航栏“更多”部分中的 navLink 时,我没有直接登录到我的应用程序,而是显示了我的应用程序的登录页面。

我的应用市场 list :

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

最佳答案

您需要创建一个 servlet 来处理 http://myappid.appspot.com/ms.jsp?hd=${DOMAIN_NAME}。它将获取域名并使用域作为 federatedIdentity 重定向到登录 url。见:

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 设置,用户将从 Google Apps 自动登录。

关于google-app-engine - Google Apps Marketplace - Google App Engine Java 应用程序的单点登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4431662/

相关文章:

asp.net-mvc - OpenIdConnect 是唯一在 Azure Active Directory 中实现授权的中间件

oauth - OpenID/OAuth 反向代理

java - 谁将设置包含凭据信息的 saml cookie

ios - iOS 重定向对话框中 IdentityProvider 的名称为 "(null)"

python - 调用 Google App Engine Cloud Endpoints 内的 Drive API

java - 在随机时间段使用 Java Google App Engine Standard 的内存缓存中出现服务错误

android - 我们可以在后端的 Api 类中使用 Api 方法吗

google-app-engine - 五个不同的 GAE 站点可以共享一个公共(public)数据存储吗?

python - RPX、OpenID - 如何为 AppEngine 编写正确的登录处理程序

single-sign-on - 如何仅启用从我的站点登录并禁用 DISQUS 中的其他社交登录选项?