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

这可能吗?任何提示和技巧?

有帮助吗?

解决方案

我的假设是你可以完全控制你的php app / domain,但是另一个团队正在管理sharepoint服务器。还假设您可以要求sharepoint团队为您的SSO功能创建一个简单的webpart。

如果是这种情况,您可以要求sharepoint团队创建一个webpart,其中包含指向您网站的链接。当用户单击链接时,请求将返回到sharepoint服务器,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 ...

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

自动登录...

在每个站点之间自动发生登录是一个非常不同的问题。例如我已登录MOSS,点击进入PHP应用程序的链接,发现我已经登录了那里。为此,您需要使用Kerberos密钥/身份验证等方法进行调查。这是一个混乱而困难的地区。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top