Rest client authentication for CAS protected resource

三步搞定通过Rest client访问被CAS保护的资源:

Step 1: 获取一个Ticket granting ticket

    final RestClient client = new RestClient();
    String ticketGrantingTicket = null;
   
    final String tgtResponse = client
        .resource("https://yourcasserver/v1/tickets")
        .accept(MediaType.TEXT_HTML)
       .post("username=$username&password=$password")
        .getEntity(String.class);

    final Matcher matcher = Pattern.compile(".*action=\".*/(.*?)\".*").matcher(
        tgtResponse);

    if (matcher.matches())
    {
      ticketGrantingTicket = matcher.group(1);
    }


Step 2: 获取一个Service Ticket

    final String serviceTicket = client
        .resource(
            "https://yourcasserver/v1/tickets/" + ticketGrantingTicket)
        .accept(MediaType.TEXT_HTML)
        .post("service=$serviceUrl")
        .getEntity(String.class);


Step 3: 请求CAS protected resource

client.resource(RESOURCE_URL)
        .queryParam("ticket", serviceTicket).accept(MediaType.APPLICATION_XML)
        .get(xxx.class);

About Ticket Lifetimes, please refer to:
http://docs.oracle.com/cd/E19455-01/805-7229/6j6q8svef/index.html

猜你喜欢

转载自zyjbupt.iteye.com/blog/1908028