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);
 }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 4
0
        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);
 }
Exemplo n.º 8
0
        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);
        }