如何从 openSSO/openAM 系统获取用户名?

Gor*_*ren 1 authentication cookies opensso openam

我目前正在使用 openAM 来保护我的一个使用 Java EE Web 代理的小型 Web 应用程序。有人试图访问该应用程序,他们被重定向到 openAM 实例,他们登录,然后转到该应用程序。简单的东西。

我想要的是 openAM 将成功使用的用户名传递给网络应用程序。我的理解是应该为此使用“会话属性”。在管理员中,我转到我的 Java EE webagent 并打开“应用程序”选项卡以查看“会话属性处理”。我看到 HTTP_COOKIE 是获取的选择。

1) 如果正确设置,我是否应该期望在 cookie 中以明文形式看到用户名?2)我在会话映射中输入什么值来获取用户名?如何在数据存储中找到与此对应的值?

谢谢

n2s*_*dio 5

我们在代理中使用 HTTP_HEADER。因此,如果您已经在使用代理(听起来像您),那么以下内容应该适合您。在 OpenAM Web 控制台中:

  • 访问控制 > 顶级领域 > 代理 > Web / J2EE / 等 > 单击代理
  • 应用程序选项卡 > 配置文件属性处理部分 > 配置文件属性获取模式:
  • 单击“HTTP_HEADER”选项
  • 配置文件属性映射:
  • Map Key: [uid] ... 对应Map Value: uid
  • 单击添加。添加后它应该看起来像 [uid]=uid 。添加您需要的与后端身份验证系统的属性相匹配的任何其他映射。我们的是LDAP。

在您的 Web 应用程序中,检索 HTTP 标头元素并查找令牌。它应该看起来像这样:AQIC5wM2LY4RfckcedfzxGrgVYevbKR-SgBkuemF4Cmm5Qg。AAJTSQABMDE。

然后,您可以使用 OpenAM REST 接口来验证和检索与令牌关联的属性,例如用户名、密码、cn 等。要检索所有属性,URL 将如下所示:

http://<OpenAM_Host>:<Port>/<deploy_uri>/identity/attributes?subjectid=AQIC5wM2LY4RfckcedfzxGrgVYevbKR-SgBkuemF4Cmm5Qg.*AAJTSQABMDE.*
Run Code Online (Sandbox Code Playgroud)

您还可以像这样指定所需的属性:

http://<OpenAM_Host>:<Port>/<deploy_uri>/identity/attributes?subjectid=AQIC5wM2LY4RfckcedfzxGrgVYevbKR-SgBkuemF4Cmm5Qg.*AAJTSQABMDE.*&attributenames=uid&attributenames=userpassword
Run Code Online (Sandbox Code Playgroud)

参考资料:
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