Example #1
0
		public static bool TryParseBody(byte[] key, string token, out AccessTokenBody body)
		{
			AccessToken accessToken;
			if (TryParse(token, out accessToken) == false)
			{
				body = null;
				return false;
			}

			if (accessToken.MatchesSignature(key) == false)
			{
				body = null;
				return false;
			}

			try
			{
				body = JsonConvert.DeserializeObject<AccessTokenBody>(accessToken.Body);
				return true;
			}
			catch
			{
				body = null;
				return false;
			}
		}
Example #2
0
        public async Task <string> GetAccessToken(CancellationToken cancellationToken = default)
        {
            if (_accessToken == null || _accessToken.HasExpired())
            {
                var body     = new AccessTokenBody(_clientId, _clientSecret, _managementApiAudience);
                var bodyJson = JsonConvert.SerializeObject(body);

                HttpResponseMessage response;

                try
                {
                    response = await Client.PostAsync("/oauth/token",
                                                      new StringContent(bodyJson, Encoding.UTF8, "application/json"), cancellationToken);
                }
                catch (Exception e)
                {
                    _logger.LogError(e, "Could not communicate with Auth0. Will throw");
                    throw new ExternalResourceCommunicationErrorException("Could not communicate with Auth0.", e);
                }

                var responseStr = await response.Content.ReadAsStringAsync();

                if (!response.IsSuccessStatusCode)
                {
                    _logger.LogError("Got non success status code {httpStatusCode}. Message: '{message}' Will throw.",
                                     response.StatusCode, responseStr);
                    throw new ExternalResourceCommunicationErrorException($"Got non success status code from Auth0: {response.StatusCode}");
                }

                var accessToken = JsonConvert.DeserializeObject <AccessToken>(responseStr);
                _accessToken = accessToken;
            }

            return(_accessToken.Token);
        }
Example #3
0
 public OAuthPrincipal(AccessTokenBody tokenBody, string tenantId)
 {
     this.tokenBody     = tokenBody;
     this.tenantId      = tenantId;
     AdminDatabases     = new HashSet <string>(this.tokenBody.AuthorizedDatabases.Where(db => db.Admin).Select(db => db.TenantId));
     ReadOnlyDatabases  = new HashSet <string>(this.tokenBody.AuthorizedDatabases.Where(db => db.ReadOnly).Select(db => db.TenantId));
     ReadWriteDatabases = new HashSet <string>(this.tokenBody.AuthorizedDatabases.Where(db => db.ReadOnly == false).Select(db => db.TenantId));
 }
Example #4
0
		public static AccessToken Create(byte[] key, AccessTokenBody tokenBody)
		{
			tokenBody.Issued = (SystemTime.UtcNow - DateTime.MinValue).TotalMilliseconds;

			var body = RavenJObject.FromObject(tokenBody)
					.ToString(Formatting.None);

			var signature = Sign(body, key);

			return new AccessToken { Body = body, Signature = signature };
		}
Example #5
0
        private void VerifyStatus(string referenceId, AccessTokenBody accessToken)
        {
            if (!_appSettings.GeneralSettings.UsesVerifyStatus)
            {
                return;
            }
            Thread.Sleep(_appSettings.GeneralSettings.VerifyDelay);
            _log.Info($"Processing ReferenceId: {referenceId}");
            var cmd = new GetStatus {
                ReferenceId = referenceId
            };
            var result = _tenantApiService.GetTransactionStatus(accessToken, cmd);

            HandleResponse(cmd, result);
        }
	public OAuthPrincipal(AccessTokenBody tokenBody, string tenantId)
	{
		this.tokenBody = tokenBody;
		this.tenantId = tenantId;
	}
Example #7
0
 public OAuthPrincipal(AccessTokenBody tokenBody, string tenantId)
 {
     this.tokenBody = tokenBody;
     this.tenantId  = tenantId;
 }
Example #8
0
        private void SaveCardholder(ITenantApiCmd cmd, AccessTokenBody accessToken)
        {
            var result = _tenantApiService.SaveCardholderMulti(accessToken, (AddMultiAccessCard)cmd);

            HandleResponse(cmd, result);
        }
		public OAuthPrincipal(AccessTokenBody tokenBody)
		{
			this.tokenBody = tokenBody;
		}