我有一个cassified Spring应用程序(使用过滤器并运行正常)。
此应用程序必须通过REST查询多个外部服务(Bonita,W4等)。这些其他服务也是可以理解的。
行。
现在,我需要从spring应用程序恢复CAS TICKET以生成这些其他服务的代理票证,但我不知道如何获取票证。我尝试使用以下URL请求这些服务的票证:
https://[cas-service]/login?service=[service]&gateway=true
此命令返回一个票证(通过重定向),但Spring应用程序的CAS过滤器拦截了这个重定向,我无法获得返回的参数。
http://[service-url]?ticket=ST-....
重定向到
http://[service-url]
如何检索票证以将当前用户验证到其他服务?
谢谢!
PD:抱歉我的英语有限......:)
答案 0 :(得分:1)
SecurityContext ctx=SecurityContextHolder.getContext();
CasAuthenticationToken casToken=(CasAuthenticationToken) ctx.getAuthentication();
Assertion assertion=casToken.getAssertion();
user_fullName=(String) assertion.getAttributes().get("FullName");
从安全上下文中,您可以获取经过身份验证的CAS令牌对象。哪个有SAML响应。 CAS令牌对象具有SAML响应的详细信息。您可以查询CAS令牌对象以获取ASSERTION,您可以在App中使用它。