CAS客户端(Spring Boot + Spring Security)如何从CAS Server获取更多字段?

时间:2019-05-09 08:26:12

标签: spring-security cas spring-security-cas

我阅读了这篇文章CAS SSO With Spring Security并成功运行了源代码,但是此客户端仅获得用户名,希望我的客户端需要来自CAS服务器的更多字段。

在我以前使用传统SpringMVC的CAS客户端中,我可以获得所有文件,包括用户名,电话号码,密码和电子邮件。主要步骤如下: 在CAS服务器的文件WEB-INF / classes / services / Apereo-10000002.json中,我添加了一个选项:

.row

在客户端中,我按如下方式使用 "attributeReleasePolicy" : { "@class" : "org.apereo.cas.services.ReturnAllAttributeReleasePolicy" }

getUserPrincipal

现在,如上所述,我想基于@RequestMapping("/cas/login.do") @ResponseBody public String casLogin(String uri, HttpServletRequest request,...){ ... Principal principal = request.getUserPrincipal(); Map<String,Object> userInfo = new HashMap<>(); if (p instanceof AttributePrincipal) { userInfo =( (AttributePrincipal)principal).getAttributes(); } System.err.println("image:"+userInfo.get("image")); System.err.println("username:"+userInfo.get("username")); System.err.println("email:"+userInfo.get("email")); System.err.println("phoneNo:"+userInfo.get("phoneNo")); ... } 实现CAS客户端。但是根据文章代码,我该怎么办?预先感谢!

1 个答案:

答案 0 :(得分:1)

  

此客户端仅获得用户名,希望我的客户端需要来自CAS服务器的更多字段

您需要确保客户点击正确的端点进行验证。基于notes here

  

如果您的客户端应用程序未接收到属性,则需要确保:

     
      
  • 客户端正在使用能够释放属性的CAS协议版本。
  •   
  • 基于#1的客户端正在命中用于服务票证验证的适当端点(即/p3/serviceValidate)。
  •   
  • CAS服务器本身正在正确解析和检索属性。
  •   
  • 已授权CAS服务器在其服务注册表中向该特定客户端应用程序发布属性。
  •