gSoap调用Exchange Online EWS API时soap->fpost截断超长Bearer令牌导致访问被拒的问题求助
gSoap调用Exchange Online EWS API时soap->fpost截断超长Bearer令牌导致访问被拒的问题求助
各位大佬好,我目前在使用gSoap对接Exchange Online的EWS API,最近碰到了一个头疼的问题,想请教下大家有没有解决思路:
我通过Azure AD OAuth方式获取的Bearer令牌长度超过了2048字符,但发现soap->fpost会把这个令牌截断——刚好卡在2040字符的位置,直接导致请求返回访问被拒的错误。
我已经尝试过以下操作,但问题依然没有解决:
- 修改
stdsoap2.h中的SOAP_BUFLEN参数为32K - 确认了
soap->buf的实际大小确实是64K,但soap->fpost还是返回失败
下面是脱敏后的相关信息,方便大家排查:
完整的Bearer令牌(部分内容已删除)
eyJ0eXAiOiJKV1QiLCJub25jZSI6InpSMk1VMnFQXzVFV3AtaVNYQ0doR3NzTGNKdVhVVUJTNjlpdGNBNjBXV2siLCJhbGciOiJSUzI1NiIsIng1dCI6Il9qTndqZVNudlRUSzhYRWRyNVFVUGtCUkxMbyIsImtpZCI6Il9qTndqZVNudlRUSzhYRWRyNVFVUGtCUkxMbyJ9.eyJhdWQiOiJodHRwczovL291dGxvb2sub2ZmaWNlLmNvbSIsImlzcyI6Imh0dHBzOi8vc3RzLndpbmRvd3MubmV0L2FhNmM1M2IyLWI2YTUtNDlhNi1iNDY4LWZiZTczMGZmOTU0Yy8iLCJpYXQiOjE3NTI5MTg4NTEsIm5iZiI6MTc1MjkxODg1MSwiZXhwIjoxNzUyOTIyNzUxLCJhaW8iOiJrMlJnWUh 9.CkPN_fC6kxGH-oFex2zTqic6bCv2RyQba2hzsjl10JGngfprIaUY3jB3DfEK5VDL3d7ni_gdmsMjsBrHgCugW22H58wnyKnaBXi-GvBGbR8lNgFPn0Q6wZefwsVL7P1V25v2X4rdsOLh23GiYuycYiuGuWBHaeMgYMDyxx9fQd0U8QQI1IQLN1OJFbxjLOhrmen7qeQKTxGMElBONom1Liyrly275Tpg7uWVbr9_I8ZIHoVSV2y6PdRTwFsniy0kQqEW0OoaTzEDoqCQgWqDO8GU8e9gRNDywGeZKfaH4JDT2IwIhzxsweH7HVg03sQM_MC-RladSvC8rgOb81ce2Q
soap->buf中记录的请求内容(令牌已被截断)
POST /EWS/Exchange.asmx HTTP/1.1 Host: outlook.office365.com User-Agent: gSOAP/2.8E Content-Type: text/xml; charset=utf-8 Content-Length: 1348 X-AnchorMailbox: Adams@M365x70736779.OnMicrosoft.com X-PreferServerAffinity: true client-request-id: 99d33fef-721f-4c13-9820-889146292102 return-client-request-id: true Connection: close Authorization: Bearer eyJ0eXAiOiJKV1QiLCJub25jZSI6InpSMk1VMnFQXzVFV3AtaVNYQ0doR3NzTGNKdVhVVUJTNjlpdGNBNjBXV2siLCJhbGciOiJSUzI1NiIsIng1dCI6Il9qTndqZVNudlRUSzhYRWRyNVFVUGtCUkxMbyIsImtpZCI6Il9qTndqZVNudlRUSzhYRWRyNVFVUGtCUkxMbyJ9.eyJhdWQiOiJodHRwczovL291dGxvb2sub2ZmaWNlLmNvbSIsImlzcyI6Imh0dHBzOi8vc3RzLndpbmRvd3MubmV0L2FhNmM1M2IyLWI2YTUtNDlhNi1iNDY4LWZiZTczMGZmOTU0Yy8iLCJpYXQiOjE3NTI5MTg4NTEsIm5iZiI6MTc1MjkxODg1MSwiZXhwIjoxNzUyOTIyNzUxLCJhaW8iOiJrMlJnWUh <deleted for safety> 9.CkPN_fC6kxGH-oFex2zTqic6bCv2RyQba2hzsjl10JGngfprIaUY3jB3DfEK5VDL3d7ni_gdmsMjsBrHgCugW22H58wnyKnaBXi-GvBGbR8lNgFPn0Q6wZefwsVL7P1V25v2X4rdsOLh23GiYuycYiuGuWBHaeMgYMDyxx9fQd0U8QQI1IQLN1OJFbxjLOhrmen7qeQKTxGMElBONom1Liyrly275Tpg7uWVbr9_I8ZIHoVSV2y6PdRTwFsniy0kQqEW0OoaTzEDoqCQgWqDO8GU8e9gRNDywGeZKfaH4JDT2IwIhzxswe SOAPAction: " http://schemas.microsoft.com/exchange/services/2006/messages/GetFolder "
从上面的请求内容能明显看到,Authorization头里的Bearer令牌被截断,末尾的部分字符丢失了。想请教下大家,除了SOAP_BUFLEN之外,gSoap还有没有其他和缓冲区大小相关的参数需要调整?或者有没有其他方法可以解决这个令牌被截断的问题?
内容来源于stack exchange
相关产品推荐
相关产品推荐

