如何为SharePoint站点配置REST API及身份验证?
一、默认配置与API公开性
- SharePoint用于文件、文件夹操作的REST API(如
/_api/web/GetFolderByServerRelativeUrl(...)、/_api/web/GetFileByServerRelativeUrl(...)这类接口)默认启用,但并非公开可访问——它始终要求身份验证,匿名访问默认处于关闭状态。 - 除非站点特意开启匿名访问,否则外部客户端必须通过合法身份验证才能调用,不存在“默认公开”的情况。
二、身份验证配置与调用示例
SharePoint REST API支持多种身份验证方案,不同场景适配不同方式,以下是实操中最常用的两种:
1. 企业内部域环境(Windows集成认证)
如果是域内客户端调用,直接使用Windows集成认证即可,无需额外配置站点,PowerShell示例:
$siteUrl = "https://你的SharePoint站点地址" $folderApiUrl = "$siteUrl/_api/web/GetFolderByServerRelativeUrl('/Shared Documents')" $response = Invoke-RestMethod -Uri $folderApiUrl -UseDefaultCredentials -Method Get -Headers @{Accept = "application/json;odata=verbose"} Write-Output $response.d.Name
2. SharePoint Online云环境(Azure AD OAuth2认证)
需先在Azure AD注册应用(也可在SharePoint管理中心的“应用程序”板块注册),配置对应权限(如Sites.ReadWrite.All或特定站点权限),获取客户端ID、客户端密钥(或证书),Python调用示例:
import requests import json tenant_id = "你的租户ID" client_id = "你的客户端ID" client_secret = "你的客户端密钥" site_url = "https://你的租户.sharepoint.com/sites/你的站点" token_url = f"https://accounts.accesscontrol.windows.net/{tenant_id}/tokens/OAuth/2" # 获取访问令牌 token_payload = { "grant_type": "client_credentials", "client_id": f"{client_id}@{tenant_id}", "client_secret": client_secret, "resource": f"00000003-0000-0ff1-ce00-000000000000/{site_url.split('.')[0].split('//')[1]}@{tenant_id}" } token_response = requests.post(token_url, data=token_payload) access_token = token_response.json()["access_token"] # 调用文件夹查询API api_url = f"{site_url}/_api/web/GetFolderByServerRelativeUrl('/Shared Documents')" headers = { "Authorization": f"Bearer {access_token}", "Accept": "application/json;odata=verbose" } response = requests.get(api_url, headers=headers) print(json.dumps(response.json(), indent=2))
三、额外配置场景
- 若要让外部非域用户调用,需在Azure AD配置应用权限,或给外部用户分配站点对应权限(如访客权限),同时确保API调用的权限范围匹配。
- 如需限制API访问,可在SharePoint站点的“网站权限”中设置用户/组权限,或在Azure AD应用内配置条件访问策略。
内容的提问来源于stack exchange,提问作者Keshari Suwal
相关产品推荐
相关产品推荐

