Консольное приложение Microsoft Graph - авторизация через ADAL
У меня есть консольное приложение, в котором пользователь в настоящее время должен нажать "Войти", чтобы получить токен для приложения Microsoft Graph.
Можно ли сделать это "автоматическим входом"?
Я вижу, что метод AcquireTokenAsync имеет несколько перегрузок:
public static string GetAccessToken()
{
// Create the authentication context (ADAL)
var authenticationContext = new AuthenticationContext(Authority);
var authenticationResult = authenticationContext.AcquireTokenAsync(GraphResource,
ClientId, RedirectUri, new PlatformParameters(PromptBehavior.Auto, true));
var accessToken = authenticationResult.Result.AccessToken;
return accessToken;
}
Я не могу создать клиентский секрет для собственного приложения, которое делает невозможным использование этих альтернативных перегрузок.
Можно ли сделать журнал приложений сам по себе?
2 ответа
Если вы посмотрите на официальные образцы Azure SDK, даже Microsoft вроде бы признает, что их решения иногда бывают ужасными:
Введите понятное имя для приложения, например "TodoListDaemon", и выберите "Веб-приложение и / или Веб-API" в качестве типа приложения. Поскольку это приложение является демоном, а не веб-приложением, у него нет URL-адреса для входа, поэтому для этого поля просто введите " http://todolistdaemon/".
Таким образом, в качестве ярлыка для документов, используйте перегрузку, которая запрашивает ClientCredential
:
var authenticationResult = await authContext.AcquireTokenAsync(todoListResourceId, clientCredential);
Другой способ - использовать объект userpasswordcredential, который унаследован от usercredential, и использовать метод acqutoken для получения токена, что избавляет от необходимости подписывать аутентификацию. Очевидно, что это не так безопасно, как метод демона, описанный в другом ответе.