首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java重客户端使用受OpenAM保护的servlet进行身份验证的正确方法是什么?

java重客户端使用受OpenAM保护的servlet进行身份验证的正确方法是什么?
EN

Stack Overflow用户
提问于 2014-02-03 22:30:09
回答 1查看 622关注 0票数 0

java重客户端使用受OpenAM保护的servlet进行身份验证的正确方法是什么?

Java是存在的,我曾经使用过,它确实提供了对SSO令牌的访问。当同样沉重的Java客户端尝试将序列化的对象发送到受保护的tomcat 7 (tomee+) servlet时,就会发生故障。OpenAM过滤器使用带有包含凭据的嵌入式/隐藏表单的重定向。这会中断序列化的对象通信。

那么,让Java重客户机进行身份验证的正确方法是什么,这样它就可以将序列化的对象来回发送到受保护的servlet?这有可能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-04 17:49:18

对客户端进行身份验证有几种方法:

  • 使用REST对客户端进行身份验证(/标识/身份验证或/json/身份验证)
  • 使用ClientSDK AuthContext API
  • 向/UI/Login发送POST请求(不一定是最好的方式.)

在获得令牌之后,唯一需要确保的是将会话cookie发送到受保护的页面。如果您收到JAAS的自提交表单,那么这意味着您在J2EE_POLICY或ALL模式下使用代理,Java声明性安全性就启用了。这一问题领域的可能解决办法:

  • 修改客户机,以便它处理JAAS表单登录内容(即获取输入值并手动执行POST ),在此之后,您可能还必须发送带有所有请求的JSESSIONID。
  • 考虑在(isUserInRole/getRemoteUser/@RolesAllowed/etc)中删除对servlet的保护,这样容器就不会尝试显示JAAS登录表单,但这也意味着您将不会有漂亮的JAAS集成。
  • 将servlet移动到单独的应用程序中,它可以在不同的代理筛选模式(URL_POLICY/SSO_ONLY)中受到保护,但如果没有JAAS集成,它仍然会受到保护。

基本上,我想不出一种简单的方法,在不处理基于表单的登录的情况下,将JAAS集成到使用大量客户机的情况下。有一次,我能够实现一个Java应用程序客户机,它使用编程登录身份验证到容器的(代理)领域,但我不认为您的重型客户机实际上是一个Java应用程序客户端。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21539197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档