我阅读了这篇文章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客户端。但是根据文章代码,我该怎么办?预先感谢!
答案 0 :(得分:1)
此客户端仅获得用户名,希望我的客户端需要来自CAS服务器的更多字段
您需要确保客户点击正确的端点进行验证。基于notes here:
如果您的客户端应用程序未接收到属性,则需要确保:
- 客户端正在使用能够释放属性的CAS协议版本。
- 基于#1的客户端正在命中用于服务票证验证的适当端点(即
/p3/serviceValidate
)。- CAS服务器本身正在正确解析和检索属性。
- 已授权CAS服务器在其服务注册表中向该特定客户端应用程序发布属性。