2012-02-23 24 views
0

私はasp.netとphpサイトでSSOを実装しようとしています。 私は IsUserOnline(文字列のuserName)と呼ばれる方法を提供する私のasp.netサイト上でWebサービス〜/ Webservice.asmxを設定し、その後、私はWebサービスを使用したASP.NETとPHPのSSO(シングルサインオン)

require_once("nusoap/nusoap.php"); 
$client = new nusoap_client("http://www.myaspnetsite.com/Webservice.asmx?WSDL", "wsdl","", "", "", ""); 
$err = $client->getError(); 
if ($err) { 
echo "error ..." . $err . ; 
} 
$param = "username"; 
$result = $client->call("IsUserOnline", $param, "", "", false, true); 

ようなPHPページをコード化された。そして、私はかどうかを確認するために、結果を使用することができますユーザーはオンラインであるかどうか。 私はいつもコードを使って各PHPページをチェックしたり、一度だけチェックしたり、PHPサイトでログインステータスを作成することができます。 それは良い解決策だと思いますか?セキュリティ上の問題は何ですか?スピードの問題?

答えて

1

サイト間でSSOを実行する最も簡単な方法は共有Cookieです。唯一の要件は同じドメインです(Cookieは同じドメインでのみ共有されるため)。

ユーザーのログインを担当するWebサイトを作成するだけです。サイトのログインが成功すると、暗号化されたCookieが作成されます。次に、アプリケーションのそれぞれがクッキーが存在するかどうかをチェックし、サービスに復号化してユーザー情報を返すようにサービスに依頼します。ログアウトはCookieを削除することから成ります。すべてのサイトはユーザーがページにアクセスしようとするとログアウトして反応します。

このアイデアに基づいていくつかの既存のフレームワークがあります。例えば、JOSSOをチェックしてください。

エンタープライズソリューションを実装したい場合は、WS-Federationプロトコルを確認してください。その実装はWindows Identity Foundationフレームワークで可能です。 Vittorio Bertocciの「Programming Windows Identity Foundation」の本を読んでみると、すべての詳細が得られます。

関連する問題