До моего присоединения к организации я понимаю, что это был проект ASP.NET 3.1, который с тех пор был обновлен до ASP.NET 6 < /p>
Аутентикация настроена на следующий код: < /p>
Создается следующим кодом: < /p>
.
Код: Выделить всё
services.AddAuthentication(AzureADDefaults.BearerAuthenticationScheme)
.AddAzureADBearer(options => Configuration.Bind("AzureAd", options));
< /code>
Однако это дает предупреждения о том, что используемые методы устарели, и я пытаюсь удалить эти предупреждения. Проблема, которую у меня возникает, заключается в том, что после того, как я полагаю, что это правильные изменения, код отлично работает из пользовательского интерфейса Swagger, но клиентское программное обеспечение больше не может подключаться.// The two lines shown above are replaced with:
services.AddMicrosoftIdentityWebApiAuthentication(Configuration, "AzureAd");
< /code>
Appsettings.json:
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"Domain": "",
"TenantId": "",
"ClientId": "api://", // I removed "api://", otherwise it didn't work in Swagger UI
"ClientSecret": "",
"Scope": "api:///"
}
}
< /code>
Пример клиентского кода: < /p>
var content = new FormUrlEncodedContent(new[]
{
new KeyValuePair("grant_type", "client_credentials"),
new KeyValuePair("client_id", ""),
new KeyValuePair("client_secret", ""),
new KeyValuePair("scope", "api:///.default")
});
using var httpClient = new HttpClient();
var requestResult = await httpClient.PostAsync("https://login.microsoftonline.com//oauth2/v2.0/token", content);
var resultText = await requestResult.Content.ReadAsStringAsync();
var result = JsonSerializer.Deserialize(resultText);
var apiHttpClient = new HttpClient();
apiHttpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.access_token);
HttpResponseMessage result = await apiHttpClient.GetAsync("https://localhost:5001/api/");
Assert.True(result.IsSuccessStatusCode); // Works with the old server code. Fails with the new code because the status code is 401
Подробнее здесь: https://stackoverflow.com/questions/722 ... ated-to-ne
Мобильная версия