我尝试使用第三方IdP在Google应用引擎上托管SP,并且我遇到了多个问题。
我正在使用Spring SAML扩展来实现java。我能够使用IdP idp.ssocircle.com作为IdP idp.ssocircle.com从官方指南http://docs.spring.io/spring-security-saml/docs/1.0.x/reference/html/chapter-quick-start.html单独运行(不是GAE)演示应用程序。
现在我的问题出现了,我试图将此代码集成到我的GAE项目中。当使用GAE运行时,我可以进入我重定向到ssocircle.com上登录的阶段,当我应该被重定向回我的页面时,我收到此错误:"错误401身份验证失败:解码传入的SAML消息时出错#34;并且在本地GAE服务器日志上我可以看到此消息
" [INFO] 2014年12月17日下午5:21:23 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry [INFO] INFO:处理请求时捕获的I / O异常(java.net.SocketException) :权限被拒绝:不允许发出套接字绑定:权限被拒绝。"
我想知道这是否是GAE对套接字的限制:1)套接字仅适用于付费应用(我没有付费应用,但可以考虑这些选项)2)你无法创建一个听插座;你只能创建出站套接字。 3)您无法绑定到特定的IP地址或端口。 (对我来说这听起来像是我的问题)。
而且我尝试在GAE上部署,应用程序仍然处于启动循环中,因为有关其他错误"嵌套异常是java.security.AccessControlException:访问被拒绝(" java.lang。 RuntimePermission"" modifyThreadGroup")",这听起来像是对我的另一个GAE限制。
在某些时候我已经准备放弃,因为我认为SAML Spring扩展无法与GAE一起使用,因为GAE存在限制。但是我看到你有相同的项目作为GAE上的演示运行(或者至少我认为它是在GAE上运行的,因为域名中有appspot部分)。 https://saml-federation.appspot.com/saml/discovery?returnIDParam=idp&entityID=saml-federation.appspot.com
如果你能给我一些关于我的问题的提示,我将不胜感激,如果你能帮我解决这个演示项目的源代码(无法在任何地方找到它),以及GAE所需的所有配置,我将不胜感激。
答案 0 :(得分:1)
我创建了一个新的存储库https://github.com/vschafer/spring-security-saml-gae,其中包含在Google Application Engine上部署Spring SAML应用程序的说明。它还包括有助于避免遇到问题的类(套接字和线程)。
为了使用它:
org.springframework...StaticFilesystemMetadataProvider
加载您的元数据org.springframework...ArtifactResolutionProfileImpl
替换为org.springframework...google.ArtifactResolutionProfileGAE
如果您发现文档或代码中存在错误,请发表评论。