2012-08-07 2 views
0

인증 된 사용자가 보호 된 페이지를 따라갈 때 Tomcat JDBCRealm을 사용하고 있습니다. 보호 된 페이지에 도달하면 인증이 제대로 작동합니다. 이제 cURL을 사용하여이 프로세스를 자동화하고 싶습니다. 나는 코드 아래 작성했습니다하지만 그것은 작동하지 않습니다cURL을 사용하는 j_security 인증

는 바람둥이에서
$domainUrl = "http://mydomain.com/protectedArea?j_username=john&j_password=doe"; 
$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_URL, $domainUrl); 
//curl_setopt ($ch, CURLOPT_POST, true); 
//curl_setopt ($ch, CURLOPT_POSTFIELDS, $post); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true); 
curl_setopt ($ch, CURLOPT_TIMEOUT, 7); 

$output = curl_exec ($ch); 
curl_close ($ch); 

는 우리가 볼 수있는 로그에만 HTTP GET :

[07/Aug/2012:11:57:06 +0200] GET http://mydomain.com/protectedArea?j_username=john&j_password=doe HTTP/1.1 200 1516 
[07/Aug/2012:11:57:06 +0200] POST http://mydomain.com/j_security_check HTTP/1.1 302 - 
:

[07/Aug/2012:11:51:24 +0200] GET http://mydomain.com/protectedArea?j_username=john&j_password=doe HTTP/1.1 200 1618 

우리는 그런 일을해야하는 반면

누군가가 어떤 생각을 갖고 있습니까? 당신은 단지 하나의 curl_exec 전화를 가지고있는 것처럼 당신의 도움이

감사

+0

참고 : 중요한 것은 'JDBCRealm'을 사용하지 마십시오. 대신, 거의 동일하게 설정되었지만 연결 풀을 사용하고 단일 스레드가 아닌'DataSourceRealm'을 사용하십시오. –

답변

0

에 대한

덕분에 단일 통화가 서버에 두 개의 별도의 요청이 발생할 것으로 예상 않았다 ... 같은데? 사양 기반 서버로 양식 기반 로그인을 스크립팅하려면 다음을 수행해야합니다.

  1. 보호 된 리소스를 요청하십시오. 누구든 할 것입니다.
  2. 으로 요청하고 j_usernamej_password 요청 매개 변수를 포함하십시오. POST은 웹 서버가 자격 증명을 로깅하는 것을 피하기위한 좋은 아이디어입니다. 인증에 성공하면 # 1에서 원래 요청한 자원을 가져와야합니다.
  3. 정말로 액세스하려는 보호 된 리소스에 요청하십시오.
관련 문제