Согласно вашему описанию, я предполагаю, что вам нужно решение для аутентификации пользователя без какого-либо взаимодействия.
Мы можем получить токен доступа с помощью некоторых фоновых сервисов или демонов.
Для получения более подробной информации, мы можем обратиться к этому документу .
Основываясь на моем тесте, мы можем попробовать следующие шаги:
Сначала мыдолжен получить согласие администратора:
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
ClientId = clientId,
Authority = authority,
RedirectUri = redirectUri,
PostLogoutRedirectUri = redirectUri,
Scope = "openid profile",
ResponseType = "id_token",
TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = false, NameClaimType = "name" },
Notifications = new OpenIdConnectAuthenticationNotifications
{
AuthenticationFailed = this.OnAuthenticationFailedAsync,
SecurityTokenValidated = this.OnSecurityTokenValidatedAsync
}
});
ConfidentialClientApplication daemonClient = new ConfidentialClientApplication(Startup.clientId, string.Format(AuthorityFormat, tenantId), Startup.redirectUri,
new ClientCredential(Startup.clientSecret), null, appTokenCache.GetMsalCacheInstance());
AuthenticationResult authResult = await daemonClient.AcquireTokenForClientAsync(new[] { MSGraphScope });
Затем мы можем использовать этот токен доступа для использования API-интерфейсов Graph.
Для получения более подробной информации можно обратиться к примеру демона v2.0. на GitHub.