[PHP-users 35558] post命令を受け取るサイトへのシングルサインオン
ram
ram @ hatsuho.co.jp
2011年 5月 2日 (月) 10:53:21 JST
こんにちは。
このメーリングリストに出してよいものかと迷ったのですが、質問させて頂きた
いと思います。
ID、パスワードを指定してフォーム認証を行っているパッケージがあります。
ソースを見ると、以下のようになっています。
<FORM name="form1" method="post" action="http//localhost/p/p @ login.exe">
<INPUT type='text' name='id' value=''>
<INPUT type='password' name='password'>
</FORM>
これを別サーバーの認証を使って自動的に行いたいと思っています。
具体的には、個人アカウントで認証して組織を取得、組織毎のアカウントとパス
ワードに置き換えて
上記のパッケージに対してログオンする、シングルサインオンもどきのことを行
いたいと思っています。
headerに対するパラメタ値を渡すにはどうしたらよいのでしょうか?
自分で作ったものであれば、GETで受け取るようにするなり、セッション変数で
渡せるように作り直すことも可能でしょうが、パッケージなのでそうもいきません。
ネットで同じような用途かどうか判りませんが、POST送信をPHPで行う方法が書かれて
ありましたので、上記のパッケージに対して強制的にPOST送信でログオンさせる
スクリプトを作ってみました。(server及びgroupはログインフォーム上になくhtml上
で隠しフィールドとして記述されているパラメタ)
パスワードの属性に問題があるのかどうか判りませんが、動作しません。
エラーも何も出ないので調べようもなく行き詰っています。
<?php
$server = "http//localhost/p/login.exe";
$host = "localhost";
$port = 80;
$timeout = 30;
$userid = "MYNAME";
$password = "PASSWORD";
$data = "userid=".$userid."&password=".$password."&server=mars&group=PPP";
$sock = fsockopen($host, 80, $errno, $errstr, 60);
if($sock === FALSE){
echo "fsockopen error";
return (-1);
}
fwrite($sock, "POST " . $server . " HTTP/1.0\r\n");
fwrite($sock, "Content-Type: application/x-www-form-urlencoded\r\n");
fwrite($sock, "Content-Length: " . strlen($data) . "\r\n");
fwrite($sock, "\r\n");
fwrite($sock, $data);
fwrite($sock, "\r\n");
fclose($sock);
?>
このパッケージに対して、直接アカウントを指定するシングルサインオン自体は、使
用中のグループウェア上で実装されているので、何か方法があるかと思い、
お知恵を拝借致したくお願い申し上げます。
▼最終的に動作させたいスクリプトのイメージ
<?php
include_once('@Svr_Check.php');
if(isset($_POST['id'])){
if(Svr_Check($_POST['id'],$_POST['pass']) == true){
// 入力値が渡せない
????=$_POST["id"];
header("Location:http//localhost/p/login.exe");
}
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Login</title>
</head>
<body>
<h3>ログイン</h3>
IDとパスワードを入れて下さい。
<form action="p @ login.php" method="post">
ID:<input type="text" name="id" value="" size="20" maxlength="20">
PASSWORD:<input type="password" name="pass" value="" size="20"
maxlength="20">
<input type="submit" value="OK">
</form>
</html>
初穂太郎
PHP-users メーリングリストの案内