2015-03-03 136 views
1

我跟着博客开发读取用户的电子邮件应用程序,而无需他们签署:http://blogs.msdn.com/b/exchangedev/archive/2015/01/21/building-demon-or-service-apps-with-office-365-mail-calendar-and-contacts-apis-oauth2-client-credential-flow.aspx?CommentPosted=true#commentmessage无法检索应用程序令牌只适用于Office 365

我得到的ID令牌,并得到了租户ID。当我尝试获取访问令牌时,它会抛出一个错误:

{"error":"invalid_client","error_description":"AADSTS70002: Error validating cre 
dentials. AADSTS50012: Client assertion contains an invalid signature.\r\nTrace 
ID: 9646a93b-0094-4736-8d21-aed08f04b06e\r\nCorrelation ID: 8dd562af-556d-4d90-9 
f71-a60f5a232215\r\nTimestamp: 2015-03-03 10:47:25Z","error_codes":[70002,50012] 
,"timestamp":"2015-03-03 10:47:25Z","trace_id":"9646a93b-0094-4736-8d21-aed08f04 
b06e","correlation_id":"8dd562af-556d-4d90-9f71-a60f5a232215","submit_url":null, 
"context":null} 

但我按照说明创建了证书。我没有使用ADAL库。我正在使用go语言。所以我遵循堆栈溢出链接中的步骤:Office 365 Rest API - Daemon week authentication

我使用HMAC base64对其进行了字符串编码并将其编码为URL,然后将其附加到字符串,如上面的文章中所述。这是我的客户断言

eyJhbGciOiJSUzI1NiIsIng1dCI6IjZlLzEra01scHhuTHArZFJ4d1BqS21EdmZCQT0ifQ.eyJhdWQiOiJodHRwczovL2xvZ2luLndpbmRvd3MubmV0L2ZmNjQxNTFmLTIwM2EtNGM0MC1hZDcxLTExOTE2YjY2Yzg3My9vYXV0aDIvdG9rZW4iLCJleHAiOjE0MjU3Mzc2MDEsImlzcyI6Ijk3MjhiOGFiLTVhOGUtNGM0OC05YTZkLTZmMzFjMWYyZTdkYyIsImp0aSI6IjMyMDZiYWI5LTVmYmUtNDA3ZS02OWY2LTJlNGRjNDQ3NzQxYSIsIm5iZiI6MTQyNTc0MjYwMSwic3ViIjoiOTcyOGI4YWItNWE4ZS00YzQ4LTlhNmQtNmYzMWMxZjJlN2RjIn0.pG4okCzcgXZbS067U9BkGWid6Z6ExU7pbPYOlm2mSAg 

我在哪里出错了?

回答

2

该错误表示您的签名有问题。与工作相比,它更短。请确保您使用RSA SHA-256哈希签名字符串。使用HMAC可能会导致此问题。

+0

谢谢贾森它的工作。 – 2015-03-04 06:29:01