中央認証サーバーの背後にある php ページにアクセスする必要があります。他の手段を使用してこのサイトにアクセスしようとすると、認証を待って CAS ページにリダイレクトされます。基本的にGET
、認証ページに変数を提供する必要があります。(望まない。) 残念ながら、このページの CAS を削除することはできません。これは、重大なセキュリティ リスクであるためです。
だから私の質問は、私が持っている資格情報をCASに提供し、そこからCookieを保存し、それを使用してphpページにアクセスする方法はありますか?
以下の私の試み:
メソッドを使用しているのでGET
、php ページで値を指定するまで待つ必要はありません。実際にページにアクセスするだけで済みます。https://site.com/page.php?var1=value1&var2=value2
資格情報を使用してページにアクセスするWebClientとして、クラスを作成しましたCookieAwareClient
public class CookieAwareWebClient : WebClient
{
public CookieAwareWebClient()
{
CookieContainer = new CookieContainer();
}
public CookieContainer CookieContainer { get; private set; }
protected override WebRequest GetWebRequest(Uri address)
{
var request = (HttpWebRequest)base.GetWebRequest(address);
request.CookieContainer = CookieContainer;
return request;
}
}
次に、以下を送信します。
使用 (var client = new CookieAwareWebClient())
using (var client = new CookieAwareWebClient())
{
var values = new NameValueCollection
{
{"username", "usr" },
{"password", "(passw0rd!)"}, //don't worry. not actual information
};
//This should bring me to the login page, which will upload the values I have given
client.UploadValues("https://site.com/page.php?var1=value1&var2=value2", values);
string result = client.DownloadString("https://site.com/page.php?var1=value1&var2=value2");
残念ながら、これでも CAS にログインできず、結果は CAS の HTML として返されます。
これを修正する方法を知っている人はいますか? ご協力ありがとうございました。