我了解如何使用交互式身份验证来访问Sharepoint REST API,即让计算机上的用户在Web应用中键入用户名/密码。有没有办法让命令行应用程序访问API?例如连接并查询Sharepoint列表而无需用户干预?
我已经在租户中注册了本机客户端,并且具有AppId(无应用程序密码),但是所有API调用均返回for (int i= 0;i<10; i++){
String a = "abc";
}
。我也尝试通过Graph API访问,但得到401 Unauthorized
。这两个都使用了租户注册的Web应用程序的初始client_credentials流中的access_token,我希望它会起作用。
由于流需要客户端密钥,因此似乎无法仅使用AppId来获取access_token。
This说:
这种类型的权限需要管理员同意,也不需要 适用于本机客户端应用程序
似乎没有意义,因为它需要管理员权限才能执行无法执行的操作。如果本机客户端无法访问API,则不清楚它们的用途。也许上面提到的是Web应用程序,而不是本机客户端,即管理员可以允许Web应用程序使用access_token进行连接而无需用户上下文。
答案 0 :(得分:0)
关于从SharePoint(使用SharePoint REST API)获取令牌,请参阅我对本文的回答:https://stackoverflow.com/a/52582017/6445723
其机制基本相同,您从应用程序中执行那里描述的POST请求,并在FormDigestValue属性中获得答案。此后,将其放入X-RequestDigest HTTP标头即可在所有API调用中使用此值。
AFAIK对本机客户端或其他Web应用程序的身份验证机制没有区别。一些库(例如SharePoint PnPJS)可以抽象出上面的REST调用,但是它们做的差不多。
答案 1 :(得分:-2)
您需要启用基本身份验证凭据,该凭据在身份验证提供程序中以明文形式发送。转到管理中心>>安全>>安全身份验证提供程序>>在右侧下拉列表中,选择应用程序,然后单击默认值
声明身份验证类型中的基本身份验证