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

如何通过SharePoint Online对PHP应用程序进行身份验证?,php,sharepoint,authentication,single-sign-on,office365,Php,Sharepoint,Authentication,Single Sign On,Office365,我们有需要身份验证的PHP应用程序,对于运行SharePoint的客户端,我们希望提供某种SSO服务,以便用户可以使用其SharePoint凭据(我们与Google Apps、CAS等做了类似的事情) 注意:显然,我们的应用程序与SharePoint不在同一个域/premices上 我找不到有关它的资料,所以欢迎任何人指点 注意:我们希望实现一个适当的层身份验证机制,这样用户可以通过键入URL直接登录到我们的应用程序,并选择使用SharePoint登录,就像您使用OAuth之类的工具一样 提前谢

我们有需要身份验证的PHP应用程序,对于运行SharePoint的客户端,我们希望提供某种SSO服务,以便用户可以使用其SharePoint凭据(我们与Google Apps、CAS等做了类似的事情)

注意:显然,我们的应用程序与SharePoint不在同一个域/premices上

我找不到有关它的资料,所以欢迎任何人指点

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


提前谢谢

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

以下是关于这方面的更多信息: SharePoint Online(SPO)支持基于声明的身份验证

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

根据需要,认证过程包括以下步骤:

步骤:

  • 向STS发送SAML请求
  • 接收SAML响应
  • 将安全令牌发送到SharePoint Online
  • 接收验证cookie
  • 发送包括身份验证cookie的请求

  • 支持SPO身份验证

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

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

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

    不完全是重复的-但非常接近-您是否能够解决您的问题?如果他们使用Sharepoint,是否可以假定他们使用Active Directory进行身份验证?您可以通过LDAP进行身份验证,而不是SSO。用户/密码至少是相同的:)谢谢Vadim,我们最终使用SimpleSAML实现了这一点,但想法确实是一样的!谢谢,尽管我们的客户通常不会在他们的网络之外打开他们的LDAP帐户。大多数情况下,用户使用SAML。
    
    <?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);
     
    ?>