У меня есть приложение ASP. NET MVC, которое зарегистрировано в Azure Active Directory. Я добавляю в приложение новую функцию, для которой потребуется список всех пользователей из AAD. Собрав вместе несколько фрагментов кода, которые я получил из различных документов MSDN, вот как выглядит мой метод получения пользователей:
public async Task GetUsers()
{
string clientId = ConfigurationManager.AppSettings["ida:ClientId"];
string tenant = ConfigurationManager.AppSettings["ida:Tenant"];
string clientSecret = ConfigurationManager.AppSettings["ida:ClientSecret"];
IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder
.Create(clientId)
.WithTenantId(tenant)
.WithClientSecret(clientSecret)
.Build();
ClientCredentialProvider authProvider = new ClientCredentialProvider(confidentialClientApplication);
GraphServiceClient graphClient = new GraphServiceClient(authProvider);
var users = await graphClient.Users.Request().GetAsync();
}
Однако, когда я запускаю приложение, я получаю исходное исключение: AADSTS7000215 : Указан неверный секрет клиента. Я дважды проверил, что секрет клиента, который я добавил в web.config, совпадает с тем, что показано в AAD, и что секрет клиента не истек. Я даже удалил секрет клиента и создал новый, но это тоже не устранило проблему. Я также удостоверился, что для этого приложения предоставлено разрешение User.Read.All типа Application. Что могло быть причиной этой ошибки и что можно было сделать для ее устранения? Кроме того, мне интересно, есть ли более простой способ получить список пользователей, учитывая, что у меня уже настроена аутентификация для этого приложения с помощью Owin.IAppBuilder. Вот что у меня в файле Startup.cs:
public class Startup
{
private static string clientId = ConfigurationManager.AppSettings["ida:ClientId"];
private static string aadInstance = ConfigurationManager.AppSettings["ida:AADInstance"];
private static string tenant = ConfigurationManager.AppSettings["ida:Tenant"];
private static string postLogoutRedirectUri = ConfigurationManager.AppSettings["ida:PostLogoutRedirectUri"];
string authority = string.Format(CultureInfo.InvariantCulture, aadInstance, tenant);
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
}
public void ConfigureAuth(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions()
{
ClientId = clientId,
Authority = authority,
PostLogoutRedirectUri = postLogoutRedirectUri,
Notifications = new OpenIdConnectAuthenticationNotifications
{
AuthenticationFailed = ctx => {
ctx.HandleResponse();
ctx.Response.Redirect("/Error/messages" + ctx.Exception.Message);
return Task.FromResult(0);
}
} });
}
}