我需要连接到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"
}