0

私たちは、イントラネット Web アプリケーションを変更しようとしています。すべての個々のユーザーが、すべてのイントラネット Web アプリケーションにログインするために、独自の 1 つのユーザー名とパスワードのみのログイン認証を使用するようにしています。

そのために、ローカルの Windows /Linux システムのユーザー名とパスワードを使用しようとします。

ユーザーがシステムにログインすると、Web アプリケーションを参照すると、すべてのイントラネット Web アプリケーションに直接アクセスできます。イントラネット Web アプリケーションごとに毎回ログインする必要はありません。

多くの記事 (1、2、3、4 など) を読みましたがPHPを使用してそのシステムにログインしたローカル Windows/Linux システムのユーザー名とパスワードを取得する方法を理解できませんでし。少なくともユーザー名だけはもっと十分。

これを試し<?php echo getenv("username"); ?> ましたが、空白が表示されます。

解決策を教えてください。この質問を拒否しないでください。

回答とコメントをお寄せいただきありがとうございます。

4

2 に答える 2

2

簡単な回答: サーバー側でローカル ユーザーの machine-loginname を取得することはできません。それはセキュリティ上の欠陥です!

長い回答: PHP を使用して、ログインフォームで指定されたユーザー名とパスワードが一致するかどうかを会社の LDAP に照会し、その情報を使用して、特定のサービスに対してそのユーザーを認証できます。これは、すべてのポリシーに対する1 つのパスワードです

しかし、私が理解している限りでは、クライアントに座っているユーザーが Web サイトにアクセスするときに資格情報を提供する必要さえないように、 SingleSignOnポリシー (SSO) が必要です。これは、「チケット」などを処理する別のツールチェーンを使用してのみ実現できます。このようなツールチェーンは、Microsoft の ActiveDirectory または Apple の OpenDirectory で使用されるKerberosです。このツールチェーンは、LDAP をバックエンドとして使用してパスワードを保存できます。

しかし、Kerberos を使用することは簡単ではありません。イントラネット サービスを提供する WebServer、Kerberos サーバーから取得したチケットを処理できるように、Kerberos 化する必要があります。

その方向に目を向けるべきです。お気に入りの検索エンジンで検索文字列として Kerberos または SSO を試してください。

于 2013-04-05T10:37:37.847 に答える
0

PHP で LDAP を使用して認証する必要があります。

手順:

1) ログインフォームを作成します 2) 入力を受け取り、データベースと比較します (ldap を介して)。3) 問題がなければ、PHP でセッションを開始し、Cookie を保存します。4) すべてのサイトで session_start() を使用すると、セッション情報を取得できます。

Cookie は、それを作成したサイトでのみ使用できるため、イントラネットを同じドメインに配置するか、この情報をデータベースに保存する必要があります。

PHP は、投稿したようにシステム変数を取得しません。PHP はどの OS にも統合されていません。他のプログラミング言語と同じように、必要なものを構築します。

于 2013-04-04T13:04:18.730 に答える