Код: Выделить всё
Microsoft.GraphОднако я не могу получить рабочий запрос. Все мои попытки приводят к коду статуса http: Badrequest < /code>
, чтобы подчеркнуть: я хочу провести оценку условного доступа, не пытаться создать или обновить политику. < /P>
Вот мой класс: < /p>
Код: Выделить всё
public async Task RunConditionalAccessWhatIfAsync(string _userId, List _includedApplications)
{
try
{
Logger.Information($"Starting Conditional Access What-If check for user {_userId}", _userId);
using var httpClient = await AzureHttpAuthenticationService.GetAuthenticatedHttpClientAsync();
var requestBody = new
{
signInIdentity = new
{
userId = _userId
},
signInContext = new
{
includeApplications = _includedApplications
},
appliedPoliciesOnly = true
};
Logger.Information("request body: " + JsonConvert.SerializeObject(requestBody));
var requestUrl = "https://graph.microsoft.com/beta/identity/conditionalAccess/evaluate";
var requestContent = new StringContent(JsonConvert.SerializeObject(requestBody), Encoding.UTF8, "application/json");
var response = await httpClient.PostAsync(requestUrl, requestContent);
Logger.Information($"HTTP Status Code: {response.StatusCode}");
Logger.Information($"Response Headers: {response.Headers}");
response.EnsureSuccessStatusCode();
var responseContent = await response.Content.ReadAsStringAsync();
Logger.Information(responseContent);
var policies = JsonConvert.DeserializeObject[*]>(responseContent);
var cumulativeSettings = new CumulativePolicySettings();
foreach (var policy in policies)
{
cumulativeSettings.AllAppliedControls.AddRange(policy.AppliedControls);
foreach (var setting in policy.Settings)
{
cumulativeSettings.CombinedSettings[setting.Key] = setting.Value;
}
}
Logger.Information("Conditional Access What-If check completed. Policies evaluated: {Count}", policies.Count);
return cumulativeSettings;
}
catch (Exception ex)
{
Logger.Error("Error occurred during Conditional Access What-If check: {Message}", ex.Message);
return null;
}
}
Для аутентификации я использую регистрацию приложения < /code>.
разрешения предоставляются согласия администратора: < /p>
plicy.policy.read.all
[*] directory.all
Alli.Reactory.All.AllI. /> < /ul>
Код: Выделить всё
AzureHttpAuthenticationServiceКод: Выделить всё
private async Task GetAccessTokenAsync()
{
var app = ConfidentialClientApplicationBuilder.Create(ClientID)
.WithClientSecret(ClientSecret)
.WithAuthority(Authority)
.Build();
string[] Scopes = { "https://graph.microsoft.com/.default" };
var result = await app.AcquireTokenForClient(Scopes).ExecuteAsync();
return result.AccessToken;
}
public async Task GetAuthenticatedHttpClientAsync()
{
var httpClient = new HttpClient();
var token = await GetAccessTokenAsync();
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
return httpClient;
}
Код: Выделить всё
2025-06-04 23:15:42.955 +02:00 [INF] HTTP Status Code: BadRequest
2025-06-04 23:15:42.956 +02:00 [INF] Response Headers: Cache-Control: no-cache
Transfer-Encoding: chunked
Strict-Transport-Security: max-age=31536000
request-id: b30a0e35-0b3c-4274-ae93-977d95ff46dc
client-request-id: b30a0e35-0b3c-4274-ae93-977d95ff46dc
x-ms-ags-diagnostic: {"ServerInfo":{"DataCenter":"Germany West Central","Slice":"E","Ring":"4","ScaleUnit":"002","RoleInstance":"FR3PEPF00000351"}}
Link: LOT OF LINKS REMOVED FOR READABILITY
Deprecation: Thu, 17 Feb 2022 23:59:59 GMT
Sunset: Sat, 17 Feb 2024 23:59:59 GMT
Date: Wed, 04 Jun 2025 21:15:42 GMT
< /code>
То же самое касается текущей (не-бета-конечной точки. < /p>
Кто-нибудь знает, как заставить это работать? Я рад использовать пакет microsoft.graph иначе любая помощь в получении правильного корпуса запроса на график также был бы удивительным.
Спасибо за помощь!
Подробнее здесь: https://stackoverflow.com/questions/796 ... ng-c-sharp