# Microsoft 365: připojení schránek

Aby asistent mohl číst poštu v Microsoft 365 a zakládat v ní koncepty,
potřebuje přístup přes Microsoft Graph. Jde to dvěma cestami a obě stojí na
**aplikaci, kterou si organizace zaregistruje ve svém Microsoft Entra ID**.
draften nemá společnou aplikaci, které byste jen udělili souhlas. Platí to pro
naši službu i pro instalaci na vlastním serveru.

## Kterou cestu zvolit

| | Za celou organizaci | Účtem schránky |
|---|---|---|
| V draftenu | registrace aplikace v Organizace → **Integrace** | tlačítko **Připojit Outlook** u schránky |
| Oprávnění v Entra | aplikační (Application) | delegovaná (Delegated) |
| Kdo se musí přihlásit | nikdo | vlastník každé schránky, jednou |
| Na které schránky dosáhne | na všechny schránky adresáře (jde zúžit) | jen na schránku, jejíž účet se přihlásil |
| Sdílené schránky (info@, obchod@) | ano | ne — sdílená schránka nemá vlastní přihlášení |
| Když člověk z firmy odejde | nic se nemění | po zablokování jeho účtu se schránka odpojí |
| Přihlašování do draftenu účtem Microsoft | ne, to je samostatná věc | táž registrace slouží i k přihlášení |

Pro organizaci s víc schránkami je jednodušší **cesta za celou organizaci**:
správce ji nastaví jednou a vlastníci schránek nic nedělají. **Účtem schránky**
se hodí, když nechcete aplikaci dát přístup ke všem schránkám adresáře, nebo
když stejně zavádíte přihlašování účtem Microsoft.

Obě cesty můžete mít zároveň; každá schránka používá jednu z nich.

!> Aplikaci **nikdy nedávejte oprávnění `Mail.Send`**. draften nic neodesílá
a bez toho oprávnění to ani nedokáže — to je smysl.

## Cesta A: za celou organizaci

Potřebujete účet s rolí **globální správce** nebo **správce privilegovaných
rolí** — jen ten udělí souhlas s aplikačními oprávněními Microsoft Graph.
Registraci samotnou může založit i správce aplikací.

### V Microsoft Entra

1. Otevřete https://entra.microsoft.com → **Identity** → **Applications** →
   **App registrations** → **New registration**.
2. Vyplňte název, třeba `draften – pošta`, zvolte **Accounts in this
   organizational directory only**, **Redirect URI nechte prázdné** a klikněte
   na **Register**.
3. Na stránce **Overview** si opište **Application (client) ID** a **Directory
   (tenant) ID**.
4. **Certificates & secrets** → **Client secrets** → **New client secret**:
   popis (třeba `draften`) a platnost, nejvýš 24 měsíců. Po uložení si hned
   zkopírujte sloupec **Value** — ukáže se jen teď. **Secret ID** draften
   nepotřebuje. Poznamenejte si i datum vypršení.
5. **API permissions** → **Add a permission** → **Microsoft Graph** →
   **Application permissions**. Zaškrtněte `Mail.ReadWrite`
   a `MailboxSettings.ReadWrite` a klikněte na **Add permissions**.
   `MailboxSettings.ReadWrite` slouží jen k barvě kategorie v Outlooku; bez něj
   se kategorie přidá bez barvy. Volitelně přidejte `User.Read.All` — draften
   s ním ověří aliasy schránky, bez něj test spojení u aliasů napíše, že je
   ověřit nemůže.
6. Klikněte na **Grant admin consent for …** a potvrďte. U všech řádků musí
   být zelená fajfka.

### V draftenu

1. Otevřete Organizace → **Integrace**, kartu **Přístup k poště pro celou
   organizaci**. Registrace spravuje vlastník nebo správce organizace.
2. **Systém**: **Microsoft 365 (Entra)**. Vyplňte **Název**, **Directory
   (tenant) ID**, **Application (client) ID**, **Client secret** (hodnotu
   z kroku 4, ne jeho ID) a **Secret vyprší**. Klikněte na **Přidat
   registraci**. Secret se uloží zašifrovaný a už se nezobrazí.
3. Registrace sama nic nepřipojí. Na stránce každé schránky v kartě
   **Přístup k poště** vyberte u **Použít** tuto registraci, klikněte na
   **Nastavit** a pak na **Otestovat spojení**. Výběr vidí jen ten, kdo je
   zároveň vlastníkem schránky a vlastníkem nebo správcem organizace
   (vlastník organizace je vlastníkem všech schránek). Celý postup se snímky
   ukazuje návod [Přidání a připojení schránky](/cs/admin/adding-a-mailbox).

Se zapnutou **automatickou schránkou** ([Přihlašování
členů](/cs/admin/member-sign-in)) se nová schránka na registraci naváže sama,
když je pro Microsoft 365 právě jedna aktivní.

### Zúžení na vybrané schránky (volitelné)

Aplikační oprávnění dosáhne na všechny schránky adresáře; hlídá to draften
(člen nemůže přidat schránku, asistent nic neodesílá ani nemaže). Kdo chce
i technický plot, zúží aplikaci na bezpečnostní skupinu zásadou
`ApplicationAccessPolicy` v Exchange Online (PowerShell s modulem
ExchangeOnlineManagement):

```
Connect-ExchangeOnline -UserPrincipalName admin@<tenant>.onmicrosoft.com
New-DistributionGroup -Name "draften - povolené schránky" -Alias draften-schranky -Type Security -Members schranka@firma.cz
New-ApplicationAccessPolicy -AppId <Application (client) ID> -PolicyScopeGroupId draften-schranky@firma.cz -AccessRight RestrictAccess -Description "draften: jen povolené schránky"
Test-ApplicationAccessPolicy -Identity schranka@firma.cz -AppId <Application (client) ID>
```

Každou další schránku pak přidejte i do skupiny, jinak test spojení skončí
chybou 403 (`AppOnly AccessPolicy`). Zásada se projeví obvykle do hodiny;
viděli jsme i čtyři hodiny. Microsoft nabízí jako novější alternativu
**RBAC for Applications** v Exchange Online; ten zatím nepopisujeme.

### Výměna secretu

Secret má omezenou platnost a draften o jeho konci neposílá žádné
upozornění — datum v kartě zežloutne 30 dní před vypršením a po něm
zčervená. Dejte si připomínku do kalendáře. Před vypršením:

1. V Entra u registrace vytvořte nový client secret (krok 4 výše).
2. V draftenu u registrace zvolte **Nový secret**, vložte novou hodnotu
   a nové datum.
3. Starý secret v Entra smažte.

Když secret vyprší dřív, schránky se odpojí (`invalid_client`) a asistenti
je přeskakují. Po výměně secretu spusťte u schránek **Otestovat spojení** —
úspěšný test schránku zase zapne.

## Cesta B: účtem schránky (Připojit Outlook)

Tahle registrace má **delegovaná** oprávnění: aplikace smí jen to, co smí
přihlášený člověk, a jen do jeho vlastní schránky. Tatáž registrace slouží
i k **přihlašování do draftenu účtem Microsoft**. Od registrace pro cestu A ji
držte odděleně.

### V Microsoft Entra

1. V draftenu si nejdřív otevřete Organizace → **Přihlašování členů**, kartu
   **Přihlášení účtem a připojení schránek**. Ukazuje dvě **redirect URI**
   přesně pro vaši adresu draftenu — končí na `/auth/callback`
   a `/mailboxes/connect/callback`. Zkopírujte je odtud; musí sedět znak po
   znaku.
2. V https://entra.microsoft.com → **App registrations** → **New
   registration**: název třeba `draften – přihlášení`, **Accounts in this
   organizational directory only**, **Redirect URI**: platforma **Web**
   a první adresa z karty. Klikněte na **Register**.
3. **Authentication** → u platformy Web **Add URI** → druhá adresa z karty →
   **Save**.
4. Na **Overview** si opište **Application (client) ID** a **Directory
   (tenant) ID**.
5. **Certificates & secrets** → **New client secret** → zkopírujte **Value**
   a poznamenejte si datum vypršení.
6. **API permissions** → **Add a permission** → **Microsoft Graph** →
   **Delegated permissions**: `openid`, `profile`, `email`, `offline_access`,
   `User.Read`, `Mail.ReadWrite` a `MailboxSettings.ReadWrite`.
   Bez `offline_access` připojení nevydrží — draften by nedostal obnovovací
   token.
7. Klikněte na **Grant admin consent for …**. Kdyby vaše organizace
   zakazovala uživatelům souhlasit s aplikacemi, bez tohoto kroku by
   připojení skončilo hláškou, že byl souhlas odmítnut.

### V draftenu

1. **Vlastník organizace** v kartě **Přihlášení účtem a připojení schránek**
   vyplní u **Entra registrace pro přihlášení přes Microsoft a připojení
   Outlooku** hodnoty **Application (client) ID** a **Client secret**
   a klikne na **Uložit**.
2. **Vlastník schránky** otevře stránku schránky a v kartě **Přístup
   k poště** klikne na **Připojit Outlook**. Přihlásí se **účtem té schránky**
   — jiný účet draften odmítne — a povolí přístup. Tlačítko vidí jen vlastník
   schránky, a jen když organizace registraci má.
3. Pak **Otestovat spojení**.

**Přihlašování účtem Microsoft** zapnete na téže stránce: do **ID adresáře
Microsoft (Entra)** vložte Directory (tenant) ID. Jakmile má organizace
registraci i ID adresáře, členové se přihlašují účtem Microsoft a jejich hesla
přestanou platit — viz [Přihlašování členů](/cs/admin/member-sign-in).

### Když se schránka odpojí

- **Vypršel secret registrace** — vytvořte v Entra nový, v kartě Přihlášení
  účtem a připojení schránek ho uložte a u schránek klikněte na **Znovu
  připojit Outlook**.
- **Člověk odešel nebo mu byl zablokován účet** — Microsoft přestane vydávat
  tokeny a draften schránku odpojí. Schránku bez vlastního přihlášení
  připojte cestou A.
- **„Poskytovatel nevydal obnovovací token“** — registraci chybí oprávnění
  `offline_access` (krok 6).
- **„Přihlásil se jiný účet, než je adresa schránky“** — při připojení se
  přihlaste účtem právě té schránky; kdo má v prohlížeči víc účtů Microsoft,
  vybere ten správný.

## Chyby testu spojení

Test ověří tři kroky: **Přístup**, **Token a oprávnění** a **Čtení Inboxu**.
U každého je fajfka, nebo křížek s důvodem:

| V hlášce | Co to znamená | Co udělat |
|---|---|---|
| `AADSTS7000215`, `AADSTS7000222`, `invalid_client` | špatný nebo prošlý client secret | vytvořit nový secret a uložit ho v draftenu |
| `AADSTS700016`, `AADSTS90002`, `unauthorized_client` | špatné Application ID nebo Directory ID | opsat obě ID znovu z Overview |
| `AADSTS65001`, `AADSTS650057`, `consent_required` | chybí souhlas správce | **Grant admin consent** u registrace |
| token bez `Mail.ReadWrite` | oprávnění chybí nebo není odsouhlasené | přidat oprávnění a udělit souhlas |
| `invalid_grant`, `AADSTS50173`, `AADSTS700082`, `AADSTS70008` | připojení účtem vypršelo nebo bylo odvoláno | **Znovu připojit Outlook** |
| HTTP 403 `AppOnly AccessPolicy` | schránka není ve skupině zásady přístupu | přidat ji do skupiny a počkat |
| HTTP 404 | taková schránka neexistuje | zkontrolovat adresu; schránka musí mít Exchange Online |
| HTTP 401 | jiný adresář, nebo chybí oprávnění | zkontrolovat Directory ID a oprávnění |

Další chyby popisuje [Řešení potíží](/cs/admin/troubleshooting).
