diff --git a/Owin.Security.Providers/Salesforce/Provider/SalesforceAuthenticatedContext.cs b/Owin.Security.Providers/Salesforce/Provider/SalesforceAuthenticatedContext.cs
index b4784c6..9473062 100644
--- a/Owin.Security.Providers/Salesforce/Provider/SalesforceAuthenticatedContext.cs
+++ b/Owin.Security.Providers/Salesforce/Provider/SalesforceAuthenticatedContext.cs
@@ -20,12 +20,14 @@ namespace Owin.Security.Providers.Salesforce
/// The JSON-serialized user
/// Salesforce Access token
/// Salesforce Refresh token
- public SalesforceAuthenticatedContext(IOwinContext context, JObject user, string accessToken, string refreshToken)
+ /// Salesforce instance url
+ public SalesforceAuthenticatedContext(IOwinContext context, JObject user, string accessToken, string refreshToken, string instanceUrl)
: base(context)
{
User = user;
AccessToken = accessToken;
RefreshToken = refreshToken;
+ InstanceUrl = instanceUrl;
Id = TryGetValue(user, "id");
UserId = TryGetValue(user, "user_id");
@@ -59,6 +61,11 @@ namespace Owin.Security.Providers.Salesforce
///
public string RefreshToken { get; private set; }
+ ///
+ /// Gets the Salesforce instance url
+ ///
+ public string InstanceUrl { get; private set; }
+
///
/// Gets the Salesforce ID / User Info Endpoint
///
diff --git a/Owin.Security.Providers/Salesforce/SalesforceAuthenticationHandler.cs b/Owin.Security.Providers/Salesforce/SalesforceAuthenticationHandler.cs
index f0f726e..3296568 100644
--- a/Owin.Security.Providers/Salesforce/SalesforceAuthenticationHandler.cs
+++ b/Owin.Security.Providers/Salesforce/SalesforceAuthenticationHandler.cs
@@ -86,6 +86,7 @@ namespace Owin.Security.Providers.Salesforce
dynamic response = JsonConvert.DeserializeObject(text);
string accessToken = (string)response.access_token;
string refreshToken = (string)response.refresh_token;
+ string instanceUrl = (string)response.instance_url;
// Get the Salesforce user using the user info endpoint, which is part of the token - response.id
HttpRequestMessage userRequest = new HttpRequestMessage(HttpMethod.Get, (string)response.id + "?access_token=" + Uri.EscapeDataString(accessToken));
@@ -95,7 +96,7 @@ namespace Owin.Security.Providers.Salesforce
text = await userResponse.Content.ReadAsStringAsync();
JObject user = JObject.Parse(text);
- var context = new SalesforceAuthenticatedContext(Context, user, accessToken, refreshToken);
+ var context = new SalesforceAuthenticatedContext(Context, user, accessToken, refreshToken, instanceUrl);
context.Identity = new ClaimsIdentity(
Options.AuthenticationType,
ClaimsIdentity.DefaultNameClaimType,