/// <summary> /// Performs the refresh request using the provided refresh token /// </summary> /// <param name="refreshToken"></param> /// <returns></returns> protected async Task <OAuthSession> ExchangeRefreshToken(string refreshToken) { if (string.IsNullOrWhiteSpace(refreshToken)) { throw new ArgumentException("Refresh token cannot be null or empty", "refreshToken"); } BoxRequest boxRequest = new BoxRequest(_config.BoxApiHostUri, Constants.AuthTokenEndpointString) .Method(RequestMethod.Post) .Payload(Constants.RequestParameters.GrantType, Constants.RequestParameters.RefreshToken) .Payload(Constants.RequestParameters.RefreshToken, refreshToken) .Payload(Constants.RequestParameters.ClientId, _config.ClientId) .Payload(Constants.RequestParameters.ClientSecret, _config.ClientSecret) .Payload(Constants.RequestParameters.BoxDeviceId, _config.DeviceId) .Payload(Constants.RequestParameters.BoxDeviceName, _config.DeviceName); IBoxResponse <OAuthSession> boxResponse = await _service.ToResponseAsync <OAuthSession>(boxRequest).ConfigureAwait(false); if (boxResponse.Status == ResponseStatus.Success) { // Parse and return the new session boxResponse.ParseResults(_converter); return(boxResponse.ResponseObject); } // The session has been invalidated, notify subscribers OnSessionInvalidated(); // As well as the caller throw new BoxSessionInvalidatedException() { StatusCode = boxResponse.StatusCode, }; }
/// <summary> /// Get a down scoped token. /// </summary> /// <returns>The down scoped access token.</returns> public string Exchange() { BoxRequest boxRequest = new BoxRequest(new Uri(Constants.BoxApiHostUriString), Constants.AuthTokenEndpointString) .Method(RequestMethod.Post) .Payload(Constants.RequestParameters.SubjectToken, token) .Payload(Constants.RequestParameters.SubjectTokenType, Constants.RequestParameters.AccessTokenTypeValue) .Payload(Constants.RequestParameters.Scope, scope) .Payload(Constants.RequestParameters.Resource, resourceUrl) .Payload(Constants.RequestParameters.GrantType, Constants.RequestParameters.TokenExchangeGrantTypeValue); if (actorToken != null) { boxRequest = boxRequest.Payload(Constants.RequestParameters.ActorToken, actorToken) .Payload(Constants.RequestParameters.ActorTokenType, Constants.RequestParameters.IdTokenTypeValue); } var handler = new HttpRequestHandler(); var converter = new BoxJsonConverter(); var service = new BoxService(handler); IBoxResponse <OAuthSession> boxResponse = service.ToResponseAsync <OAuthSession>(boxRequest).Result; boxResponse.ParseResults(converter); return(boxResponse.ResponseObject.AccessToken); }
public virtual async Task <OAuthSession> AuthenticateBoxDeveloperEditionAsync() { string assertion = JWTConstructAssertion(); BoxRequest boxRequest = new BoxRequest(_config.BoxApiDeveloperEditionTokenUri) .Method(RequestMethod.Post) .Header(Constants.RequestParameters.UserAgent, _config.UserAgent) .Payload(Constants.RequestParameters.GrantType, Constants.RequestParameters.JWT) .Payload(Constants.RequestParameters.Assertion, assertion) .Payload(Constants.RequestParameters.ClientId, _config.ClientId) .Payload(Constants.RequestParameters.ClientSecret, _config.ClientSecret) .Payload(Constants.RequestParameters.BoxDeviceId, _config.DeviceId) .Payload(Constants.RequestParameters.BoxDeviceName, _config.DeviceName); IBoxResponse <OAuthSession> boxResponse = await _service.ToResponseAsync <OAuthSession>(boxRequest).ConfigureAwait(false); boxResponse.ParseResults(_converter); var session = boxResponse.ResponseObject; using (await _mutex.LockAsync().ConfigureAwait(false)) { Session = session; OnSessionAuthenticated(session); } return(session); }
public async Task <OAuthSession> AuthenticateAsync(string authCode) { if (string.IsNullOrWhiteSpace(authCode)) { throw new ArgumentException("Auth code cannot be null or empty", "authCode"); } BoxRequest boxRequest = new BoxRequest(_config.BoxApiHostUri, Constants.AuthTokenEndpointString) .Method(RequestMethod.Post) .Payload(Constants.RequestParameters.GrantType, Constants.RequestParameters.AuthorizationCode) .Payload(Constants.RequestParameters.Code, authCode) .Payload(Constants.RequestParameters.ClientId, _config.ClientId) .Payload(Constants.RequestParameters.ClientSecret, _config.ClientSecret) .Payload(Constants.RequestParameters.BoxDeviceId, _config.DeviceId) .Payload(Constants.RequestParameters.BoxDeviceName, _config.DeviceName); IBoxResponse <OAuthSession> boxResponse = await _service.ToResponseAsync <OAuthSession>(boxRequest).ConfigureAwait(false); boxResponse.ParseResults(_converter); using (await _mutex.LockAsync().ConfigureAwait(false)) { Session = boxResponse.ResponseObject; var handler = SessionAuthenticated; if (handler != null) { handler(this, new SessionAuthenticatedEventArgs(Session)); } } return(boxResponse.ResponseObject); }
private OAuthSession JWTAuthPost(string assertion) { BoxRequest boxRequest = new BoxRequest(this.boxConfig.BoxApiHostUri, Constants.AuthTokenEndpointString) .Method(RequestMethod.Post) .Header(Constants.RequestParameters.UserAgent, this.boxConfig.UserAgent) .Payload(Constants.RequestParameters.GrantType, Constants.RequestParameters.JWTAuthorizationCode) .Payload(Constants.RequestParameters.Assertion, assertion) .Payload(Constants.RequestParameters.ClientId, this.boxConfig.ClientId) .Payload(Constants.RequestParameters.ClientSecret, this.boxConfig.ClientSecret); var converter = new BoxJsonConverter(); IBoxResponse <OAuthSession> boxResponse = this.boxService.ToResponseAsync <OAuthSession>(boxRequest).Result; boxResponse.ParseResults(converter); return(boxResponse.ResponseObject); }
private async Task <OAuthSession> JWTAuthPostAsync(string assertion) { BoxRequest boxRequest = new BoxRequest(_boxConfig.BoxApiHostUri, Constants.AuthTokenEndpointString) .Method(RequestMethod.Post) .Header(Constants.RequestParameters.UserAgent, _boxConfig.UserAgent) .Payload(Constants.RequestParameters.GrantType, Constants.RequestParameters.JWTAuthorizationCode) .Payload(Constants.RequestParameters.Assertion, assertion) .Payload(Constants.RequestParameters.ClientId, _boxConfig.ClientId) .Payload(Constants.RequestParameters.ClientSecret, _boxConfig.ClientSecret); var converter = new BoxJsonConverter(); IBoxResponse <OAuthSession> boxResponse = await _boxService.ToResponseAsyncWithoutRetry <OAuthSession>(boxRequest).ConfigureAwait(false); boxResponse.ParseResults(converter); return(boxResponse.ResponseObject); }
private async Task <OAuthSession> CCGAuthPostAsync(string subType, string subId) { BoxRequest boxRequest = new BoxRequest(_boxConfig.BoxApiHostUri, Constants.AuthTokenEndpointString) .Method(RequestMethod.Post) .Payload(Constants.RequestParameters.GrantType, Constants.RequestParameters.ClientCredentials) .Payload(Constants.RequestParameters.ClientId, _boxConfig.ClientId) .Payload(Constants.RequestParameters.ClientSecret, _boxConfig.ClientSecret) .Payload(Constants.RequestParameters.SubjectType, subType) .Payload(Constants.RequestParameters.SubjectId, subId); var converter = new BoxJsonConverter(); IBoxResponse <OAuthSession> boxResponse = await _boxService.ToResponseAsync <OAuthSession>(boxRequest).ConfigureAwait(false); boxResponse.ParseResults(converter); return(boxResponse.ResponseObject); }
private async Task <OAuthSession> ExchangeRefreshToken(string refreshToken) { if (string.IsNullOrWhiteSpace(refreshToken)) { throw new ArgumentException("Refresh token cannot be null or empty", "refreshToken"); } BoxRequest boxRequest = new BoxRequest(_config.BoxApiHostUri, Constants.AuthTokenEndpointString) .Method(RequestMethod.Post) .Payload("grant_type", "refresh_token") .Payload("refresh_token", refreshToken) .Payload("client_id", _config.ClientId) .Payload("client_secret", _config.ClientSecret); IBoxResponse <OAuthSession> boxResponse = await _service.ToResponseAsync <OAuthSession>(boxRequest).ConfigureAwait(false); boxResponse.ParseResults(_converter); // Return new session return(boxResponse.ResponseObject); }
/// <summary> /// Performs the authentication request using the provided auth code /// </summary> /// <param name="authCode"></param> /// <returns></returns> protected async Task <OAuthSession> ExchangeAuthCode(string authCode) { if (string.IsNullOrWhiteSpace(authCode)) { throw new ArgumentException("Auth code cannot be null or empty", "authCode"); } BoxRequest boxRequest = new BoxRequest(_config.BoxApiHostUri, Constants.AuthTokenEndpointString) .Method(RequestMethod.Post) .Payload(Constants.RequestParameters.GrantType, Constants.RequestParameters.AuthorizationCode) .Payload(Constants.RequestParameters.Code, authCode) .Payload(Constants.RequestParameters.ClientId, _config.ClientId) .Payload(Constants.RequestParameters.ClientSecret, _config.ClientSecret) .Payload(Constants.RequestParameters.BoxDeviceId, _config.DeviceId) .Payload(Constants.RequestParameters.BoxDeviceName, _config.DeviceName); IBoxResponse <OAuthSession> boxResponse = await _service.ToResponseAsync <OAuthSession>(boxRequest).ConfigureAwait(false); boxResponse.ParseResults(_converter); return(boxResponse.ResponseObject); }
public async Task <OAuthSession> AuthenticateAsync(string authCode) { if (string.IsNullOrWhiteSpace(authCode)) { throw new ArgumentException("Auth code cannot be null or empty", "authCode"); } BoxRequest boxRequest = new BoxRequest(_config.BoxApiHostUri, Constants.AuthTokenEndpointString) .Method(RequestMethod.Post) .Payload("grant_type", "authorization_code") .Payload("code", authCode) .Payload("client_id", _config.ClientId) .Payload("client_secret", _config.ClientSecret); IBoxResponse <OAuthSession> boxResponse = await _service.ToResponseAsync <OAuthSession>(boxRequest).ConfigureAwait(false); boxResponse.ParseResults(_converter); using (await _mutex.LockAsync().ConfigureAwait(false)) Session = boxResponse.ResponseObject; return(boxResponse.ResponseObject); }