1

我需要在 SharePoint 站点和驻留在不同域中的基于 PHP 的自定义站点之间实现 SSO。我需要使用 SharePoint 用户帐户登录 PHP 站点。(我将完全控制 PHP 源代码)

这可能吗?有什么提示和技巧吗?

4

3 回答 3

4

我的假设是您可以完全控制您的 php 应用程序/域,但另一个团队正在管理共享点服务器。还假设您可以要求 sharepoint 团队为您的 SSO 功能创建一个简单的 Web 部件。

如果是这种情况,您可以要求 sharepoint 团队创建一个 Web 部件,其中包含指向您网站的链接。当用户单击链接时,请求将返回到共享点服务器,共享点服务器获取用户的登录名,使用您的公钥对其进行加密,并将其添加到您的 php 站点上的 url,然后将其作为重定向发送回到浏览器。所以位置看起来像这样:

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

您的 sso.php 脚本将验证 api_key 是来自您的 sharepoint 合作伙伴的有效令牌,然后解密尝试进入的用户的登录名。您可以更花哨,并在 sharepoint 站点上进行回调以确认登录请求在某个时间窗口内是合法的,或者将其烘焙到加密的登录名中,但这是一种简单的方法,假设您信任来自共享点合作伙伴的请求。

sharepoint .net 开发人员可能能够进行您想要的任何加密,因此请选择一种您可以在 php 和 .net 端使用的算法,并为他们提供用于加密的密钥,以及要加密的信息格式。类似 n=logon_name;expire=timestamp; 那么当你解密时,如果它是在过期时间之后,那么你拒绝登录。

于 2008-10-28T15:20:46.127 回答
1

我对这个领域了解不多,但希望这可能有助于为您指明正确的方向。

调查 LDAP...

您可以设置 PHP 以使用 LDAP 凭据。如果您的 SharePoint 站点使用 Active Directory,那么您可以将此目录公开为 LDAP 源并在 PHP 应用程序中使用它。

自动登录...

在每个站点之间自动登录是完全不同的事情。例如,我已经登录到 MOSS,单击指向 PHP 应用程序的链接,发现我也已经登录了那里。为此,您需要使用 Kerberos 密钥/身份验证之类的东西进行调查。这是一个混乱而困难的领域。

于 2008-10-28T11:07:50.710 回答
0

好吧,我们一直处于同样的情况,但是我们将 asp.net 与 php 结合使用进行 SSO。asp.net 代码执行 windows 身份验证,并在 mysql 数据库中创建一条记录,其中包含用户名和唯一键,并将这些值分配给 cookie。然后,将用户重定向到 PHP 应用程序。

php 应用程序读取这些 cookie 值并将它们与数据库值进行比较,以确保请求是真实的。这就是在 PHP 中进行单点登录并与 PHP 一起使用共享点的解决方法。但我仍然建议在 php 中使用 Kerb_auth_mod 进行 SSO。我们最终做到了。

于 2009-09-24T06:31:27.900 回答