私は会社で多くの社内アプリケーションを構築してきました。そして、私のプログラミングはデータベース/アプリ レベルです。私のアプリケーションのほとんどは、同じログイン/認証クラスを何年も使用しています。ただし、この会社は、すべてが 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 データベースであなたを検索し、対応する行を使用して権利/アクセスを取得します。それは理にかなっていますか?その部分を今書いてみました。