public void InvalidFormatPayloadWhenUserSigninRequestThrows() { IHeadersManager invalidPayloadHeaderBehavior = InvalidPayloadHeader.WithHeaderBehavior(() => "Lorem ipsum dolor sit amet, consetetur sadipscing elitr"); ServiceLocator.Instance.RegisterHeadersManager(invalidPayloadHeaderBehavior); AspenException exception = Assert.Throws <AspenException>(() => GetDelegatedClient()); Assert.That(exception.EventId, Is.EqualTo("20007")); Assert.That(exception.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest)); StringAssert.IsMatch("El contenido de la cabecera personalizada 'X-PRO-Auth-Payload' no es válido", exception.Message); }
public void InvalidAppCredentialWhenAppSignedRequestThrows() { IAutonomousApp client = this.GetAutonomousClient(); string invalidApiSecret = Guid.NewGuid().ToString(); IHeadersManager invalidAppSecretBehavior = InvalidPayloadHeader.WithCustomAppSecret(invalidApiSecret); ServiceLocator.Instance.RegisterHeadersManager(invalidAppSecretBehavior); AspenException exception = Assert.Throws <AspenException>(() => client.Settings.GetDocTypes()); Assert.That(exception.EventId, Is.EqualTo("20007")); Assert.That(exception.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest)); StringAssert.IsMatch("El contenido de la cabecera personalizada 'X-PRO-Auth-Payload' no es válido. Invalid signature. ¿Está utilizando las credenciales proporcionadas?", exception.Message); }
public void UnrecognizedApiKeyWhenAppSignedRequestThrows() { IAutonomousApp client = this.GetAutonomousClient(); string unrecognizedApiKey = Guid.NewGuid().ToString(); IHeadersManager apiKeyHeaderBehavior = InvalidApiKeyHeader.WithHeaderBehavior(() => unrecognizedApiKey); ServiceLocator.Instance.RegisterHeadersManager(apiKeyHeaderBehavior); AspenException exception = Assert.Throws <AspenException>(() => client.Settings.GetDocTypes()); Assert.That(exception.EventId, Is.EqualTo("20005")); Assert.That(exception.StatusCode, Is.EqualTo(HttpStatusCode.BadRequest)); StringAssert.IsMatch("Identificador de ApiKey no válido para la cabecera personalizada 'X-PRO-Auth-App'", exception.Message); }
/// <summary> /// Inicializa una nueva instancia de la clase <see cref="ServiceLocator" /> /// </summary> /// <param name="nonceGenerator">Instancia de <see cref="INonceGenerator" /> que se utiliza para inicializar el proveedor de valores nonce o <c>null</c> para utilizar la instancia predeterminada.</param> /// <param name="epochGenerator">Instancia de <see cref="IEpochGenerator" /> que se utiliza para inicializar el proveedor de valores epoch o <c>null</c> para utilizar la instancia predeterminada.</param> /// <param name="headersManager">Instancia de <see cref="IHeadersManager" /> que se utiliza para inicializar el proveedor de cabeceras para las solicitudes al servicio o <c>null</c> para utilizar la instancia predeterminada.</param> /// <param name="requestHeaderNames">Instancia de <see cref="IHeaderElement" /> que se utiliza para inicializar el proveedor de los nombres de cabeceras personalizadas o <c>null</c> para utilizar la instancia predeterminada.</param> /// <param name="payloadClaimNames">Instancia de <see cref="IPayloadClaimElement" /> que se utiliza para inicializar el proveedor de los nombres para las reclamaciones usadas en la carga útil del servicio o <c>null</c> para utilizar la instancia predeterminada.</param> /// <param name="payloadClaimsManager">Instancia de <see cref="IPayloadClaimsManager" /> que se utiliza para inicializar el proveedor de reclamaciones de la carga útil o <c>null</c> para utilizar la instancia predeterminada.</param> /// <param name="jwtJsonSerializer">Instancia de <see cref="IJsonSerializer" /> que se utiliza para inicializar el proveedor de serialización y deserialización de JWT o <c>null</c> para utilizar la instancia predeterminada.</param> /// <param name="webProxy">Instancia de <see cref="IWebProxy" /> que se utiliza para inicializar el proveedor del servidor proxy o <c>null</c> para utilizar la instancia predeterminada.</param> /// <param name="loggingProvider">Instancia de <see cref="ILoggingProvider" /> que se utiliza para inicializar el proveedor de escritura de trazas de seguimiento o <c>null</c> para utilizar la instancia predeterminada.</param> /// <param name="endpointProvider">Instancia que implementa <see cref="IEndpointProvider"/> para la obtención de valores de configuración.</param> /// <param name="appIdentity">Instancia que implementa <see cref="IAppIdentity"/> para la obtención de valores de configuración.</param> private void RegisterInstance( INonceGenerator nonceGenerator = null, IEpochGenerator epochGenerator = null, IHeadersManager headersManager = null, IHeaderElement requestHeaderNames = null, IPayloadClaimElement payloadClaimNames = null, IPayloadClaimsManager payloadClaimsManager = null, IJsonSerializer jwtJsonSerializer = null, IWebProxy webProxy = null, ILoggingProvider loggingProvider = null, IEndpointProvider endpointProvider = null, IAppIdentity appIdentity = null) { lock (padlock) { INonceGenerator instanceOfNonceGenerator = nonceGenerator ?? this.NonceGenerator ?? new GuidNonceGenerator(); IEpochGenerator instanceOfEpochGenerator = epochGenerator ?? this.EpochGenerator ?? new UnixEpochGenerator(); IHeaderElement instanceOfRequestHeaderNames = requestHeaderNames ?? this.RequestHeaderNames ?? new DefaultHeaderElement(); IPayloadClaimElement instanceOfPayloadClaimNames = payloadClaimNames ?? this.PayloadClaimNames ?? new DefaultPayloadClaimElement(); IPayloadClaimsManager instanceOfPayloadClaimsManager = payloadClaimsManager ?? this.PayloadClaimsManager ?? new DefaultPayloadClaimsManager(); IHeadersManager instanceOfHeadersManager = headersManager ?? this.HeadersManager ?? new DefaultHeadersManager(); IJsonSerializer instanceOfJwtJsonSerializer = jwtJsonSerializer ?? this.JwtJsonSerializer ?? new JsonNetSerializer(); IWebProxy instanceOfWebProxy = webProxy ?? this.WebProxy ?? new NullWebProxy(); ILoggingProvider instanceOfLoggingProvider = loggingProvider ?? this.LoggingProvider ?? new NullLoggingProvider(); IEndpointProvider instanceOfEndpointProvider = endpointProvider ?? new EnvironmentEndpoint(); IAppIdentity instanceOfAppIdentity = appIdentity ?? new EnvironmentIdentity(); if (this.container != null) { this.container.Dispose(); this.container = null; } this.container = new Container(); this.container.RegisterInstance <IEnvironmentRuntime>(new EnvironmentRuntime()); this.container.RegisterInstance(instanceOfNonceGenerator); this.container.RegisterInstance(instanceOfEpochGenerator); this.container.RegisterInstance(instanceOfRequestHeaderNames); this.container.RegisterInstance(instanceOfHeadersManager); this.container.RegisterInstance(instanceOfPayloadClaimNames); this.container.RegisterInstance(instanceOfPayloadClaimsManager); this.container.RegisterInstance(instanceOfJwtJsonSerializer); this.container.RegisterInstance(instanceOfWebProxy); this.container.RegisterInstance(instanceOfLoggingProvider); this.container.RegisterInstance(instanceOfEndpointProvider); this.container.RegisterInstance(instanceOfAppIdentity); } }
/// <summary> /// Registra una instancia de <see cref="IHeadersManager"/> que permite agregar las cabeceras personalizadas. /// </summary> /// <param name="headersManager">Instancia que implementa <see cref="IHeadersManager"/>.</param> public void RegisterHeadersManager(IHeadersManager headersManager) { Throw.IfNull(headersManager, nameof(headersManager)); this.RegisterInstance(headersManager: headersManager); }