public OAuth2TokenResponse GetAccessTokenForPartner(PartnerApiFeature feature) { WebClient client = new WebClient(); client.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); var request = new OAuth2TokenRequest(ConsumerKey, ConsumerSecret, CallbackUrl, OAuth2TokenRequest.GrantTypeClientCredentials) { Client_Credential_Type= "special_feature" }; request.Client_Credential_Extra.Add("feature", feature.ToString()); var result = client.UploadString(TokenEndpoint, request.ToString()); return Newtonsoft.Json.JsonConvert.DeserializeObject<OAuth2TokenResponse>(result); }
public OAuth2TokenResponse GetAccessTokenForMembership(string membershipCode,string membershipRefernece) { WebClient client = new WebClient(); client.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); var request = new OAuth2TokenRequest(ConsumerKey, ConsumerSecret, CallbackUrl, OAuth2TokenRequest.GrantTypeClientCredentials) { Client_Credential_Type = "membership_authentication" }; request.Client_Credential_Extra.Add("membership_code", membershipCode); request.Client_Credential_Extra.Add("membership_reference", membershipRefernece); var result = client.UploadString(TokenEndpoint, request.ToString()); return Newtonsoft.Json.JsonConvert.DeserializeObject<OAuth2TokenResponse>(result); }
public Task <OAuth2TokenResponse> RefreshAuthorizationAsync(string service, string refreshToken) { var options = _options.OAuth2Options[service]; var content = new OAuth2TokenRequest { GrantType = "refresh_token", RefreshToken = refreshToken, ClientId = options.ClientId, ClientSecret = options.ClientSecret }; return(PostAsync <OAuth2TokenResponse>(options.TokenUrl, content)); }
public Task <OAuth2TokenResponse> GetAuthorizationAsync(string service, string code) { var options = _options.OAuth2Options[service]; var content = new OAuth2TokenRequest { GrantType = "authorization_code", Code = code, RedirectUri = options.RedirectUrl, ClientId = options.ClientId, ClientSecret = options.ClientSecret }; return(PostAsync <OAuth2TokenResponse>(options.TokenUrl, content)); }
public OAuth2TokenResponse GetAccessTokenForInvitee(string firstname,string lastname,string email,params string[] scopes) { WebClient client = new WebClient(); client.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); var request = new OAuth2TokenRequest(ConsumerKey, ConsumerSecret, CallbackUrl, OAuth2TokenRequest.GrantTypeClientCredentials) { Client_Credential_Type = "user_profile", Scope = string.Join(" ", scopes) }; request.Client_Credential_Extra.Add("firstname", firstname); request.Client_Credential_Extra.Add("lastname", lastname); request.Client_Credential_Extra.Add("email", email); var result = client.UploadString(TokenEndpoint, request.ToString()); return Newtonsoft.Json.JsonConvert.DeserializeObject<OAuth2TokenResponse>(result); }
public OAuth2TokenResponse GetClientAccessToken(string clientCredentialType, Dictionary<string,string> extraData, params string[] scopes) { WebClient client = new WebClient(); client.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); var request = new OAuth2TokenRequest(ConsumerKey, ConsumerSecret, CallbackUrl, OAuth2TokenRequest.GrantTypeClientCredentials) { Client_Credential_Type = clientCredentialType, Scope = string.Join(" ", scopes) }; foreach (var key in extraData.Keys) { request.Client_Credential_Extra.Add(key, extraData[key]); } var result = client.UploadString(TokenEndpoint, request.ToString()); return Newtonsoft.Json.JsonConvert.DeserializeObject<OAuth2TokenResponse>(result); }
/// <summary> /// Get access token /// </summary> /// <param name="code"></param> /// <returns></returns> public OAuth2TokenResponse GetToken(string code) { WebClient client = new WebClient(); client.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); var request = new OAuth2TokenRequest(ConsumerKey, ConsumerSecret, CallbackUrl, OAuth2TokenRequest.GrantTypeAuthorizationCode) { Code = code.Trim() }.ToString(); var result = client.UploadString(TokenEndpoint, request); return Newtonsoft.Json.JsonConvert.DeserializeObject<OAuth2TokenResponse>(result); }
public async ValueTask <IdentityModel> LoginCallback(IdentityHttpRequest request) { var callbackBinding = OAuth2Binding.GetBindingForRequest(request, BindingDirection.Response); var callbackDocument = new OAuth2LoginResponse(callbackBinding); var callbackServiceProvider = callbackDocument.ServiceProvider; var code = callbackDocument.AccessCode; if (code == null) { return(null); } if (serviceProvider != callbackServiceProvider) { throw new IdentityProviderException("Service Providers do not match", $"Received: {serviceProvider}, Expected: {callbackServiceProvider}"); } //Get Token-------------------- var requestTokenDocument = new OAuth2TokenRequest(serviceProvider, code); var requestTokenBinding = OAuth2Binding.GetBindingForDocument(requestTokenDocument, BindingType.Query); var requestTokenAction = requestTokenBinding.GetResponse(tokenUrl); var requestToken = WebRequest.Create(requestTokenAction.RedirectUrl); var responseToken = await requestToken.GetResponseAsync(); var responseTokenBinding = OAuth2Binding.GetBindingForResponse(responseToken, BindingDirection.Response); var responseTokenDocument = new OAuth2TokenResponse(responseTokenBinding); //Get Identity--------------- var requestIdentityDocument = new OAuth2IdentityRequest(serviceProvider, responseTokenDocument.Token); var requestIdentityBinding = OAuth2Binding.GetBindingForDocument(requestIdentityDocument, BindingType.Query); var requestIdentityAction = requestIdentityBinding.GetResponse(identityUrl); var requestIdentity = WebRequest.Create(requestIdentityAction.RedirectUrl); var responseIdentity = await requestIdentity.GetResponseAsync(); var responseIdentityBinding = OAuth2Binding.GetBindingForResponse(responseIdentity, BindingDirection.Response); var responseIdentityDocument = new OAuth2IdentityResponse(responseIdentityBinding); if (responseIdentityDocument.ServiceProvider != serviceProvider) { return(null); } if (String.IsNullOrWhiteSpace(responseIdentityDocument.UserID)) { return(null); } var identity = new IdentityModel() { UserID = responseIdentityDocument.UserID, UserName = responseIdentityDocument.UserName, Name = responseIdentityDocument.UserName, ServiceProvider = responseIdentityDocument.ServiceProvider, Roles = responseIdentityDocument.Roles, OtherClaims = null, State = null, AccessToken = responseTokenDocument.Token }; return(identity); }