我目前正在使用openAM来保护使用Java EE Web代理的我的小型webapp。有人试图访问该应用程序,他们被重定向到openAM实例,他们登录,他们转到应用程序。简单的东西。
我想要的是openAM将成功使用的用户名传递给Web应用程序。我的理解是应该使用“会话属性”。在管理员中,我转到我的Java EE webagent并打开“应用程序”选项卡以查看“会话属性处理”。我看到HTTP_COOKIE是获取的选择。
1)我是否应该在cookie中看到用户名(如果设置正确)作为明文? 2)我在会话映射中输入什么值来获取用户名?如何找到数据存储中的哪个值与此对应?
由于
答案 0 :(得分:4)
我们正在使用HTTP_HEADER与我们的代理商。因此,如果您已经在使用代理(听起来像你),那么以下内容应该适合您。在OpenAM Web控制台中:
在您的Web应用程序中,检索HTTP Header元素并查找令牌。它看起来应该是这样的:AQIC5wM2LY4RfckcedfzxGrgVYevbKR-SgBkuemF4Cmm5Qg。 AAJTSQABMDE。
然后,您可以使用OpenAM REST界面验证和检索与令牌关联的属性,例如用户名,密码,cn等。要检索所有属性,URL将如下所示:
http://<OpenAM_Host>:<Port>/<deploy_uri>/identity/attributes?subjectid=AQIC5wM2LY4RfckcedfzxGrgVYevbKR-SgBkuemF4Cmm5Qg.*AAJTSQABMDE.*
您还可以像这样指定所需的属性:
http://<OpenAM_Host>:<Port>/<deploy_uri>/identity/attributes?subjectid=AQIC5wM2LY4RfckcedfzxGrgVYevbKR-SgBkuemF4Cmm5Qg.*AAJTSQABMDE.*&attributenames=uid&attributenames=userpassword
参考文献:
https://wikis.forgerock.org/confluence/display/openam/Use+OpenAM+RESTful+Services
http://openam.forgerock.org/openam-documentation/openam-doc-source/doc/dev-guide/index/chap-rest.html
答案 1 :(得分:2)
1)是的,代理将创建明文cookie(如果用户发送恶意代码,它将很好地重新创建它们),但是使用HTTP_HEADER方法传递属性被认为是更好的解决方案(因为它没有存储在客户方)。
2)会话属性处理仅在您实际存储会话中的内容时才有效。为此,您可以使用“身份验证所有核心设置”中的“用户属性映射到会话属性”功能,也可以编写一些自定义模块来保存派生值。否则,如果您只想获取用户的uid,请使用配置文件属性处理(uid键HTTP_UID值,您的应用将看到HTTP_UID cookie /标头)。