Sto creando un'app che verrà eseguita come servizio automatico senza alcuna interazione da parte dell'utente per elaborare la connessione a una cassetta postale e elaborare le email (scaricare allegati, spostare le email in una cartella "elaborata", ecc.). Durante la lettura delle opzioni di autenticazione di Exchange Web Services (EWS), vedo che supporta sia l'autenticazione OAuth che Basic. (vedi EWS Auth) . I vantaggi elencati per oAuth sono che si rischia solo di esporre un token di autenticazione temporaneo per l'utente e non le credenziali dell'utente. Tuttavia, AFAIK si applica solo alle app che implicano l'interazione dell'utente, perché per connettersi utilizzando oAuth da un account di servizio senza alcuna interazione dell'utente, è necessario utilizzare le credenziali dell'applicazione (e quelle credenziali dell'applicazione devono essere memorizzate nella configurazione dell'app o in un altro luogo), quindi è necessario concedere all'applicazione l'accesso completo all'account di posta elettronica di ogni utente tramite le autorizzazioni di registrazione dell'applicazione Azure AD, altrimenti richiederebbe l'interazione dell'utente durante il processo di accesso oAuth. La sezione dell'autenticazione di base dell'articolo fa sembrare che questo sarebbe usato solo a scopo dimostrativo e non in scenari di produzione.
Se dovessi usare oAuth, allora avrei bisogno di utilizzare il tipo di concessione delle credenziali client OAuth 2.0 menzionato qui: Daemon Auth .
For the scenario when a daemon application needs to call a web API, it’s important to understand a few things. First, user interaction is not possible with a daemon application, which requires the application to have its own identity. An example of a daemon application is a batch job, or an operating system service running in the background. This type of application requests an access token by using its application identity and presenting its Application ID, credential (password or certificate), and application ID URI to Azure AD. After successful authentication, the daemon receives an access token from Azure AD, which is then used to call the web API.
In questo caso l'autenticazione di base non è un'opzione migliore, con un account di servizio dedicato per una casella di posta, in cui tale account viene utilizzato solo per questa cassetta postale? Ciò sembra molto più sicuro dell'utilizzo della rotta di autenticazione oAuth, perché se le credenziali sono compromesse, l'utente malintenzionato ha accesso solo a una singola cassetta postale dell'account di servizio e non all'intera posta dell'azienda tramite l'ID client dell'applicazione e il segreto dell'app.
Mi manca qualcosa?