Cambiar el secreto de una aplicación

Aspen permite al propietario de una aplicación, cambiar o actualizar el secreto utilizado para firmar las solicitudes.

Cambiar el secreto de su aplicación al igual que en la solicitud de un token de autenticación necesitará de las cabeceras de autenticación personalizadas junto con un parámetro que recibe el valor para el nuevo secreto.

Tendrá que invocar a la operación Secret del servicio de autenticación, haciendo un POST y agregando las dos cabeceras personalizadas usando su AppKey y AppSecret actual.

Implementación demostrativa

Usando el código de demostración agregaremos a la interfaz IAspenService una nueva función con el nombre UpdateSecret

public interface IAspenService
{
    AuthContext AuthContext { get; }
    void Signin();
    IList<DocType> GetDocTypes();
    void UpdateSecret(string newSecret);
}

Y en la clase AspenService implementaremos la nueva función:

public void UpdateSecret(string newSecret)
{
    var payload = new Dictionary<string, object>
    {
        { "Nonce", this.nonceProvider.GetNonce() },
        { "Epoch", this.epochProvider.GetSeconds() }
    };

    IRestRequest request = new RestRequest("/app/auth/secret", Method.POST);
    request.AddHeader(AppHeaderKey, this.appKey);
    request.AddHeader(PayloadHeaderKey, this.encoder.Encode(payload, this.appSecret));
    request.AddParameter("NewValue", newSecret);
    IRestResponse response = this.restClient.Execute(request);
    if (response.IsSuccessful)
    {
        return;
    }

    throw new AspenException(response);
}

Atención

Una vez que el cambio de secreto haya finalizado con éxito, toda nueva solicitud firmada usando las credenciales anteriores, automáticamente será rechazada.

Características de un secreto fuerte

El secreto debe cumplir con un alto nivel de complejidad para que sea poco o nada predecible y mitigar ataques de fuerza bruta.

Prepare nuevos secretos para su aplicación que incluyan las siguientes características:

  • Letras minúsculas.
  • Letras mayúsculas.
  • Números.
  • Caracteres especiales.
  • Una longitud mínima 128 caracteres.
// Una forma sencilla de generar claves fuertes con .NET:
int minLength = 128;
int numberOfNonAlphanumericCharacters = 10;
System.Web.Security.Membership.GeneratePassword(minLength, numberOfNonAlphanumericCharacters);

O puede utilizar una herramienta en línea para generar claves seguras como esta: Strong Random Password Generator