別のサーバー上の PHP アプリケーションで SharePoint SSO を使用しますか?

StackOverflow https://stackoverflow.com/questions/242669

  •  04-07-2019
  •  | 
  •  

質問

SharePoint サイトと、別のドメインに存在するカスタム PHP ベースのサイトとの間に SSO を実装する必要があります。SharePoint ユーザー アカウントを使用して PHP サイトにログインする必要があります。(PHP ソースを完全に制御できるようになります)

これは可能でしょうか?ヒントやコツはありますか?

役に立ちましたか?

解決

私の想定では、PHPアプリ/ドメインを完全に制御できますが、別のチームがSharePointサーバーを管理しています。また、SSO機能用のシンプルなWebパーツを作成するようにSharePointチームに依頼できると仮定します。

このような場合は、サイトへのリンクを含むWebパーツを作成するようにSharePointチームに依頼できます。ユーザーがリンクをクリックすると、リクエストが共有ポイントサーバーに戻され、共有ポイントサーバーはユーザーのログオン名を取得し、公開キーを使用してそれを暗号化し、PHPサイトのURLに追加し、これをリダイレクトとして送信しますブラウザに。そのため、場所は次のようになります。

https://your.php.domain/sso.php?logon = encrypted_users_logon_name& api_key = some_token

sso.phpスクリプトは、api_keyがSharepointパートナーからの有効なトークンであることを確認し、次に、取得しようとしているユーザーのログオン名を解読します。さらに空想を取得し、Sharepointサイトでコールバックを行うことができます。ログオン要求が一定時間内に正当であることを確認するか、暗号化されたログオン名にそれを焼き付けますが、これは、SharePointパートナーからの要求を信頼する場合、それを行うための最低限の方法です。

sharepoint .net開発者は、おそらく任意の暗号化を行うことができるので、phpと.netの両方で使用できるアルゴリズムを選択し、暗号化に使用するキーと、情報の形式を提供します。暗号化します。 n = logon_name; expire = timestamp;のようなものその後、復号化するときに、有効期限が切れている場合はログオンを拒否します。

他のヒント

この分野についてはあまり知りませんが、これが正しい方向にあなたを導く助けになることを願っています。

LDAPを調査...

LDAP資格情報を使用するようにPHPをセットアップできます。 SharePointサイトでActive Directoryを使用している場合、このディレクトリをLDAPソースとして公開し、PHPアプリケーションで使用できます。

自動サインイン...

各サイト間でサインインが自動的に行われることは、まったく異なる問題です。例えば私はすでにMOSSにログインしているので、PHPアプリに移動するリンクをクリックすると、すでにそこにログインしていることがわかります。このためには、Kerberosキー/認証などを使用して調査する必要があります。面倒で難しいエリアです。

私たちも同じ状況にありましたが、SSO のために asp.net と php を組み合わせて使用​​しています。asp.net コードは Windows 認証を実行し、ユーザー名と一意のキーを含むレコードを mysql データベースに作成し、これらの値を Cookie に割り当てます。次に、ユーザーを PHP アプリにリダイレクトします。

PHP アプリはこれらの Cookie 値を読み取り、データベース値と比較して、リクエストが認証されたものであることを確認します。これは、PHP でシングル サインオンを使用し、共有ポイントを PHP と連携させるための回避策です。ただし、php で SSO に Kerb_auth_mod を使用することをお勧めします。私たちは最終的にそれを実行しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top