IIS服务器中禁止图形身份验证403

时间:2019-07-04 02:04:56

标签: wcf iis-7 microsoft-graph azure-ad-graph-api

我创建了一个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中的代码问题还是配置问题?

0 个答案:

没有答案