使用仅应用程序访问令牌,访问令牌(jwt)如下所示
...
"aud": "https://{tenant}-my.sharepoint.com/",
...
"roles": [
"User.Read.All",
"TermStore.Read.All",
"Sites.Read.All"
],
...
然后使用curl
curl -H "Content-Type: application/x-www-form-urlencoded" -H "Authorization:Bearer {access_token}" 'https://{tenant}-my.sharepoint.com/_api/v2.0/drives/{upn}/root'
退换商品
"Unsupported app only token."
如果使用用户登录访问令牌,它可以正常工作。
此外,我不能使用“https://graph.microsoft.com/v1.0/drives/{upn}/root/,因为API是“https://{tenant}-my”的子集。sharepoint。com/U api/v2.0/”。
应用程序应该如何访问令牌读取OneDrive?
此外,Azure的Web应用程序中“应用程序权限”和“委托权限”的“所需权限”对于“Office 365 SharePoint Online”是不同的,因为“应用程序权限”没有“文件读取”。此权限重要吗?
“OneDrive Business”API需要appidacr
值为2的令牌。
0=公共客户端
1=由其id和机密标识的客户端
2=由其证书标识的客户端
注释中提到的值为1,表示使用了id/secret而不是证书。要为应用程序设置证书,请按照以下说明操作,然后可以使用以下代码获取令牌:
var context = new AuthenticationContext(authEndpoint);
X509Certificate2 cert = new X509Certificate2(clientCertificatePfxPath, clientCertificatePfxPassword, X509KeyStorageFlags.MachineKeySet);
ClientAssertionCertificate cac = new ClientAssertionCertificate(ClientId, cert);
var token = context.AcquireToken(audience, cac);
更新1
以下是一个很好的示例,介绍了如何在不使用ADAL的情况下获取令牌:
http://www.cloudidentity.com/blog/2015/02/06/requesting-an-aad-token-with-a-certificate-without-adal/
引用此来源:
岗位https://login.windows.net/contoso.onmicrosoft.com/oauth2/token
HTTP/1.1内容类型:应用程序/x-www-form-urlencoded
客户端请求id:a2ef0cd8-60e5-4620-ac66-6f2a344e075b
返回客户端请求id:true主机:登录。窗户。net
内容长度:986
预期:100继续连接:保持活动
资源=https://contoso.onmicrosoft.com/TodoListService
这里需要注意的主要事项是:1)它是到令牌endpoint的一个POST;2)它是一个client\u凭据授予,正如预期的那样;3)您需要指定魔术值urn:ietf:params:oauth:client断言类型:jwt bearer作为client\u断言类型
另一件感兴趣的事情是client_assertion本身,它是证书实际发挥作用的工件:它是一个断言,您需要创建并使用您注册为应用程序凭据的证书进行签名。ADAL为您做这件事,但是如果您想直接在协议级别工作,您必须自己做。
请点击链接了解有关如何生成用于断言的JWT的详细信息。
更新2:James找到了一个更好的资源-查看此链接以获取有关如何使用Azure AD手动进行证书验证的分步说明。
null null 在我的Alpine Linux安装上有什么建议来解决这个问题吗?
对于hibernate,我在耳边添加了以下jar:hibernate-commons-annotations-4.0.5.final.jar、hibernate-core-4.3.11.final.jar和hibernate-entitymanager-4.3.11.final.jar。 对于seam,我包含了seam jar:jboss-seam.jar、jboss-seam-debug.jar
Windows 64 日食霓虹灯。1. 马文3 java 1.8和java 1.7都已安装 JAVA_HOME点在1.8 jdk PATH=%PATH%;%JAVA_HOME%/bin/ 需要什么吗? 我知道这通常是因为: 项目由Java1.8编译,但由Java1.7(或更低版本)执行。 但是我检查了我的日蚀, Java编译器: 运行配置: 所以你看,我用1.7编译了这个项目,并用1.7运行它。。
我正在编译我的Android项目,但我遇到了这个错误 我在其他文章中读到,试图用Java 8编译可能会导致错误,但不是我的情况,我有以下Java版本: 操作系统:Linux薄荷(我没有安装Java 8。)构建:MAVEN 有谁能帮我一下吗?
在Android P中获取错误时,直接访问此部分:
我想向特定的电子邮件ID发送一些消息。我将设置为地址并尝试发送消息。它在Gmail应用程序中运行良好。但它在邮件应用程序中工作不正常,尤其是在Nexus 7(HTC one V)中。背后的原因是什么? 源代码 更新的代码 Intent emailIntent=new Intent(android.content.Intent.ACTION_SENDTO); emailIntent.setType(