0

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

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

  "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"));
 ...
}

现在我想根据spring boot + spring security上述文章实现一个 CAS 客户端。但是根据文章代码,我该怎么办?提前致谢!

4

1 回答 1

1

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

您需要确保您的客户端点击正确的端点进行验证。根据此处的注释

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

  • 客户端正在使用能够释放属性的 CAS 协议版本。
  • 以#1 为基础的客户端正在访问适当的端点以进行服务票证验证(即/p3/serviceValidate)。
  • CAS 服务器本身正在正确解析和检索属性。
  • CAS 服务器被授权在其服务注册表中向该特定客户端应用程序发布属性。
于 2019-06-26T04:57:17.633 回答