Я пытаюсь создать WebAPI и хочу использовать область действия, чтобы ограничить разрешения для приложений других клиентов. Я создал область «BuildingAccess» на блейде Expose a API и добавил другое клиентское приложение в список авторизованных с этой областью. Однако, когда я использую клиентскую программу, чтобы попытаться получить токен с этой областью, я получаю ошибку «AADSTS70011: The provided request must include a 'scope' input parameter. The provided value for the input parameter 'scope' is not valid.
»
IConfidentialClientApplication app = ConfidentialClientApplicationBuilder.Create("removed")
.WithTenantId("removed")
.WithClientSecret(ClientSecret)
.Build();
List<string> scopes = new List<string>();
scopes.Add(".default");
scopes.Add("https://localhost:44371/BuildingAccess");
AuthenticationResult result = null;
try
{
result = await app.AcquireTokenForClient(scopes).ExecuteAsync();
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("Token acquired \n");
Console.ResetColor();
}
catch (MsalServiceException ex)
when (ex.Message.Contains("AADSTS70011"))
{
// Invalid scope. The scope has to be of the form "https://resourceurl/.default"
// Mitigation: change the scope to be as expected
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Scope provided is not supported");
Console.ResetColor();
}
Единственный формат, который, кажется, работает, это когда область установлена на https://localhost: 44371 / .default . Все остальные комбинации ниже, где я добавляю область BuildingAccess, завершаются с ошибкой ниже для различных форматов, которые я пробовал.
- Область
api://333333-2222-1111-0000-aaaaaaaaaaaaa/BuildingAccess https://localhost:44371/.default
недопустима. - Область действия
api://333333-2222-1111-0000-aaaaaaaaaaaaa/.default api://333333-2222-1111-0000-aaaaaaaaaaaaa/BuildingAccess
недействительна. - Область действия
.default BuildingAccess
недействительна. - Область действия
BuildingAccess
недействительна. - Область действия
api://333333-2222-1111-0000-aaaaaaaaaaaaa/BuildingAccess
- Область действия
https://localhost:44371/BuildingAccess
недопустима.
Если тот, который работает https://localhost:44371/.default
, то на моей стороне сервера есть ошибка из-за сбоя
Исключение: «Microsoft.IdentityModel.Tokens.SecurityTokenInvalidAudienceException» в Microsoft.IdentityModel.Tokens.dll
, и я получаю несанкционированный ответ на клиенте.