Аутентификация графов 403 запрещена на сервере IIS - PullRequest
0 голосов
/ 04 июля 2019

Я создал службу WCF, которая выполняет операции CRUD для Outlook, используя Graph API. он работает у меня локально, но когда я развернул его на нашем 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>

Я также пытался настроить WebProxy в методе запуска приложения моего Glabal.asax, но это не помогло. Это проблема с кодом или проблема конфигурации в IIS?

...