Czy możliwe jest określenie poświadczeń serwera proxy w sieci.config?

Muszę skonfigurować stronę internetową, aby uzyskać dostęp do usługi webservice na innym komputerze, przez proxy. Mogę skonfigurować witrynę tak, aby używała proxy, ale nie mogę znaleźć sposobu na określenie poświadczeń, których proxy wymaga, czy to możliwe? Oto moja obecna konfiguracja:

<defaultProxy useDefaultCredentials="false">
    <proxy usesystemdefault="true" proxyaddress="<proxy address>" bypassonlocal="true" />
</defaultProxy>

Wiem, że możesz to zrobić za pomocą kodu, ale oprogramowanie, które działa na stronie, to zamknięty CMS, więc nie mogę tego zrobić.

Czy jest jakiś sposób, aby to zrobić? MSDN mi nie pomaga..
Author: spmason, 2008-10-09

4 answers

Tak, możliwe jest podanie własnych danych uwierzytelniających bez modyfikowania bieżącego kodu. Wymaga to jednak małego kawałka kodu z twojej strony.

Utwórz Asembly o nazwie SomeAssembly.dll z tą klasą:

namespace SomeNameSpace
{
    public class MyProxy : IWebProxy
    {
        public ICredentials Credentials
        {
            get { return new NetworkCredential("user", "password"); }
            //or get { return new NetworkCredential("user", "password","domain"); }
            set { }
        }

        public Uri GetProxy(Uri destination)
        {
            return new Uri("http://my.proxy:8080");
        }

        public bool IsBypassed(Uri host)
        {
            return false;
        }
    }
}

Dodaj to do pliku konfiguracyjnego:

<defaultProxy enabled="true" useDefaultCredentials="false">
  <module type = "SomeNameSpace.MyProxy, SomeAssembly" />
</defaultProxy>

To "wstrzykuje" nowy serwer proxy na liście, a ponieważ nie ma domyślnych poświadczeń, Klasa WebRequest wywoła Twój kod jako pierwsza i zażąda twoich własnych poświadczeń. Będziesz musiał umieścić zmontuj SomeAssembly w katalogu bin swojej aplikacji CMS.

Jest to w jakiś sposób statyczny kod i aby uzyskać wszystkie ciągi znaków, takie jak użytkownik, hasło i adres URL, możesz albo zaimplementować własną konfigurację , albo dodać kilka informacji w AppSettings, co jest o wiele łatwiejsze.

 104
Author: Jérôme Laban,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-03 13:22:37

Chociaż nie znalazłem dobrego sposobu, aby określić poświadczenia sieci proxy w Internecie.config, może się okazać, że nadal możesz używać niekodującego rozwiązania, włączając to do swojej sieci.config:

  <system.net>
    <defaultProxy useDefaultCredentials="true">
      <proxy proxyaddress="proxyAddress" usesystemdefault="True"/>
    </defaultProxy>
  </system.net>

Kluczowym elementem tego procesu jest zmiana ustawień usług IIS, aby konto, które uruchamia proces, miało dostęp do serwera proxy. Jeśli twój proces działa pod LocalService lub NetworkService, to prawdopodobnie nie zadziała. Są szanse, że będziesz chciał domeny konto.

 20
Author: Scott Ferguson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-17 23:03:13

Możesz określić poświadczenia, dodając nowy ogólny poświadczenie serwera proxy w Menedżerze poświadczeń systemu Windows:

1 W Sieci.config

<system.net>    
<defaultProxy enabled="true" useDefaultCredentials="true">      
<proxy usesystemdefault="True" />      
</defaultProxy>    
</system.net>
  1. W Credential Manager > > Dodaj ogólny Credential

Internet lub adres sieciowy: Twój adres proxy
Nazwa użytkownika: Twoja nazwa użytkownika
Hasło: zdasz

Ta konfiguracja zadziałała dla mnie, bez zmiany kodu.

 8
Author: Silas Humberto Souza,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-26 21:28:11

Usługi katalogowe / wyszukiwanie LDAP mogą być używane do tego celu. Wiąże się to z pewnymi zmianami na poziomie infrastruktury, ale większość środowisk produkcyjnych ma taki przepis

 1
Author: questzen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-09 11:38:39