Код: Выделить всё
The remote server returned an error: (403) FORBIDDEN
Код: Выделить всё
public async Task
GetContextWithCredentialsAsync(string url, string username, string password)
{
try
{
if (url.ToUpper().StartsWith("HTTP://") || url.ToUpper().StartsWith("HTTPS://"))
{
var securePassword = new SecureString();
password.ToCharArray().ToList().ForEach(s => securePassword.AppendChar(s));
var clientContext = new ProjectContext(url)
{
Credentials = new NetworkCredential(username, securePassword)
};
clientContext.Load(clientContext.Projects);
clientContext.ExecuteQuery();
return await System.Threading.Tasks.Task.Factory.StartNew(() => { return clientContext; });
}
}
catch (Exception ex)
{
throw ex;
}
return null;
}
Изменить:
Кажется, у вас есть использовать Entra и что-то еще, но я хочу, чтобы все могли использовать лучший ответ. Очень грустно, когда документы MS ошибаются. Кто-то должен знать ответ, который мы можем написать для .NET 8, а НЕ для полной платформы.
Наиболее близкий вариант, который у меня есть, требует clientId и tenantId, но это было сделано через Azure. Можете ли вы сделать это для виртуальной машины напрямую, без приложения Azure?
Код: Выделить всё
public async System.Threading.Tasks.Task
CreateConnectionProjectContext(string baseUrl, string url, string username, string password, string clientId, string tenantId)
{
var pcaConfig = PublicClientApplicationBuilder.Create(clientId).WithTenantId(tenantId);
var TokenResult = await pcaConfig.Build().AcquireTokenByUsernamePassword(new[] { baseUrl }, username, password).ExecuteAsync();
// Load ps context
var projectContext = new ProjectContext(url);
projectContext.ExecutingWebRequest += (s, e) =>
{
e.WebRequestExecutor.RequestHeaders["Authorization"] = "Bearer " + TokenResult.AccessToken;
};
projectContext.Load(projectContext.Projects);
projectContext.ExecuteQuery();
_context = projectContext;
}
Проблема в строке «var pcaConfig». Можете ли вы сделать это непосредственно в Entra без приложения Azure?
Подробнее здесь: https://stackoverflow.com/questions/784 ... 65-and-get