如何使用SharePoint Online对PHP应用程序进行身份验证?

Ber*_*rge 8 php authentication sharepoint single-sign-on office365

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

注意:显然,我们的应用程序不在与SharePoint相同的域/前提下托管

我找不到关于它的文章,所以任何指针都会受到欢迎!

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

提前致谢 !

Vad*_*hev 5

SharePoint Online(SPO)使用基于声明的身份验证.

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

在此输入图像描述

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

脚步:

  1. 发送SAML请求到STS
  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";
}
Run Code Online (Sandbox Code Playgroud)

以下示例演示如何对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);

?>
Run Code Online (Sandbox Code Playgroud)

参考

适用于PHP的SharePoint Online客户端