I'm writing a windows phone 8 app that authenticates to email using httpwebrequest. For some reason I'm getting an authentication error and I need to look at the traffic.
Is there a way to configure visual studio to see the raw http traffic when I debug from my phone?
For example, can I configure fiddler to look at the traffic?
Are there any tricks to print to console the httpwebrequest?
Nothing with Visual Studio.
You can use Fiddler though. Just connect your device to the same WiFi as your PC, on the device Settings > Wifi > long tap on your network and tap Edit. Turn proxy on and type in your PC IP address and use 8888 as port. Open Fiddler and you are done. Remember to go to FIddler settings and allow the detection for remote devices:
Tools > Fiddler options > Connections > Allow remote computers to connect
Related
Background: I have a web app that is accessed via Chrome on a Windows 10 machine.
I also have a native Win10 application installed on the device. The web app sends data to the Win10 application via a local web service running on the machine in IISExpress.
To allow for HTTPS communication on port 44300, I've created a self-signed certificate via PowerShell:
New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My" -NotAfter (Get-Date).AddMonths(60)
And then imported it to 'Local Computer\Trusted Root Certificates\Certificates'
From within the web app I send a command to the win10 app that looks something like this:
https://localhost:44300/CMTService.svc/JumpToAssignment?Param=Key=418584577
The win10 app is polling for these requests and picks up the message.
Issue:
Different versions of Chrome behave differently with the acceptance of the self-signed certificate. For instance versions 62, 64 and 75 all accept the certificate and allow for communication with the web service. But other versions of Chrome like 76 and 78 block communication. The Security tab in the Chrome DevTools shows https://localhost:44300 as "Unknown / cancelled" and my requests fail with ERR_SSL_CLIENT_AUTH_CERT_NEEDED. Whereas in working versions of Chrome my URL shows under "Secure origins". The only thing that I change is the Chrome version to get these different results.
I've tried enabling the Chrome setting to allow for invalid certs for localhost (chrome://flags/#allow-insecure-localhost). This temporarily works, but then after closing and reopening chrome, my requests start failing again with the same error code.
If I take one of my failing URLs and paste it into a new Chrome tab, suddenly communication with my native app in my web app resumes as normal. But it only works for that session - when I close and reopen Chrome my communication is broken again.
Question:
How do I allow for communication between my Chrome v78 web app and my local native app?
ERR_SSL_CLIENT_AUTH_CERT_NEEDED means the server is asking the browser for a certificate for client authentication.
You've described how you setup server authentication, but not described how you setup client authentication.
Likely you have enabled certificates for client authentication, but have not configured the web app to send the correct client certificate or have not configured the native app to accept the correct client certificate. That's a very open ended topic to be prescriptive without knowing more about your development efforts, but you can confirm if client authentication is enabled by inspecting a packet capture. One description of the handshake is here : https://blogs.technet.microsoft.com/nettracer/2013/12/30/how-it-works-on-the-wire-iis-http-client-certificate-authentication/.
Just an update: I implemented a javascript workaround to get around my communication issues. When first loading the web app, I simply send my first communication to IIS (destined for Win10 native app) in a separate chrome browser tab. For whatever reason this allows for successful acceptance of the certificate and kick starts the communication with IIS. This is my code to send the command in a new tab and then close it:
var inst = window.open(launchWinAppURL);
if (inst != null) {
window.setTimeout(function() {
inst.close();
}, 1000);
}
This is not the most elegant solution, but it seems to work on all chrome versions, so i'm satisfied.
Is the web app only communicating with the one win10 machine? Have you installed the self-signed cert directly to the machine? I would try installing it directly to the machine and see if the later instances of chrome allow communication.
Is there any way to restrict user to stop accessing Web Console or to provide user name & password.
I am using Drill in embedded mode and in window 8.1 operating System.
For Example:-
Drill is running in server, but if someone know my ip address, they can easily access my web console.
So Is there any way to stop accessing my web console. ?
Use a firewall. You can also enable authentication and HTTPS for the Drill web console:
https://drill.apache.org/docs/configuring-user-authentication/
https://drill.apache.org/docs/configuring-web-console-and-rest-api-security/#https-support
i have tsung setup in my remote linux server.(54.54.90.90) no browser here.
i have my windows machine (122.122.130.130) where i browse my web app through firefox. i have changed firefox settings to use SOCKS proxy on port 8090 (http://blog.ashurex.com/2012/03/15/creating-ssh-proxy-tunnel-putty/) to route all traffic from my windows laptop to linux box to the internet rather than from windows laptop to internet.
now i started tsung-recorder which runs by default in 8090, hoping whatever requests i make in my windows laptop will be recorded here. but no session is recorded.
I want to record a tsung-recorder session in my linux machine as i browse in my windows laptop. please help.
Just configure an HTTP proxy on Firefox and point it to the remote server where your tsung-recorder ran using port 8090.
What I'm trying should be basic; but must be missing something. Have couple of SignalR Hubs defined inside an MVC3 app running locally. Same solution has a Windows Phone 8 & a Windows Store app, both talking to the SignalR hubs for real-time communication. SignalR server uses latest bits & clients use latest .NET nuget.
On the client side, this is what I'm used to writing:
IHubProxy SignalRChatHub;
HubConnection chatConnection = new HubConnection("http://localhost:53478/");
SignalRChatHub = chatConnection.CreateHubProxy("ChatHub");
await chatConnection.Start();
if (chatConnection.State == Microsoft.AspNet.SignalR.Client.ConnectionState.Connected)
{
// Stuff here.
}
This works perfectly fine with a Windows 8 app client & we have easy connectivity with the SignalR hub running locally on IIS. However, the same code does not work for a Windows Phone client. The connection.start() bombs out with a 404 exception.
After a little research, it looks like the WP Emulator VM is treated as a different machine and uses the host machine's network virtually. So, IIS may be blocking calls from outside not allowing reach into the SignalR hub from Windows Phone 8 app. Accordingly, I tweak applicationhost.config for the SignalR server app to allow connectivity from outside localhost. So now, the SignalR hub is functional from both localhost and also off the local IP. Also, the routing has been changed to allow cross-domain SignalR connectivity in Global.asax.cs:
RouteTable.Routes.MapHubs(new HubConfiguration() { EnableCrossDomain = true });
The Windows Phone client code is changed to:
HubConnection chatConnection = new HubConnection("http://<LocalIP>:53478/");
But this continues to fail the connection.start() with a "Remote server returned an error: Not Found" exception. I have Fiddler sniffing network traffic from the phone emulator and shows absolutely nothing in response to the connection.start() call.
What am I missing? Any pointers would be helpful .. thanks!
Figured it out myself. Turns out the SignalR connectivity issue from the WPDev emulator was actually due to IIS/Windows security. Little more IIS config & opening local ports through Windows Firewall fixed the problem. Will blog about it; but these two posts helped:
http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj684580.aspx
https://blogs.iis.net/robert_mcmurray/archive/2013/08/20/connecting-the-windows-phone-8-emulator-to-web-api-applications-on-a-local-computer.aspx
Please help me with this.
I want to run my windows phone 8 emulator by enabling Internet connection in both the host machine and the emulator.
When i searched for enabling Internet connection, i have understood that, it needs two dedicated NIC's. One for the host machine and the other one for emulator.
SO, i thought by enabling the Ethernet and wifi connections on my laptop, it will get two separate network adapters, so that i can use one of them for the host machine and the other one for the emulator.
But i dont know how to configure.
Hi i am also having this type of problem and finally i got success.
1.go to control panel and disable Hyper-v just only unchecked all Hyper-V options.
run VMware set up you can download from here.
downloadworkstation
again go to control panel and enable Hyper-V.
4.you run the emulator you have a dialog box click Retry and click Yes
5.run VS and enjoy with internet on emulator.
This works for me:
http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj681694(v=vs.105).aspx
Cannot connect to Internet destinations
The Windows Phone 8 Emulator uses the HTTP proxy settings from the host computer. If you can’t access Internet resources from the emulator, check with your IT administrator to make sure that your proxy settings will work with the emulator.
If your network’s proxy servers are unavailable or malfunctioning, it might be possible to restore connectivity for the emulator by disabling automatic proxy detection on the host computer. However this only works in certain network configurations.
To disable automatic proxy detection on the host computer
1.
On the host computer, open Internet Options from the Control Panel. The Internet Properties dialog box opens.
2.
In the Internet Properties dialog box, click the Connections tab.
3.
On the Connections page, click the LAN settings button. The Local Area Network (LAN) Settings dialog box opens.
4.
In the Local Area Network (LAN) Settings dialog box, deselect all the check boxes. Click OK twice to close both dialog boxes.
5.
Restart the emulator and retry the connection.