Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Spring Security中使用CAS时如何对客户端服务进行身份验证?_Java_Spring_Spring Security_Cas - Fatal编程技术网

Java 在Spring Security中使用CAS时如何对客户端服务进行身份验证?

Java 在Spring Security中使用CAS时如何对客户端服务进行身份验证?,java,spring,spring-security,cas,Java,Spring,Spring Security,Cas,我已经创建了CAS服务器和CAS客户端应用程序。基本上,服务应用程序的身份验证是使用服务票证和代理票证验证完成的。在这种情况下,我首先通过验证服务票证来验证特定用户,然后通过使用服务票证生成代理票证来授权特定应用程序的用户。在这种情况下,我能够在服务应用程序中成功验证服务和代理票证。我面临的问题是,一旦我验证了用户,我就可以使用下面的代码段通过断言对象检索用户信息 Assertion-Assertion=serviceTicketValidator.validate(serviceTicket)

我已经创建了CAS服务器和CAS客户端应用程序。基本上,服务应用程序的身份验证是使用服务票证和代理票证验证完成的。在这种情况下,我首先通过验证服务票证来验证特定用户,然后通过使用服务票证生成代理票证来授权特定应用程序的用户。在这种情况下,我能够在服务应用程序中成功验证服务和代理票证。我面临的问题是,一旦我验证了用户,我就可以使用下面的代码段通过断言对象检索用户信息

Assertion-Assertion=serviceTicketValidator.validate(serviceTicket);
这里的
serviceTicektValidator
对象是我通过实现
cas20servicecketvalidator
valdation函数编写的一个类。这里,断言对象被设置为
SecurityContextHolder
,如下所示

CasAssertionAuthenticationToken=新的CasAssertionAuthenticationToken(断言,服务票证);
SecurityContextHolder.getContext().setAuthentication(令牌);

你是对的。您应该在HttpSession中缓存经过身份验证的用户。请记住,容器使用线程池。这意味着如果请求a(来自用户a)将SecurityContextHolder设置为具有用户a的身份验证,而不清除它。稍后的请求b(来自用户b)将被验证为用户a,这是错误的。@非常感谢您的回复。我想知道在使用Angular2和CAS时,我们应该采取的最佳实践是什么。如何在客户端应用程序中保留这些服务票证或代理票证。使用Redis的Spring会话是更好的解决方案还是有更好的方法。我目前正在设计一个完整的流程,我已经完成了与CAS相关的服务器和客户端基本配置。请指导我使用更好的开发标准改进我的应用程序。您应该使用会话cookie并允许浏览器维护cookie。如果您需要分布式会话,那么Spring会话是一个不错的选择。@RobWinch非常感谢。你对angular2应用程序的结构有什么线索吗。我的意思是如何在angular2应用程序中以最佳方式管理用户详细信息。我想学习最佳实践。对于弹簧-角度底座的应用,有什么好的参考或指南吗。非常感谢你抽出时间。你说得对。您应该在HttpSession中缓存经过身份验证的用户。请记住,容器使用线程池。这意味着如果请求a(来自用户a)将SecurityContextHolder设置为具有用户a的身份验证,而不清除它。稍后的请求b(来自用户b)将被验证为用户a,这是错误的。@非常感谢您的回复。我想知道在使用Angular2和CAS时,我们应该采取的最佳实践是什么。如何在客户端应用程序中保留这些服务票证或代理票证。使用Redis的Spring会话是更好的解决方案还是有更好的方法。我目前正在设计一个完整的流程,我已经完成了与CAS相关的服务器和客户端基本配置。请指导我使用更好的开发标准改进我的应用程序。您应该使用会话cookie并允许浏览器维护cookie。如果您需要分布式会话,那么Spring会话是一个不错的选择。@RobWinch非常感谢。你对angular2应用程序的结构有什么线索吗。我的意思是如何在angular2应用程序中以最佳方式管理用户详细信息。我想学习最佳实践。对于弹簧-角度底座的应用,有什么好的参考或指南吗。非常感谢您抽出时间。