0

私は自分の会社に独自のユーザー データベースを持つ Web サービス (abc.com) を持っていますが、問題なく動作しています。現在、私の会社は、別のドメイン (xyz.com) を持つ完全に異なるサーバーにあるいくつかの追加サービスを追加したいと考えていますが、abc.com からの同じログイン データを使用しています。 xyz.com のようなサーバーなので、xyz.com にユーザー データベースをインポートするだけでは問題ありません。

最初に考えたのは、abc.com の checkuser.php を使用して、xyz.com からログイン フォームを送信することでしたが、その後、セッション Cookie がドメインにバインドされていることがわかりました。少なくとも私はそう理解した。

その後、AJAX と HTTPS 経由で checkuser.php にアクセスし、POST 経由で暗号化されたセッション データを xyz.com に送信したいと考えました。セキュリティ上の理由から、AJAX は複数のサーバー間で機能しないように見えるため、これも失敗しました。

今、私はアイデアがなく、ユーザーデータベースを使用して外部サーバーでユーザーを安全に認証する方法がわかりません。

4

3 に答える 3

2

共有セッションの代わりにシングルサインオン(SSO)を使用します。そうすれば、サイトのコードを相互に依存させることはありません。後でサイトの1つで何かを変更することにした場合、他のサイトの機能を壊すことを心配する理由は少なくなり、新しいサイトにリンクすることを選択した場合は、同じソリューションを再利用できます。

より良いのは、誰かがすでにあなたのためにそれを作ったということです、そしてあなたがあなた自身で作成することができるものよりもさらに安全かもしれません。

ウィキペディアには、SSOに関する一般的な知識がいくつかあります。また、OAuthとOpenIDを調べてください。これらの用語をPHPと組み合わせると、検索によって正しい方向に進むことができます。

于 2012-09-11T12:25:19.090 に答える
0

もう1つのオプションは、xyz.comのログイン機能をabc.comのデータベースに直接接続して、ログイン名とパスワードを確認することです。次に、xyz.comのデータベースを他のすべてに使用します。また、セッション情報を一時ファイルではなくabc.comのデータベースに保存したい場合は、xyz.comからそのデータにアクセスすることもできます。これを行う方法の例を次に示します。

于 2012-09-11T12:41:02.683 に答える
0

私はphpを長い間使用しておらず、この問題に遭遇したことはありませんが、本を一生懸命読んでいて、私があなたを助けるという答えに出くわしました.

サーバー xyz.com のスクリプトと DB にアクセスしようとしているだけの場合は、次の関数を使用して、別のサーバー (abc.com) にあるスクリプト内から URL または IP アドレスを使用して、文字通りスクリプトのコンテンツを取得できます。 :

/* This example allows my example script on server mvc.com
to access the script on oreilly.com */
file_get_contents("http://oreilly.com");

あなたはコードにリモートでアクセスしており、ここでは暗闇で撮影しているので、file_get_contents ()を使用すると、サーバー xyz.com のスクリプトから $_POST または $_GET メソッドを介して変数を設定し、サーバー abc.com のスクリプトに値を追加します。そこから、元の $_SESSION 変数とほとんどの処理を処理する単一のサーバーにある $_SESSION 変数内にこれらの変数を格納できます。

頻繁に行き来する必要がある場合、サーバー間の非常に複雑な「キャッチゲーム」になる可能性がありますが、データを単一のサーバーに移動できない場合は、問題を回避できると思います. スクリプトの構造を適切に計画すると、これらの $_SESSION 変数をすべて 1 つの場所に格納できるようになります。

于 2012-09-11T12:45:13.147 に答える