针对SharePoint在SharePoint Server上进行CRUD操作的对Azure AD的非交互式身份验证

时间:2018-08-27 12:23:03

标签: rest azure sharepoint

我需要连接到Sharepoint OData来执行某些CRUD操作(来自SAP C4C)。

API端点为https:// {tenant} .sharepoint.com / sites / {Site} / _api / ProjectServer / Projects

我能够使用Grant_type = client_credentials和证书(请参阅https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-client-creds-grant-flow)创建一个JWT的令牌,但是我无法访问ProjectServer / Projects上的数据。错误是这样的:

{
    "error": {
        "code": "-1, System.Web.Services.Protocols.SoapException",
        "message": {
            "lang": "en-US",
            "value": "ProjectServerError(s) LastError=GeneralNotLicensed Instructions: Pass this into PSClientError constructor to access all error information"
        }
    }
}

我认为我需要与用户进行Azure AD身份验证,但是如果没有用户的交互,我找不到一种好的方法。

我尝试了密码授予流(使用服务用户的grant_type = password),但似乎不起作用(令牌端点给我一个错误:“ AADSTS70002:验证凭据出错。AADSTS50126:无效的用户名或密码”) 。

我无法从所使用的平台访问任何Azure连接器,因此我必须手动执行所有操作...

有人有什么主意吗?

谢谢。

编辑:

如果可以的话,我会附上密码授予电话:

URL: https://login.microsoftonline.com/{tenant_GUID}/oauth2/token
Content-Type: application/x-www-form-urlencoded

grant_type=password
scope=openid {clientid} offline_access
resource=https://{tenant}.sharepoint.com
client_id={clientId}
username={user}@hosttenant.com
password=password

响应为:

{
    "error": "invalid_grant",
    "error_description": "AADSTS70002: Error validating credentials. AADSTS50126: Invalid username or password\r\nTrace ID: XXXXXXXXXX\r\nCorrelation ID: XXXXXXXX\r\nTimestamp: 2018-08-27 15:36:50Z",
    "error_codes": [
        70002,
        50126
    ],
    "timestamp": "2018-08-27 15:36:50Z",
    "trace_id": "XXXXXXXXXXXXXX",
    "correlation_id": "XXXXXXXXXXXXXX"
}

0 个答案:

没有答案