如何为 PHP 应用程序验证 SharePoint Online?

11
我们有一个需要身份验证的PHP应用程序,针对运行SharePoint的客户端,我们想提供某种SSO服务,以便用户可以使用他们的SharePoint凭据(我们曾经使用过类似Google Apps、CAS等的解决方案)。
注意:显然,我们的应用程序不托管在与SharePoint相同的域/场所上。
我找不到相关的文献,所以任何指导都将不胜感激!
注:我们希望实现一个适当的分层身份验证机制,以便用户可以直接通过输入URL登录我们的应用程序,并选择使用SharePoint进行登录,就像使用OAuth等一样...
提前致谢!

不完全是重复的,但非常接近 - http://stackoverflow.com/questions/11973397/authenticating-claims-to-sharepoint-office356-through-php-and-soap - Ryan
你能解决你的问题吗? - haifacarina
1
如果他们使用Sharepoint,可以假定他们使用Active Directory进行身份验证吗?与其通过SSO进行认证,您可以通过LDAP进行认证。用户/密码至少是相同的 :) http://adldap.sourceforge.net/ - lukeocodes
2个回答

7

SharePoint Online (SPO)支持基于声明的身份验证。

下图演示了在SPO中如何执行身份验证:

enter image description here

根据此篇文章,身份验证过程包括以下步骤:

步骤:

  1. 向STS发送SAML请求
  2. 接收SAML响应
  3. 将安全令牌发送到SharePoint Online
  4. 接收身份验证cookie
  5. 发送包括身份验证cookie的请求

phpSPO - PHP的SharePoint客户端支持SPO身份验证。

该库为PHP应用程序提供了一个SharePoint Online (SPO)客户端。它允许您使用基于SharePoint 2013 REST/OData的API对SharePoint数据执行CRUD操作。

示例

如何在SharePoint Online (SPO)中执行身份验证:

try {
    $client = new SPOClient($url);
    $client->signIn($username,$password);
    echo 'You have authenticated successfully\n';
}
catch (Exception $e) {
    echo 'Authentication failed: ',  $e->getMessage(), "\n";
}

下面的示例演示了如何对SharePoint列表数据执行CRUD操作:
<?php
 
require_once 'SPOClient.php';
 
$username = 'username@tenant.onmicrosoft.com';
$password = 'password';
$url = "https://tenant.sharepoint.com/";
 
$client = new SPOClient($url);
$client->signIn($username,$password);
 
//Get Tasks list
$listTitle = 'Tasks';
$list = $client->getList($listTitle);
    
//Create a Task item
$itemProperties = array('Title' => 'Order Approval', 'Body' => 'Order approval task');
$taskItem = $list->addItem($itemProperties);
print "Task '{$taskItem->Title}' has been created succesfully.\r\n";
 
$itemId = $taskItem->Id;
//Update a Task item
$itemProperties = array('PercentComplete' => 1);
$list->updateItem($itemId,$itemProperties);
 
//Delete a Task item
$list->deleteItem($itemId);
 
?>

参考资料

PHP的SharePoint Online客户端


1
谢谢Vadim,我们最终使用SimpleSAML完成了这个任务,但实际上思路是一样的! - Bertrand Gorge

1
如果您仍需要帮助-Sharepoint通常设置与Active Directory(AD / LDAP)同步。因此,如果您的用户使用sharepoint并且通过其Active directory登录在公司内部进行身份验证,那么您可能希望查看针对LDAP的应用程序进行身份验证(并使用电子邮件地址或域ID作为用户名)。
以下是更多信息: 在PHP中使用Active Directory通过LDAP进行身份验证

谢谢,虽然我们的客户通常不会在其网络之外打开他们的LDAP帐户。最常使用SAML。 - Bertrand Gorge

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接