Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET和Php中使用Web服务的SSO(单点登录)?_Php_Asp.net_Web Services_Single Sign On - Fatal编程技术网

ASP.NET和Php中使用Web服务的SSO(单点登录)?

ASP.NET和Php中使用Web服务的SSO(单点登录)?,php,asp.net,web-services,single-sign-on,Php,Asp.net,Web Services,Single Sign On,我正在尝试在我的asp.net和php站点中实现SSO。 我在asp.net站点上设置了一个webservice~/webservice.asmx,提供了一个名为IsUserOnline(字符串用户名)的方法 然后我将php页面编码为 require_once("nusoap/nusoap.php"); $client = new nusoap_client("http://www.myaspnetsite.com/Webservice.asmx?WSDL", "wsdl","", "", ""

我正在尝试在我的asp.net和php站点中实现SSO。 我在asp.net站点上设置了一个webservice~/webservice.asmx,提供了一个名为IsUserOnline(字符串用户名)的方法 然后我将php页面编码为

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站点上创建登录状态。
你认为这是个好办法吗?什么是安全问题?速度问题?

在站点之间执行SSO的最简单方法是共享cookie-唯一的要求是相同的域(因为cookie仅在相同的域中共享)

只需创建一个负责记录用户的网站。让站点在成功登录后创建加密cookie。然后,每个应用程序检查cookie是否存在,并要求服务解密cookie并返回用户信息。注销包括删除cookie-当用户尝试访问页面时,您的所有站点都会通过注销用户来做出反应

现有的几种框架都是基于这一思想的,比如检查JOSSO

如果您希望实现企业解决方案,请检查WS-Federation协议。它的实现与Windows身份基础框架是可能的。只要阅读Vittorio Bertocci的《编程Windows身份基础》一书,您就会了解所有细节