public override TokenCredential GetTokenCredential(TokenCredentialOptions options) { var pwOptions = new UsernamePasswordCredentialOptions { Diagnostics = { IsAccountIdentifierLoggingEnabled = options.Diagnostics.IsAccountIdentifierLoggingEnabled } }; return(InstrumentClient(new UsernamePasswordCredential("user", "password", TenantId, ClientId, pwOptions, null, mockPublicMsalClient))); }
public override Task <IAccessToken> Authenticate(AuthenticationParameters parameters, CancellationToken cancellationToken) { var upParameters = parameters as UsernamePasswordParameters; var onPremise = upParameters.Environment.OnPremise; var tenantId = onPremise ? AdfsTenant : upParameters.TenantId; //Is user name + password valid in Adfs env? var tokenCacheProvider = upParameters.TokenCacheProvider; var resource = upParameters.Environment.GetEndpoint(upParameters.ResourceId) ?? upParameters.ResourceId; var scopes = AuthenticationHelpers.GetScope(onPremise, resource); var clientId = AuthenticationHelpers.PowerShellClientId; var authority = upParameters.Environment.ActiveDirectoryAuthority; var requestContext = new TokenRequestContext(scopes); UsernamePasswordCredential passwordCredential; AzureSession.Instance.TryGetComponent(nameof(PowerShellTokenCache), out PowerShellTokenCache tokenCache); var credentialOptions = new UsernamePasswordCredentialOptions() { AuthorityHost = new Uri(authority), TokenCache = tokenCache.TokenCache }; if (upParameters.Password != null) { passwordCredential = new UsernamePasswordCredential(upParameters.UserId, upParameters.Password.ConvertToString(), tenantId, clientId, credentialOptions); TracingAdapter.Information($"{DateTime.Now:T} - [UsernamePasswordAuthenticator] Calling UsernamePasswordCredential.AuthenticateAsync - TenantId:'{tenantId}', Scopes:'{string.Join(",", scopes)}', AuthorityHost:'{authority}', UserId:'{upParameters.UserId}'"); var authTask = passwordCredential.AuthenticateAsync(requestContext, cancellationToken); return(MsalAccessToken.GetAccessTokenAsync( authTask, passwordCredential, requestContext, cancellationToken)); } else { throw new InvalidOperationException(Resources.MissingPasswordAndNoCache); } }