我创建了一个WCF服务,该服务使用Graph API对Outlook进行CRUD操作。它在我的本地计算机上正常工作,但是当我将其部署到UAT服务器中时,这部分将禁止使用403:
result = _authContext.AcquireTokenAsync(resourceId,ClientId, uc).Result;
这是我的AD身份验证代码的摘要:
string authority = string.Format(CultureInfo.InvariantCulture, Instance, Tenant);
if(_authContext == null)
{
_authContext = new AuthenticationContext(authority, false, new FileCache(_cacheFile));
}
string resourceId = path to resource id;
try {
result = _authContext.AcquireTokenSilentAsync(resourceId,ClientId).Result;
accessToken = result.AccessToken;
expiresOn = result.ExpiresOn;
} catch( AggregateException exc)
{
if(ex != null && ex.ErrorCode != "failed_to_acquire_token_silently")
{
throw;
}
}
if(accessToken == null || expiresOn <= DateTimeOffset.UtcNow.AddMinutes(5))
{
UserCredential uc = new UserCredential();
uc = new UserCredential("hardcoded username for testing");
result = _authContext.AcquireTokenAsync(resourceId,ClientId, uc).Result;
accessToken = result.AccessToken;
expiresOn = result.ExpiresOn;
}
我已经尝试对UserCredential进行硬编码,并且IIS中的应用程序池帐户具有权限。
在我的web.config中,我添加了以下内容:
<system.net>
<defaultProxy useDefaultCredentials="true">
<proxy bypassonlocal="True" proxyaddress="......" />
</defaultProxy>
</system.net>
我也曾尝试在Glabal.asax的App Start方法中设置WebProxy,但这没有帮助。这是IIS中的代码问题还是配置问题?