Ho un servizio ASMX di base che sto cercando di eseguire (preferisco usare WCF ma non riesco a far funzionare il server). Funziona bene in una configurazione di sicurezza ma non appena accendo la sicurezza ottengo:Sicurezza nome utente e password ASMX
La richiesta HTTP non è autorizzata con lo schema di autenticazione del client 'Anonimo'. L'intestazione di autenticazione ricevuta dal server era "Realm di base =" Area protetta "".
Quello che voglio è un minimalista chiedere all'utente per un nome e una password soluzione tipo.
Puntare il codice con intellisense non crea nulla di ciò di cui ho bisogno.
This sembra che potrebbe essere utile ma sembra essere WCF, quindi chi lo sa.
Ho appena realizzato che posso fare di questo un demo live:
qui è il servizio: http://smplsite.com/sandbox3/Service1.asmx
il nome utente è testapp
e la password è testpw
. Ho bisogno di una app a linea di comando che chiama funzioni su quel servizio.
Befor ho aggiunto la sicurezza, questa linea ha lavorato in un progetto di base VS dopo l'esecuzione Add Web Service Reference
su quel URL
new ServiceReference1.Service1SoapClient().HelloMom("Bob");
Questo è il mio tentativo in corso (che non funziona)
class Program
{
private static bool customValidation(object s, X509Certificate c, X509Chain ch, SslPolicyErrors e)
{ return true }
static void Main(string[] args)
{
// accept anything
ServicePointManager.ServerCertificateValidationCallback +=
new RemoteCertificateValidationCallback(customValidation);
var binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport);
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
binding.Security.Transport.Realm = "Secured area";
// the generated Web Service Reference class
var client = new ServiceReference1.Service1SoapClient(
binding,
new EndpointAddress("https://smplsite.com/sandbox3/Service1.asmx")
);
client.ClientCredentials.UserName.UserName = "testapp";
client.ClientCredentials.UserName.Password = "testpw";
Console.WriteLine(client.HelloMom("Bob"));
}
}
Modifica: BTW questo non è un sito Web o in esecuzione nel browser, il codice di accesso è un C# command line app. Inoltre, l'autenticazione viene eseguita da un altro plug-in IIS che non controllo.
Modifica 2: Per essere chiari; la soluzione che sto cercando è una questione puramente client side.
Modifica 3: il controllo di accesso è tramite un tipo di sistema .haccess
e mi piace in questo modo. Non voglio che il codice di servizio esegua alcuna autenticazione.
Dopo aver letto la modifica, non sono sicuro che la mia soluzione sarà d'aiuto, perché l'altro plug-in IIS esegue l'autenticazione. Lascerò lì nel caso accenda una scintilla ... – Moose
Ho modificato la mia risposta. Non so se questo sarà d'aiuto, ma è un altro tentativo ... – Moose
puoi arrivare al tuo servizio web usando un browser e guardare cosa gli viene inviato usando il violinista? Quindi è possibile tentare di duplicare l'autenticazione utilizzata dal browser. Altrimenti, sono fuori dalle idee. – Moose