Mostrando entradas con la etiqueta client_assertion. Mostrar todas las entradas
Mostrando entradas con la etiqueta client_assertion. Mostrar todas las entradas

miércoles, 24 de septiembre de 2014

ACS90014 error using Active Directory Authentication Library V2

Intentando autenticar una aplicación de consola usando ADAL v2, al invocar al método AcquireToken pasando el clientId (sin clientSecret), y PromptBehavior.Always, luego del ingreso de las credenciales me devolvía el error:
ACS90014: The request body must contain the following parameter: 'client_secret or client_assertion'
Luego de buscar un rato pude encontrar que la causa era que el Application que habia creado en el Azure Active Directory era del tipo WEB APPLICATION AND/OR WEB AP cuando lo correcto, para el caso que me interesaba, era crearla del tipo NATIVE CLIENT APPLICATION.

Parte del código utilizado:

    string clientId =       ConfigurationManager.AppSettings["ClientId"];
    string clientSecret =   ConfigurationManager.AppSettings["ClientSecret"];
    string resource =       ConfigurationManager.AppSettings["ServiceRealm"];
    string authenticationUri =
                            ConfigurationManager.AppSettings["AuthBaseUri"] +
                            ConfigurationManager.AppSettings["Tenant"];

    AuthenticationContext authenticationContext =
                            new AuthenticationContext(authenticationUri, false);

    string token;
    var redirectUri = new Uri(ConfigurationManager.AppSettings["RedirectUri"]);
    try
    {
        AuthenticationResult authenticationResult = 
            authenticationContext.AcquireToken(resource, clientId, redirectUri, PromptBehavior.Always);
        token = authenticationResult.AccessToken;
        Console.WriteLine("\n Welcome " + authenticationResult.UserInfo.GivenName + " " + authenticationResult.UserInfo.FamilyName);
    }
    catch (AuthenticationException ex)
    {
        string message = ex.Message;
        if (ex.InnerException != null)
            message += "InnerException : " + ex.InnerException.Message;
        Console.WriteLine(message);
        Console.ReadKey();
        return;
    }

Basado en la publicación de Vittorio Bertocci: Active Directory Authentication Library (ADAL) v2 for .NET/Windows Store/Windows Phone–General Availability!