0

NTLM (Active Directory) ベースのサービスがあり、PHP アプリケーションを作成する必要があります。通常、ユーザーは Activre Directory の資格情報を使用して Web サイトにログインしており、問題ありません。しかし、私がやりたいことは、PHP で作成されたサイトに資格情報を入力できるようにすることです。次のステップでは、cURL を使用して、通常ログインする Active Directory ベースのサイトにユーザーを認証します。

そして、この部分は難しいです。次に、後で再度使用するために、PHP cURL スクリプトを介して Active Directory ベースのサイトに認証されたユーザーのセッションを維持する必要があります (CRON クエリ サイトは、変更されたことを判断し、これが発生したときに自動的にいくつかの操作を実行します。これは通常、ユーザーが行います)手動)。この変更が発生したときに再度認証するために資格情報を保存しないために、この PHP cURL サイトを介してそのサイトに認証されたすべてのユーザーに対して、NTLM セッションを PHP cURL サイトに保存する必要があります。私の質問は次のとおりです。それは可能ですか?

前もって感謝します。

@ウィレム・モルダー

あなたが投稿したコードは実際にクッキーの保存を行いますが、それは私のポイントではありません。私がこれまでに得たものは次のとおりです。

        $cookie_file_path = dirname(__FILE__) . '/cookies.txt';
        $ch = curl_init();

        //==========================================================================
         curl_setopt($ch, CURLOPT_USERPWD, $username. ':' . $password);
         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
         curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
         curl_setopt($ch, CURLOPT_URL, $url);
         curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
         curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
         curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path);
         curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);
         curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
         curl_setopt($ch, CURLINFO_HEADER_OUT, true);
         curl_setopt($ch, CURLOPT_FAILONERROR, 0);
         curl_setopt($ch, CURLOPT_MAXREDIRS, 100);
        //==========================================================================
        $ret = curl_exec($ch);

オプションCURLOPT_COOKIEFILEとを使用してCURLOPT_COOKIEJAR、cURL はローカル ファイル「cookies.txt」に Cookie を保存します。問題は、CURLOPT_USERPWDオプションをコメントすると(Cookieを認証して保存した後、理論的にはセッションがあるため)、Webサイトを承認できないことです。おそらく、NTLM ハンドシェイク認証を再初期化し、保存したくないユーザー名とパスワードを期待しています。

セッション情報のみを保存し、このセッション情報をサービスに提供し、2 番目の認証を省略したいのですが、cURL は Cookie ファイルからこのデータを取得しないようで、NOT AUTHRORISEDアクセス要求への応答としてサービスから送信された関連しないデータでそれを書き換えます.

4

1 に答える 1

1

はい、できます

$ch = curl_init('http://www.google.com/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// Get headers too with this line
curl_setopt($ch, CURLOPT_HEADER, 1);
$result = curl_exec($ch);
// Get cookie
preg_match('/^Set-Cookie:\s*([^;]*)/mi', $result, $m);

var_dump(parse_url($m[1]));

// And then of course store it somewhere :-)

ここで見られるように、php curl から変数に Cookie を取得する方法

于 2013-02-27T09:39:49.803 に答える