警告!我在这里有点钓鱼之旅,我甚至不确定我问的问题是否完全有意义.请善意回复你!:)
我最近接手了一个目前基于Java + Linux + Tomcat + MySQL的项目.现在,该系统基本上只是一个在后台有一些cron工作的网站,可以移动一些数据等等.在与产品经理合作开发优先顺序时,很清楚他想做什么我需要开始开发面向服务的体系结构(SOA < - buzz word warning!),最终我将结合使用Web服务器和应用程序服务器.注意:我正在考虑转向Glassfish v3.
目前,身份验证和授权在Java代码中处理,用户信息存储在MySQL数据库中.至少在我看来,我需要将其拆分为一个单独的身份验证服务(否则,最终将会出现一堆重复的代码来处理用户身份验证和授权).
我一直在研究单点登录(SSO)类型解决方案并进行一些研究.从我可以收集的信息来看,OpenSSO已被Oracle正式删除,但被ForgeRock收录,现在被称为OpenAM.这似乎非常接近我想要的,但由于我已经有一个基于MySQL的系统,我宁愿有一些东西支持它(或其他一些RDBMS).我在Stack Overflow上找到了它,它似乎表明它基本上是LDAP或什么也没有.
有没有办法让OpenSSO/OpenAM与数据库通信以进行身份验证和授权?
我的问题是:
OpenSSO/OpenAM有哪些其他选择?LDAP是否可行?注意:执行"OpenAM vs"谷歌搜索不会产生太多影响.人们倾向于"自己动手"吗?
任何有助于教育我的关于此主题的想法/建议/链接将不胜感激.提前感谢您的耐心和帮助.
我遵循Apache Web Policy Agent 的安装指南,但它总是导致Web和应用程序服务器之间的无限重定向循环.Firefox说"页面没有正确重定向",Chrome认为"此网页有重定向循环".该设置是端口80上的Apache 2,带有一个小型演示应用程序和一个Web Policy Agent,以及一个带有OpenAM服务器的端口8080上的Tomcat 7服务器(来自Sun的前OpenSSO):
Live HTTP Header Firefox插件显示策略代理和OpenAM服务器(即Apache和Tomcat服务器)重定向到彼此,尽管服务器正确设置了SSO令牌Cookie.SSO令牌Cookie的名称具有默认值"iPlanetDirectoryPro".知道如何解决问题吗?
我有一个受OpenAm Server保护的网站,并且在身份验证后访问页面工作正常.但是当我尝试重定向到页面并使用get方法传递信息时,我获得了禁止访问消息.
有没有办法使用get方法(或任何其他方法)将我的信息从源页面传递到目标页面,或者是否有任何配置要做到Web代理,以避免OpenSSO服务器拒绝我的访问.
我实际上使用IIS 7.0和最后一个Web代理版本3.0.4.
万分感谢任何传入的答案
根据教程,我应该去OpenSSO并下载"快速构建".但是,"Express Build 7"的OpenSSO站点上的下载链接似乎需要通过具有付费支持合同的帐户登录.
目前如何下载OpenSSO战争?
我们在服务提供商网站上使用OpenSAML为我们的客户提供SSO.我们的客户(ID提供商)正在使用OpenSSO.OpenSSO发布的SAML响应在签名元素方面略有不同,因为它不受命名空间限定.这似乎与OpenSAML相关并且它从samlResponse.getSignature()
方法返回null
,因此我无法验证签名.
<Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<Reference URI="#s2d10cccbd58d1f78c2c76c74c82a236548c929ffd">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<DigestValue>j+KBoDOtEcyCquPTxRCXoBulStQ=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>Dv+owuZfGFymGGrw2gHA3/7GVC6mXt8JMW+tOvmtnjTRJZaDE+Nb2NCngio1Tnqu4LWnvVrry4Wk... 6QcIJi/kGc4YFMSQj/Q=</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>MIIEhDCCA+2gAwIBAgIQXxhipi2wpPxWi7MTVfFVHDANBgkqhkiG9w0BAQUFADCBujEfMB0GA1UE... 78Q/lRQuBhHMy02lKctnwjBeEYA=</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
Run Code Online (Sandbox Code Playgroud)
<dsig:Signature xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
<dsig:SignedInfo>
<dsig:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
<dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<dsig:Reference URI="#id-TtLltjcBSOAJ6OipumUEj8o0Qag-">
<dsig:Transforms>
<dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
<dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<dsig:DigestValue>5c95zhA139qzMvZA2A445F3LWaU=</dsig:DigestValue>
</dsig:Reference>
</dsig:SignedInfo>
<dsig:SignatureValue>JsmRFJn1CjClHs4rf0hrwKzOq6ZtmnOEm/PNiaJvYurko/ZP+PApWhk55x0unIVwZ6XDv3k8Dj81WqUl07J0Dkvzp71bccIgiGTRzoNPT71nBAXxJmZiXz51JWctg13zjxP0oQMSpWytKCrFkCkJ0So3RQl3WixYV3miK0YjJnM=</dsig:SignatureValue>
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
</ds:KeyInfo>
</dsig:Signature>
Run Code Online (Sandbox Code Playgroud)
如您所见,OpenSSO服务器中的签名片段不包含SAML绑定规范中指定的命名空间限定符.
对我来说,最后一个选项是对发布的SAMLResponse进行一些按摩,以便将命名空间添加到签名元素中,以使OpenSAML库工作.
关于如何使用OpenSAML库解决这个问题的任何想法都受到高度赞赏.
在此先感谢CJ
如何在集成测试期间使用单点登录(SSO)登录测试页面(例如使用caybara或cucumber)?对于正常登录,您将编写一个方法来访问登录页面,填写表单并提交.如果登录表单来自Shibboleth或OpenAM/OpenSSO等外部SSO服务器,则这有点困难.如何为受SSO保护的页面编写集成测试?
类似的问题是使用单独的搜索服务器(Solr或Sphinx)进行集成测试.您可能会通过使用某种形式的模拟或存根来解决它.有人能给出一个很好的例子,如何模拟或存根黄瓜或水豚的SSO?如果这太难了,那么搜索服务器的类似示例也会有所帮助.
integration-testing opensso cucumber single-sign-on capybara
我使用spring security的开放式saml库进行身份验证.
我的服务提供商是我的spring web应用程序,配置了spring saml.我的IDP是OpenSSO.
在spring-security-saml2-core库中,永远不会调用JKSKeyManager,但会调用KeyManager.
那么库是使用.jks密钥库文件作为密钥还是'apollo/nalle123'作为密钥?他们的区别是什么?
我目前正在使用 openAM 来保护我的一个使用 Java EE Web 代理的小型 Web 应用程序。有人试图访问该应用程序,他们被重定向到 openAM 实例,他们登录,然后转到该应用程序。简单的东西。
我想要的是 openAM 将成功使用的用户名传递给网络应用程序。我的理解是应该为此使用“会话属性”。在管理员中,我转到我的 Java EE webagent 并打开“应用程序”选项卡以查看“会话属性处理”。我看到 HTTP_COOKIE 是获取的选择。
1) 如果正确设置,我是否应该期望在 cookie 中以明文形式看到用户名?2)我在会话映射中输入什么值来获取用户名?如何在数据存储中找到与此对应的值?
谢谢