authentication - trying to get response from CAS secure rest api,but getting login page as response from java client -
i trying correct response cas secure rest api,but every time getting login page response , have converted groovy rest client site https://wiki.jasig.org/display/casum/restful+api java rest client not giving correct result, below java rest client cas .
httpclient client = new httpclient(); public string getticketgrantingticket(string server, string username, string password) { postmethod post = new postmethod(server); post.setparameter("username", username); post.setparameter("password", password); // namevaluepair[] namevaluepairs = new namevaluepair[2]; // namevaluepairs[0] = new namevaluepair("username", username); // namevaluepairs[1] = new namevaluepair("password", password); // post.setrequestbody(namevaluepairs); try { client.executemethod(post); string response = post.getresponsebodyasstring(); log.info("response : " + response); switch (post.getstatuscode()) { case 201: matcher matcher = pattern.compile(".*action=\".*/(.*?)\".*").matcher(response); if (matcher.matches()) return matcher.group(1); log.warning("successful ticket granting request, no ticket found!"); log.info("response (1k): " + response.substring(0, math.min(1024, response.length()))); break; default: log.warning("invalid response code " + post.getstatuscode() + " cas server!"); log.info("response: " + response); break; } } catch (final ioexception e) { log.warning(e.getmessage()); } { post.releaseconnection(); } return null; } public string getserviceticket(string server, string ticketgrantingticket, string service) { if (ticketgrantingticket.isempty()) return null; // httpclient client = new httpclient(); postmethod post = new postmethod(server + "/" + ticketgrantingticket); post.setparameter("service",service); // namevaluepair[] namevaluepairs = new namevaluepair[1]; // namevaluepairs[0] = new namevaluepair("service", service); // post.setrequestbody(namevaluepairs); try { client.executemethod(post); string response = post.getresponsebodyasstring(); log.info("service response : " + response); switch (post.getstatuscode()) { case 200: return response; default: log.warning("invalid response code ( $post.getstatuscode() ) cas server!"); log.info("response (1k): " + response.substring(0, math.min(1024, response.length()))); break; } } catch (final ioexception e) { e.printstacktrace(); log.warning(e.getmessage()); } { post.releaseconnection(); } return null; } public string validateserviceticket(string server, string serviceticket, string service) { if (serviceticket.isempty()) return null; // httpclient client = new httpclient(); postmethod post = new postmethod(server + "/" + serviceticket); post.setparameter("service", service); post.setparameter("ticket", serviceticket); // namevaluepair[] namevaluepairs = new namevaluepair[2]; // namevaluepairs[0] = new namevaluepair("service", service); // namevaluepairs[1] = new namevaluepair("ticket", serviceticket); // post.setrequestbody(namevaluepairs); try { client.executemethod(post); string response = post.getresponsebodyasstring(); log.info("validate response : " + response); switch (post.getstatuscode()) { case 200: return response; default: log.warning("invalid response code "+ post.getstatuscode()+" "); log.info("response (1k): " + response.substring(0, math.min(1024, response.length()))); break; } } catch (final ioexception e) { e.printstacktrace(); log.warning(e.getmessage()); } { post.releaseconnection(); } return null; } public void getservicecall(string service, string serviceticket) { // httpclient client = new httpclient(); getmethod method = new getmethod(service); namevaluepair[] namevaluepair = new namevaluepair[1]; namevaluepair[0] = new namevaluepair("ticket", serviceticket); method.setquerystring(namevaluepair); try { client.executemethod(method); string response = method.getresponsebodyasstring(); log.info("service request call : " + response); switch (method.getstatuscode()) { case 200: log.info("response: " + response); break; default: log.warning("invalid response code (" + method.getstatuscode() + ") cas server!"); log.info("response: $response"); break; } } catch (final ioexception e) { log.warning(e.getmessage()); } { method.releaseconnection(); } } public void logout(string server, string ticketgrantingticket) { httpclient client = new httpclient(); deletemethod method = new deletemethod(server + "/" + ticketgrantingticket); try { client.executemethod(method); string response = method.getresponsebodyasstring(); log.info("logout response : " + response); switch (method.getstatuscode()) { case 200: log.info("logged out"); break; default: log.warning("invalid response code (" + method.getstatuscode() + ") cas server!"); log.info("response: $response"); break; } } catch (final ioexception e) { log.warning(e.getmessage()); } { method.releaseconnection(); } } public static void main(string[] args) { restserviceauthenticator authentication = new restserviceauthenticator(); string server = "https://casserver.com/cas/v1/tickets"; string username = "username"; string password = "password"; string service = "http://servicetogetresponse"; string validate = "https://casserver.com/cas/validate"; // client client = new client(); // string ticketgrantingticket = authentication.getticketgrantingticket(server, username, password); // system.out.println("ticketgrantingticket " + ticketgrantingticket); // string serviceticket = authentication.getserviceticket(server, ticketgrantingticket, service); // system.out.println("serviceticket " + serviceticket); authentication.validateserviceticket(validate, serviceticket, service); // authentication.getservicecall(service, serviceticket); // authentication.logout(server, ticketgrantingticket); }
please help
if use shiro, should use buji-pac4j + pac4j-cas deal cas rest api -> https://github.com/pac4j/pac4j/wiki/clients#cas-support-pac4j-cas-module
Comments
Post a Comment