问题标签 [opensso]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
liferay - Liferay 与 OpenSSO 集成时的重定向循环
我得出的结论是重定向正在尝试在 liferay 中进行身份验证,但不知何故它没有得到它正在寻找的东西并返回到 opensso,这会无限重复。我可以在这里找到类似的问题。不幸的是,它没有奏效。
后来我决定调试 liferay 代码,并在 com.liferay.portal.servlet.filters.sso.opensso.OpenSSOUtil 和 com.liferay.portal.servlet.filters.sso.opensso.OpenSSOFilter 上设置了一个断点。我理解这段代码的编写方式是它首先进入 OpenSSOUtil.processFilter() 方法,该方法获取我在 liferay 上配置的 openSSO 设置信息,然后通过调用方法 OpenSSOUtil.isAuthenticated() 检查它是否经过身份验证。这个特定的实现基本上读取发送的 cookie 信息,并尝试通过调用 OpenSSOUtil._setCookieProperty() 方法在 liferay 上设置 cookie 属性。这是它失败的地方,它尝试使用 HttpServletRequest 对象从 liferay 类 com.liferay.util.CookieUtil 中读取名称为 [iPlanetDirectoryPro] 的 cookie,但它得到的只是 NULL。
以下是类中的代码com.liferay.util.CookieUtil
谁能告诉我为什么liferay无法找到openso发送的cookie。如果它与关于启用 cookie 值的 Opensso 设置有关,那么我已经完成了在 OpenSSO 中的操作:配置 -> 服务器和站点 -> -> 安全 -> Cookie -> 检查编码 Cookie 值(设置为是)
什么有效:当这个循环正在执行时,我打开另一个选项卡并显式登录到我的应用程序,当我从我的应用程序注销时,它也会从 opensso 注销。这对我来说很奇怪。
有关更多信息,当此重定向循环发生时,以下 URL 为我提供了这些信息集
http://opensso.ple.com:9090/openam/identity/getCookieNameForToken
authentication - 如何从 openSSO/openAM 系统获取用户名?
我目前正在使用 openAM 来保护我的一个使用 Java EE Web 代理的小型 Web 应用程序。有人尝试访问该应用程序,他们被重定向到 openAM 实例,他们登录,然后转到该应用程序。简单的东西。
我想要 openAM 将成功使用的用户名传递给网络应用程序。据我了解,应该为此使用“会话属性”。在管理员中,我转到我的 Java EE webagent 并打开“应用程序”选项卡以查看“会话属性处理”。我看到 HTTP_COOKIE 是获取的选择。
1)如果正确设置,我是否应该在cookie中看到用户名作为明文?2)我在会话映射中输入什么值来获取用户名?我如何找到数据存储中与此相对应的值?
谢谢
java - OpenSSO 发生了什么?
许多 JBoss 和 Sun/Oracle 文档都引用了 OpenSSO,但该项目似乎已经消失了。甚至Wikipedia OpenSSO页面也链接到死主页。该项目发生了什么?它是否已被重命名或合并到另一个项目中?
oauth - OpenID、OpenSSO 和 OAuth
我对 OpenID 的理解是,它提供了一种方法让一个站点包含您所有的身份和外围信息,但让其他符合 OpenID(和用户信任)的站点重新使用该信息来识别和验证用户。从本质上讲,它最大限度地减少了用户在互联网上拥有的登录凭据(用户名和密码)的数量。
我对 OpenSSO 的理解是,它允许您登录到一个站点并自动登录到第一个站点信任的所有其他站点。从本质上讲,它最大限度地减少了用户必须登录这些不同站点的次数。
我对 OAuth 的理解是,它允许用户授予 3rd 方站点对其位于某个特定站点的信息的某些访问权限。本质上,就像 OpenSSO 一样,它最大限度地减少了用户必须登录这些不同站点的次数。与 OpenSSO 的不同之处在于,OpenSSO 一次将用户登录到所有参与站点(打开了完全权限),而 OAuth 授予对这些参与站点的更细粒度的访问权限。
所以,首先,如果我说的有什么不正确的地方,请先纠正我!
假设我或多或少是正确的,那么我对以下项目有以下问题/需要澄清:
- 我什么时候会选择 OpenSSO 而不是 OAuth - 就在我想限制其他参与站点在用户登录其中一个站点时的访问权限时?
- 我将不得不考虑并集成到我的应用程序中的每种技术的不同安全风险 - 或者它们本身是否被认为是安全的(基本上我可以放心,如果我的应用程序使用它们,我的应用程序不会开放任何新的攻击)?
由于这些技术密切相关,我很难在这里看到整个“森林穿过树木” - 在此先感谢!
jboss7.x - JBoss EAP 6 / JBoss AS 7 的 OpenAM/OpenSSO 代理
我想将 OpenAM/OpenSSO SSO 功能添加到 JBoss EAP 6 或 JBoss AS 7。这意味着我必须在 JBoss 上安装 SSO Java EE 代理。Forgerock 的 OpenAM 下载页面提供了获取以前版本 JBoss 的代理的机会,但不支持新的 JBoss EAP 6 / JBoss AS 7(目前)。
你知道这样的代理是否在某个地方可用,或者在不久的将来会可用吗?如果没有,您知道如何更改 JBoss 配置以使其与 OpenAM 一起使用吗?
java - openam 客户端 sdk 会话 ID 无效
我将 openam 与 tomcat 7 一起使用,以下行总是产生异常 SSOTokenManager manager = SSOTokenManager.getInstance(); SSOToken ssoToken = manager.createSSOToken(request);
无效的会话 ID
我认为某些配置或某些东西可能有问题
有什么帮助吗???
amSSOProvider:09/18/2012 01:18:01:882 PM EEST:线程 [http-bio-9090-exec-151,5,main] 无法从 HttpRequest com.iplanet.dpro.session.SessionException 创建 SSOToken:无效会话 ID。在 com.iplanet.dpro.session.Session.getSession(Session.java:1062) 在 com.iplanet.sso.providers.dpro.SSOProviderImpl.createSSOToken(SSOProviderImpl.java:92) 在 com.iplanet.sso.SSOTokenManager.createSSOToken (SSOTokenManager.java:241) 在 main.TestServlet2.doGet(TestServlet2.java:48) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 在 javax.servlet.http.HttpServlet.service(HttpServlet. java:723) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core .
com.iplanet.sso.SSOException:会话 ID 无效。在 com.iplanet.sso.providers.dpro.SSOProviderImpl.createSSOToken(SSOProviderImpl.java:111) 在 com.iplanet.sso.SSOTokenManager.createSSOToken(SSOTokenManager.java:241) 在 main.TestServlet2.doGet(TestServlet2.java:48 ) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:723) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain. java:304) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) at org.apache.catalina.core .StandardContextValve.invoke(StandardContextValve.java:170) 在 org.apache.catalina.authenticator.AuthenticatorBase。concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:909) at java.lang.Thread.run(Thread.java:619) 原因:com.iplanet.dpro.session.SessionException:会话 ID 无效。在 com.iplanet.dpro.session.Session.getSession(Session.java:1062) 在 com.iplanet.sso.providers.dpro.SSOProviderImpl.createSSOToken(SSOProviderImpl.java:92)
liferay - Liferay 无法通过用户名获取用户
我正在为 liferay 编写一个自动登录钩子,它试图通过屏幕名称获取用户。我正在使用以下代码来获取用户,这主要是OpenSSOAutoLogin的变体:
User user = UserLocalServiceUtil.getUserByScreenName(companyId, screenName);
这在大多数情况下都有效,除非在 liferay 中记录的屏幕名称是大写的。例如,如果存储的 liferay 的屏幕名称是“TEST”,我将无法获取用户。堆栈跟踪显示以下内容:
跟踪清楚地表明“不存在具有键 screenName=test 的用户”。这里的“测试”是用小写字母写的,但是 getUserByScreenName() 方法是用大写的屏幕名称调用的。
经过一番研究,我发现在liferay UserLocalServiceImpl中执行了小写转换。我想这是导致搜索失败的原因,但我不太确定。
任何人都可以确认吗?liferay 的屏幕名称是否应该始终为小写?
谢谢你的建议。
tomcat - 用于授权的 OpenAM Tomcat J2EE 代理配置
我想使用 OpenAM 将授权配置到在 Tomcat 6 中上演的测试 webapp 中。最终目标/用例类似于:
- 用户 bob 属于组员工
用户 john 属于组管理员
只有员工和经理可以访问employee.jsp 页面
- 只有管理员可以访问 manager.jsp 页面
我找到了大量关于身份验证的文档,并在我的环境中正确配置了这些文档。在登录之前,我可以访问“公共”页面(不是我配置的强制 uri),但是一旦我尝试访问像“employee.jsp”这样的受保护页面,我就会被重定向到 OpenAM 的登录模块并且必须进行身份验证. 我可以作为属于 group 员工的 bob 进行身份验证(支持用户存储是一个活动目录),但是在重定向之后我仍然被拒绝访问。如何为此配置访问权限?为保护此资源而部署的策略代理是 j2ee_agent。Web 代理似乎更相关,但我收集到 j2ee 代理是为 Tomcat 部署的。有什么想法吗?
谢谢。
环境:
- webapp 部署在 tomcat 6 中,暂存于 Windows 2008 服务器上,带有 AD
- j2ee 策略代理部署在同一 tomcat 6 实例中,配置集中在服务器中
- openam 服务器在 jboss 7 中部署的一个单独的 linux 机器上,使用 Windows 2008 Server AD 作为用户存储。
session - 获取在 ColdFusion 应用程序内的 Open SSO 中设置的会话变量的值
当用户登录时,我们在 Open SSO 应用程序中设置了一个会话变量。我需要从 ColdFusion 应用程序访问这个变量。有什么办法吗?我试过 GetPageContext().getSession() 但它似乎不起作用。
authentication - 使 openam/opensso 返回角色名称而不是角色通用 id
我正在使用 OpenAM 9.5.2 对应用程序上的用户进行身份验证。身份验证运行良好,但我在从最终应用程序中获取用户成员身份时遇到问题。
我在 openam 中定义了组“somegroup”并将我的用户添加到该组中。现在在我的应用程序中,我想测试经过身份验证的用户是否是该组的成员。如果我正在测试它:
我得到false
结果。实际上,我必须测试
为了得到true
回应。
我知道可以在 sso 代理配置中定义一个特权属性映射列表来映射id=somegroup,ou=group,dc=opensso,dc=java,dc=net
,somegroup
但它不适合我的情况,因为角色和组存储在外部数据库中。在 sso agent conf 中定义数据库中的角色和映射并不方便。
所以我的问题是:有没有办法让 openam 使用“短”(即somegroup
)组名而不是它的长通用 id?