Take the 2-minute tour ×
SharePoint Stack Exchange is a question and answer site for SharePoint enthusiasts. It's 100% free, no registration required.

Am using Map Network Drive in Windows Explorer to add a Sharepoint folder. This link is valid for the lifetime of the security token that Sharepoint returns (say 10 hours). When the token expires, the only way to access the mapped drive is by re-logging on to Sharepoint online from the browser.

Is it possible to programmatically refresh the token pre or post expiration using cached credentials that avoids this re-logon step, say through a console app that can be run manually or scheduled? I have come across several samples that login to SPO by supplying a username and password, but this won't work in my case because SPO is configured to use windows authentication via ADFS. I have also come across samples that modify the global.asax to refresh the token, but not sure if this will work in my case either, because the SP installation is in the cloud and I don't know if I can modify global.asax in this case.

share|improve this question
add comment

1 Answer

Please take a look at this thread: Mounted Office 365 sharepoint workspaces lose connectivity - how to fix?

I proposed an answer using PowerShell but the original poster has not had a chance to implement it. Basically it is a PowerShell script that logs into the site and then accesses a web page. Please let me know if this works I am very curious about this.

Here is some code adapted for your case:

$request = [System.Net.WebRequest]::Create("http://portal.domain.com/");

$request.set_PreAuthenticate($true);
$credCache = [System.Net.CredentialCache]::DefaultCredentials;
$request.Credentials = $credCache;

$response = $request.GetResponse();
$requestStream = $response.GetResponseStream();
$readStream = new-object System.IO.StreamReader $requestStream
$data = $readStream.ReadToEnd()
$data
$readStream.Close()
$response.Close()
share|improve this answer
    
Any idea what proxy server is giving the 407 error? Is it same to assume it is on your network? –  Robert Kaucher Apr 2 '12 at 20:08
    
Robert, I tried using your code and ran into: "(407) Proxy Authentication Required." I then added the following lines: ` $request.Proxy = [System.Net.WebRequest].DefaultWebProxy; request.Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials;` but got: "Property 'Credentials' cannot be found on this object; make sure it exists and is settable. " I then converted the script to a C# program. Now, I get a Unhandled Exception: System.Net.WebException: The remote server returned an error: (403) Forbidden. –  cs31415 Apr 2 '12 at 20:21
    
Yes, it is a proxy on our intranet. –  cs31415 Apr 2 '12 at 20:24
    
The 'Credentials' error was a goof-up on my part. This code now also produces the 403 error: $request.Proxy = [System.Net.WebRequest]::DefaultWebProxy; $request.Proxy.Credentials = $credCache; –  cs31415 Apr 2 '12 at 20:41
    
Found this link which fixed the 403 error: razirais.wordpress.com/2011/05/19/… but now getting back a page with message "Microsoft Online Services requires JavaScript to sign in. This web browser either does not support JavaScript, or scripts are being b locked." –  cs31415 Apr 2 '12 at 21:40
show 7 more comments

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.