Azure 身份验证问题

问题描述 投票:0回答:1

我尝试通过使用秘密的应用程序注册生成访问令牌来使用 Python 读取 SharePoint 网站。我还授予了该应用程序的读/写访问权限。然而,这个方法失败了。另一方面,当我使用委派权限进行身份验证时,我能够成功访问 SharePoint 网站。为什么我在第一种情况下无法访问 SharePoint 网站?

我尝试使用 deligated 并且我能够阅读 但我想集成客户端秘密以避免登录身份验证。

authentication oauth-2.0 azure-app-registration
1个回答
0
投票

注意:如果您使用客户端凭证流,则需要在 XML 请求中授予应用程序访问该站点的权限。

授予站点.选定的应用程序类型API权限:

enter image description here

导航至

https://TenantDomain.sharepoint.com/sites/SiteName/_layouts/15/appinv.aspx
并创建:

<AppPermissionRequests AllowAppOnlyPolicy="true">
    <AppPermissionRequest Scope="http://sharepoint/content/sitecollection" Right="FullControl" />
</AppPermissionRequests>

enter image description here

enter image description here

使用以下代码访问SharePoint网站:

from azure.identity import ClientSecretCredential
import requests

client_id = 'ClientID'
client_secret = 'Secret'
tenant_id = 'TenantID'
scope = ['https://graph.microsoft.com/.default']

credential = ClientSecretCredential(
    tenant_id=tenant_id,
    client_id=client_id,
    client_secret=client_secret
)

token = credential.get_token(*scope)
access_token = token.token

url = 'https://graph.microsoft.com/v1.0/sites/Tenant.sharepoint.com:/sites/SiteName:/'

headers = {
    'Authorization': f'Bearer {access_token}',
    'Content-Type': 'application/json'
}

response = requests.get(url, headers=headers)

if response.status_code == 200:
    print(response.json())  
else:
    print(f"Error {response.status_code}: {response.text}")

enter image description here

否则使用 PnP PowerShell 将应用程序分配到选定的 SharePoint 站点,请参阅 博客,作者为 Sang Huynh

© www.soinside.com 2019 - 2024. All rights reserved.