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

Authentication 如何从openSSO/openAM系统获取用户名?,authentication,cookies,opensso,openam,Authentication,Cookies,Opensso,Openam,我目前正在使用openAM来保护我的一个使用JavaEEWeb代理的小型web应用程序。有人试图访问应用程序,他们被重定向到openAM实例,他们登录,他们转到应用程序。简单的东西 我希望openAM将成功使用的用户名传递给web应用程序。我的理解是“会话属性”应该用于此。在管理中,我转到我的JavaEEWebAgent并打开“应用程序”选项卡以查看“会话属性处理”。我看到HTTP_COOKIE是获取的一种选择 1) 如果设置正确,我是否希望在cookie中看到用户名为明文? 2) 在会话映射中

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

我希望openAM将成功使用的用户名传递给web应用程序。我的理解是“会话属性”应该用于此。在管理中,我转到我的JavaEEWebAgent并打开“应用程序”选项卡以查看“会话属性处理”。我看到HTTP_COOKIE是获取的一种选择

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

是的,代理将创建明文cookie(如果用户发送恶意cookie,它将重新创建它们),但是使用HTTP_头方法传递属性被认为是更好的解决方案(因为它不存储在客户端)

2) 只有在会话中实际存储了某些内容时,会话属性处理才会起作用。为此,您可以在验证所有核心设置中使用“用户属性映射到会话属性”功能,或者编写一些自定义模块来保存派生值。否则,如果您只想获取用户的uid,则使用配置文件属性处理(uid键HTTP\u uid值,您的应用程序将看到HTTP\u uid cookie/头)。

1)是的,代理将创建纯文本cookie(如果用户发送恶意cookie,则会很好地重新创建),但是,使用HTTP_头方法传递属性被认为是更好的解决方案(因为它不存储在客户端)


2) 只有在会话中实际存储了某些内容时,会话属性处理才会起作用。为此,您可以在验证所有核心设置中使用“用户属性映射到会话属性”功能,或者编写一些自定义模块来保存派生值。否则,如果您只想获取用户的uid,请使用配置文件属性处理(uid键HTTP\u uid值,您的应用程序将看到HTTP\u uid cookie/头)。

我们将HTTP\u头用于代理。因此,如果您已经在使用代理(听起来像是这样),那么以下内容应该适用于您。在OpenAM web控制台中:

  • 访问控制>顶级领域>代理>Web/J2EE/等>单击代理
  • 应用程序选项卡>配置文件属性处理部分>配置文件属性提取模式:
  • 点击“HTTP_头”选项
  • 配置文件属性映射:
  • 映射键:[uid]。。。对应的映射值:uid
  • 单击添加。添加后,它应该看起来像[uid]=uid。添加与后端身份验证系统的属性匹配的任何其他映射。我们的是ldap
在web应用程序中,检索HTTP头元素并查找令牌。它应该是这样的:aqic5wm2ly4rfckcedfzgrgvyevbkr-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
http://://标识/属性?主体ID=AQIC5WM2LY4RFCKCEDFZGRGVYEVBKR-SgBkuemF4Cmm5Qg.*AAJTSQABMDE*
您还可以指定所需的属性,如下所示:

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
http://://标识/属性?主体ID=AQIC5WM2LY4RFCKCEDFZGRGVYEVBKR-SgBkuemF4Cmm5Qg.*AAJTSQABMDE.*&attributenames=uid&attributenames=userpassword
参考文献:


我们在代理中使用HTTP\u头。因此,如果您已经在使用代理(听起来像是这样),那么以下内容应该适用于您。在OpenAM web控制台中:

  • 访问控制>顶级领域>代理>Web/J2EE/等>单击代理
  • 应用程序选项卡>配置文件属性处理部分>配置文件属性提取模式:
  • 点击“HTTP_头”选项
  • 配置文件属性映射:
  • 映射键:[uid]。。。对应的映射值:uid
  • 单击添加。添加后,它应该看起来像[uid]=uid。添加与后端身份验证系统的属性匹配的任何其他映射。我们的是ldap
在web应用程序中,检索HTTP头元素并查找令牌。它应该是这样的:aqic5wm2ly4rfckcedfzgrgvyevbkr-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
http://://标识/属性?主体ID=AQIC5WM2LY4RFCKCEDFZGRGVYEVBKR-SgBkuemF4Cmm5Qg.*AAJTSQABMDE*
您还可以指定所需的属性,如下所示:

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
http://://标识/属性?主体ID=AQIC5WM2LY4RFCKCEDFZGRGVYEVBKR-SgBkuemF4Cmm5Qg.*AAJTSQABMDE.*&attributenames=uid&attributenames=userpassword
参考文献:


谢谢!如果我只是使用openAM发行版中包含的数据存储,我会得到。。。我如何知道用户ID的键是什么?这取决于您拥有什么类型的数据存储,通常在使用LDAP时,您可以使用ldapsearch查找条目,并且命名属性是“uid”。另一方面,如果您碰巧使用Active Directory,那么命名属性是“cn”。但基本上您应该可以访问自己的数据存储,并浏览它以获取用户ID。谢谢!如果我只是使用openAM发行版中包含的数据存储,我会得到。。。我如何知道用户ID的键是什么?这取决于您拥有什么类型的数据存储,通常在使用LDAP时,您可以使用ldapsearch查找条目,并且命名属性是“uid”。另一方面,如果您碰巧使用Active