Office 365 SMTP s OAuth2 (client credentials)

Office 365 SMTP s OAuth2 (client credentials)

Tato stránka popisuje nastavení odesílání e-mailů přes Office 365 SMTP s autentizací OAuth2 ve flow client credentials. Postup je určen pro administrátory Microsoft Entra ID a Exchange Online, kteří konfigurují automatizované odesílání e-mailů z aplikace bez interaktivního přihlášení uživatele.

1. Kontext infrastruktury

Při použití flow client_credentials běží vaše aplikace na pozadí jako automatizovaný proces bez interakce uživatele a bez interaktivní webové relace. Protože kontexty na úrovni aplikace (daemon) tradičně umožňují široká administrátorská oprávnění, Microsoft vynucuje granulární architekturu Zero Trust pro ochranu firemních zdrojů.

  • Definice identity aplikace – Registrace aplikace v Azure definuje digitální identitu vaší aplikace v tenantu Microsoft Entra ID.

  • Zrcadlení v Exchange – Izolovaný Exchange Service Principal reprezentuje tuto identitu přímo v databázovém enginu Exchange.

  • Granulární izolace – Omezená Access Control Policy omezuje aplikaci pouze na vybrané poštovní schránky a snižuje riziko kompromitace celého tenantu.

2. Registrace aplikace v Azure

Krok 2.1: Registrace aplikace

  1. Přihlaste se do Microsoft Entra admin centra jako Application Administrator nebo Global Administrator.

  2. Rozbalte Identity > Applications > App registrations a klikněte na + New registration.

  3. Nastavte Name (např. „SMTP Mailer Service“) a zvolte Accounts in this organizational directory only (Single tenant).

  4. Pole Redirect URI ponechte prázdné a klikněte na Register.

Krok 2.2: Získání přihlašovacích údajů platformy

Na stránce přehledu aplikace (Overview) zkopírujte a bezpečně uložte hodnoty Application (client) ID a Directory (tenant) ID.

Krok 2.3: Vytvoření klientského tajemství

  1. Přejděte na Certificates & secrets > záložka Client secrets a klikněte na + New client secret.

  2. Zadejte popis a dobu platnosti podle interní politiky a klikněte na Add.

Důležité: Hodnotu ze sloupce Value zkopírujte okamžitě. Po obnovení stránky zůstane klíč trvale maskovaný a nebude možné ho znovu zobrazit.

Krok 2.4: Nastavení API oprávnění pro daemon

  1. Přejděte na API permissions > + Add a permission.

  2. Na záložce APIs my organization uses vyhledejte „Office 365 Exchange Online“ a vyberte ho.

  3. Zvolte Application permissions (oprávnění pro běh na pozadí bez aktivní relace uživatele).

  4. Rozbalte menu Exchange, vyhledejte a zaškrtněte Exchange.ManageAsApp.

  5. Klikněte na Add permissions.

Krok 2.5: Udělení administrátorského souhlasu

  1. Na stránce API permissions klikněte na Grant admin consent for [Tenant Name].

  2. Potvrďte dialog. Ověřte, že stav oprávnění se změní na zelenou fajfku se stavem Granted.

3. Exchange Online RBAC a mapování SMTP zabezpečení

Důležité – Object ID: Registrace aplikace vytváří dvě odlišné entity: App Registration Object (šablonu architektury) a Enterprise Application Object (aktivní instanci Service Principal v tenantu). Příkaz Exchange Online New-ServicePrincipal vyžaduje Object ID enterprise aplikace. Použití Object ID z registrace aplikace způsobí chyby mapování autentizace.

Kde Object ID najít: V Entra Admin Center nepoužívejte „App registrations“. Přejděte na Identity > Applications > Enterprise applications, vyhledejte název aplikace, otevřete ji a zkopírujte Object ID ze stránky Overview.

Krok 3.1: Příprava administrátorského prostředí

# Instalace oficiálního modulu pro správu Exchange Online Install-Module -Name ExchangeOnlineManagement -Force -AllowClobber # Import cmdletů do aktuální relace Import-Module ExchangeOnlineManagement # Připojení interaktivní administrátorské relace Connect-ExchangeOnline -UserPrincipalName admin@yourdomain.com

Krok 3.2: Synchronizace a vytvoření Service Principal

# -AppId: Client ID z přehledu registrace aplikace # -ObjectId: Object ID enterprise aplikace (viz výše) New-ServicePrincipal -AppId "YOUR_APPLICATION_CLIENT_ID" -ObjectId "YOUR_ENTERPRISE_APP_OBJECT_ID" -DisplayName "SMTP Mailer Daemon Service"

Krok 3.3: Přiřazení oprávnění RBAC k cílové poštovní schránce

# Granulární přístup k automatizované odesílací schránce Add-MailboxPermission -Identity "automation@yourdomain.com" -User "YOUR_APPLICATION_CLIENT_ID" -AccessRights FullAccess -InheritanceType All

4. Konfigurace poštovní schránky: požadavek SMTP AUTH

I při použití moderní autentizace OAuth2 místo základní (legacy) autentizace Microsoft stále klasifikuje odchozí provoz přes port 587 jako Authenticated Client SMTP Submission. Pokud je pro danou poštovní schránku vypnuté SMTP AUTH, Microsoft odmítne token chybou 535 5.7.3 Authentication unsuccessful. Nastavení na úrovni schránky přepisuje výchozí omezení tenantu.

Varianta A: Konfigurace přes Exchange Online PowerShell (doporučeno)

# Kontrola aktuálního stavu (True = blokováno, False = povoleno) Get-CASMailbox -Identity "automation@yourdomain.com" | Select SmtpClientAuthenticationDisabled # Explicitní povolení SMTP odesílání pro danou identitu Set-CASMailbox -Identity "automation@yourdomain.com" -SmtpClientAuthenticationDisabled $false

Varianta B: Konfigurace přes Microsoft 365 Admin Center

  1. Otevřete Microsoft 365 Admin Center.

  2. Přejděte na Users > Active users a vyhledejte odesílací účet.

  3. Otevřete vlastnosti účtu, záložku Mail a klikněte na Manage email apps.

  4. Zaškrtněte položku Authenticated SMTP.

  5. Uložte změny.

5. Kontrolní seznam konfigurace

Pro nastavení mailového klienta v aplikaci použijte následující hodnoty:

Parametr

Hodnota

Parametr

Hodnota

SMTP hostname (Host)

smtp.office365.com

Síťový port (Port)

587

Zabezpečení spojení

STARTTLS (explicitní TLS)

OAuth token scope

https://outlook.office.com/.default

Po dokončení nastavení v Azure a Exchange Online doplňte odpovídající údaje v Konfiguraci mailového klienta a ověřte odeslání pomocí akce Odeslat testovací email.