private static async Task <string> GetToken(ParsedArguments parsedArgs)
        {
            var context = new AuthenticationContext(parsedArgs.AzureADAuthorityAddress);
            var result  = await context.AcquireTokenAsync(parsedArgs.AzureADResource, parsedArgs.AzureADClientId, new Uri(parsedArgs.AzureADRedirectAddress), new PlatformParameters(PromptBehavior.Auto), UserIdentifier.AnyUser, parsedArgs.QueryParams);

            var tokenCache = context.TokenCache.Serialize();

            return(Convert.ToBase64String(tokenCache));
        }
示例#2
0
        private static async Task <string> GetToken(ParsedArguments parsedArgs)
        {
            var context = new AuthenticationContext(parsedArgs.AzureADAuthorityAddress);
            AuthenticationResult result = null;

            if (!string.IsNullOrEmpty(parsedArgs.UserName) && !string.IsNullOrEmpty(parsedArgs.Password))
            {
                // https://github.com/AzureAD/azure-activedirectory-library-for-dotnet/wiki/Acquiring-tokens-with-username-and-password
                var passwordBytes = Convert.FromBase64String(parsedArgs.Password);
                var password      = Encoding.UTF8.GetString(passwordBytes);
                // TODO encrypt password and decode here, either AES or MachineKey (but it needs to work across .NET Framework and .NET Core)
                result = await context.AcquireTokenAsync(parsedArgs.AzureADResource, parsedArgs.AzureADClientId, new UserPasswordCredential(parsedArgs.UserName, password));
            }
            else
            {
                result = await context.AcquireTokenAsync(parsedArgs.AzureADResource, parsedArgs.AzureADClientId, new Uri(parsedArgs.AzureADRedirectAddress), new PlatformParameters(PromptBehavior.Auto), UserIdentifier.AnyUser, parsedArgs.QueryParams);
            }

            var tokenCache = context.TokenCache.Serialize();

            return(Convert.ToBase64String(tokenCache));
        }