У меня нет проблем с доступом к API Graph с аутентификацией пользователя
var user = new PublicClientApplication("---");
var userClient = new GraphServiceClient(
"https://graph.microsoft.com/v1.0",
new DelegateAuthenticationProvider(
async (requestMessage) =>
{
requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", await GetTokenAsync(user));
}));
static async Task<string> GetTokenAsync(IPublicClientApplication user)
{
string[] scopes = { "User.Read", "Directory.Read.All" };
var authResult = await user.AcquireTokenAsync(scopes);
return authResult.AccessToken;
}
Однако аналогичный код для приложения также требует аутентификации пользователя.
Эта ссылка (https://docs.microsoft.com/en-us/graph/auth-v2-service), описывает выполнение предметас HTTP-клиентом. Как мне сделать это только с помощью .net SDK?
var app = new ConfidentialClientApplication("---", @"https://login.microsoftonline.com/common",
"http://localhost", new ClientCredential("---"), new TokenCache(), new TokenCache());
public static async Task<string> GetTokenForAppAsync(IConfidentialClientApplication identityAppOnlyApp)
{
var authResult = await identityAppOnlyApp.AcquireTokenForClientAsync(new[] { "https://graph.microsoft.com/.default" });
return authResult.AccessToken;
}