9

我们有需要身份验证的 PHP 应用程序,对于运行 SharePoint 的客户,我们希望提供某种 SSO 服务,以便用户可以使用他们的 SharePoint 凭据(我们对 Google Apps、CAS、.. .)

注意:显然,我们的应用程序没有托管在与 SharePoint 相同的域/场所

我找不到关于它的文献,所以欢迎任何指针!

注意:我们希望实现适当的层级身份验证机制,以便用户可以通过键入 URL 直接登录我们的应用程序,并选择使用 SharePoint 登录,就像您使用 OAuth 等一样......

提前致谢 !

4

2 回答 2

6

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

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

在此处输入图像描述

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

脚步:

  1. 向 STS 发送 SAML 请求
  2. 接收 SAML 响应
  3. 将安全令牌发送到 SharePoint Online
  4. 接收认证cookies
  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 客户端

于 2014-09-02T16:56:07.240 回答
1

不确定您是否仍需要这方面的帮助 - Sharepoint 通常设置为与 Active Directory (AD/LDAP) 同步。因此,如果您的用户使用 sharepoint 并且正在通过他们的 Active Directory 登录在他们的公司内部进行身份验证,那么您可能想要查看的是针对 LDAP 验证您的应用程序(并使用电子邮件地址或域 ID 作为用户名)

这里有更多信息: Authenticating in PHP using LDAP through Active Directory

于 2013-08-09T19:08:47.000 回答