我在公司建立了很多内部应用程序。我的编程是在数据库/应用程序级别。我的大多数应用程序多年来一直使用相同的登录/身份验证类。但是,该公司希望一切都通过他们的 SSO 身份验证应用程序。他们向我发送了他们的 SSO 应用程序 URL、他们传递的字段名称、我的站点 actionURL 和我的 appKey。
我所有的应用程序都在同一个域上。我知道我可以将 cookie 设置为在整个域上工作并进行设置。现在我有点卡住了,因为我写了一些非常简单的测试代码。它将用户带到 SSO 服务器并进行身份验证并将其发送回我的 actionURL,这只是我域的根目录。
所以我试图请求一个位于我的代码后面的 URL,它表明我需要进行身份验证,将我传递给 SSO 应用程序,然后我被传递回我的 actionURL。我的 actionURL 需要什么才能让我浏览我的应用程序。
当前代码:
session_start();
if ($_POST && isset($_POST['digest']))
{
$digest = $_POST["digest"];
// set the session variables ...
$_SESSION['username'] = $_POST["firstname"]." ".$_POST["lastname"];
$_SESSION['firstname'] = $_POST["firstname"];
$_SESSION['lastname'] = $_POST["lastname"];
$_SESSION['email'] = $_POST["email"];
$_SESSION['uid'] = $_POST["uid"];
// Needed for key
$uid = $_POST["uid"];
$time = $_POST["time"];
// Read the property file with the key and URL so this won't go into the main code ...
// this sets $appKey and $safeurl
require_once("safe_login_properties.php");
$mykey = "".$uid.$time.$appKey;
$mydigest = md5($mykey);
if ($debugthis) // enable this for some debugging
{
$fp = fopen("DebugInfo.txt", "a");
fprintf($fp, "%s\n", date("H:i:s"));
foreach($_POST as $p => $v)
{
fprintf($fp, "POST: %s: %s\n", $p, $v);
}
foreach($_SESSION as $p => $v)
{
fprintf($fp, "SESSION: %s: %s\n", $p, $v);
}
fprintf($fp, "mykey: %s (uid: %s, time %s, key %s)\n", $mykey, $uid, $time, $appKey);
fprintf($fp, "posted digest: %s\n", $digest);
fprintf($fp, "mydigest: %s\n", $mydigest);
if ($digest == $mydigest)
fprintf($fp, "Digest match\n");
else
fprintf($fp, "***** digest does not match\n");
fclose($fp);
}
if ($digest != $mydigest)
{
die("Invalid login - expected digest does not match");
}
}
if (!isset($_SESSION['username']) || empty($_SESSION['username']))
{
// Read the property file with the key and URL so this won't go into the main code ...
// this sets $appKey and $safeurl
require_once("safe_login.php");
header("Location: ".$safeurl);
}
附加信息 - 我所有的应用程序都是基于 mysql 和 php 的。所以我需要把我的mysql片段带进去。我需要一些东西,说是的,您已获得授权,您的用户名已被传递,现在我们将在 mysql 数据库中查找您并使用您相应的行进行权限/访问。那有意义吗?现在试着写那部分。