Получите разрешение делегирования в MSAL для EWS без PublicClientApplicationBuilder и AcquireTokenInteractive - PullRequest
0 голосов
/ 03 апреля 2020

В потоке OWuth EWS мы можем получить права делегирования следующим образом:

var pcaOptions = new PublicClientApplicationOptions
{
    ClientId = ConfigurationManager.AppSettings["appId"],
    TenantId = ConfigurationManager.AppSettings["tenantId"]
};

var pca = PublicClientApplicationBuilder
    .CreateWithApplicationOptions(pcaOptions).Build();

// The permission scope required for EWS access
var ewsScopes = new string[] { "https://outlook.office.com/EWS.AccessAsUser.All" };

// Make the interactive token request
var authResult = await pca.AcquireTokenInteractive(ewsScopes).ExecuteAsync();

Над кодом открывается диалоговое окно для ввода имени пользователя / пароля.

Есть ли способ обойти диалоговое окно и маркер запроса путем предоставления учетных данных в самом коде, но только с делегированными разрешениями

1 Ответ

0 голосов
/ 06 апреля 2020

Да, вы говорите о ROP C https://docs.microsoft.com/en-us/azure/active-directory//develop/v2-oauth-ropc. Использование учетных данных таким способом, как правило, не рекомендуется из-за проблемы доверия при обработке учетных данных напрямую. Единственное, что вам нужно убедиться, это то, что при регистрации приложения вы

рассматриваете приложение как клиент * publi c.

Выберите в теге аутентификации ( в самом низу)

Код смотрите на https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/wiki/Username-Password-Authentication например

NetworkCredential Credentials =  new NetworkCredential(UserName,Password); 
pca.AcquireTokenByUsernamePassword(ewsScopes,Credentials.UserName, Credentials.SecurePassword).ExecuteAsync();

Если вы ищете более безопасный способ, подумайте об использовании управляемых удостоверений https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/overview

...