2008-10-28 88 views

回答

4

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

如果是这种情况,您可以要求sharepoint团队创建一个带有指向您网站链接的web部件。当用户点击链接时,请求返回到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.net开发人员可能会做任何你想要的加密,所以选择一个你可以在php和.net端使用的算法,并给他们使用加密的密钥,以及信息的格式加密。像n = logon_name; expire = timestamp;那么当你解密的时候,如果它是在到期时间之后,那么你拒绝登录。

+0

听起来不错。我将在接下来的几天内给出这个答案。谢谢! – ciscocert 2008-10-28 20:17:53

1

我对这方面不太了解,但希望这可能有助于您指引正确的方向。

调查LDAP ...

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

自动登录...

具有标志在每个站点之间自动发生的是一个非常不同的事情。例如我已经登录到MOSS,点击一个链接到PHP应用程序,并发现我已经登录了。为此,您需要使用Kerberos密钥/身份验证等方式进行调查。这是一个混乱和困难的地区。

+0

您能否详细解释LDAP方法?我设法从PHP连接到LDAP,但从这一点上我迷路了 – bloomingsmilez 2015-05-06 09:04:36

0

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

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