Build & Release MSI / build-msi (push) Canceled after 0s
- docs/App-Registration.md: alle benoetigten Graph-Berechtigungen (Kern, Geraete-Tab, Read-Only) + Auth-Konfiguration - docs/Setup-AppRegistration.ps1: legt die App-Registrierung automatisch an (Rechte, Public-Client-Flow, Redirect-URIs, optional Admin-Consent); Berechtigungs-IDs werden live aufgeloest - README/CHANGELOG verlinkt, ToolVersion + build-local auf 0.1.27 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
131 lines
5.6 KiB
Markdown
131 lines
5.6 KiB
Markdown
# App-Registrierung & Berechtigungen
|
|
|
|
Der Intune Manager meldet sich als **delegierte** Anwendung an (Device-Code- bzw.
|
|
WAM-Login) — er handelt also immer **im Namen des angemeldeten Admins**, nie mit
|
|
Anwendungsrechten. Die App-Registrierung braucht daher **delegierte
|
|
Microsoft-Graph-Berechtigungen** plus die passende Authentifizierungs-Konfiguration.
|
|
|
|
> **Schnellweg:** Statt alles von Hand zu klicken, legt das Skript
|
|
> [`Setup-AppRegistration.ps1`](Setup-AppRegistration.ps1) die Registrierung
|
|
> komplett an (Rechte + Public-Client-Flow + Redirect-URIs + optional Consent).
|
|
> Siehe [Automatische Einrichtung](#automatische-einrichtung).
|
|
|
|
---
|
|
|
|
## Benötigte Berechtigungen
|
|
|
|
Alle Berechtigungen sind vom Typ **Delegiert** (Microsoft Graph).
|
|
|
|
### Kern (immer erforderlich)
|
|
|
|
| Berechtigung | Wofür |
|
|
|---|---|
|
|
| `Group.ReadWrite.All` | Gruppen anlegen, App-/Policy-Zuweisungen setzen |
|
|
| `GroupMember.ReadWrite.All` | Gruppenmitglieder lesen/hinzufügen/entfernen, CSV-Import |
|
|
| `User.Read.All` | Benutzersuche, UPN-Auflösung |
|
|
| `DeviceManagementApps.ReadWrite.All` | Apps auflisten, zuweisen, umbenennen, löschen, Setup-Datei aktualisieren, App-Report |
|
|
| `DeviceManagementConfiguration.ReadWrite.All` | Policies (Settings Catalog, Compliance, Konfigurationsprofile, Administrative Vorlagen) lesen, exportieren, importieren, zuweisen |
|
|
| `offline_access` | Refresh-Token (Device-Code-Flow) |
|
|
|
|
> `DeviceManagementConfiguration.ReadWrite.All` wird vom Tool automatisch zur
|
|
> Verbindung ergänzt — die App-Registrierung muss die Berechtigung aber besitzen
|
|
> und (Admin-)zugestimmt bekommen haben, sonst schlägt der Policy-Import mit
|
|
> `403 Forbidden` fehl.
|
|
|
|
### Geräte-Tab (optional)
|
|
|
|
Nur nötig, wenn der **Geräte-Tab** (Sync/Reboot/Lock/Diagnose/Wipe/Retire) genutzt wird:
|
|
|
|
| Berechtigung | Wofür |
|
|
|---|---|
|
|
| `DeviceManagementManagedDevices.Read.All` | Geräte auflisten und Details anzeigen |
|
|
| `DeviceManagementManagedDevices.ReadWrite.All` | Sync, Neustart, Remote-Lock, Diagnose, BitLocker-Key-Rotation |
|
|
| `DeviceManagementManagedDevices.PrivilegedOperations.All` | Wipe, Retire, Autopilot-Reset |
|
|
|
|
### Read-Only-Variante
|
|
|
|
Für eine reine Anzeige-App (im Tool als `clientIdRo` hinterlegbar) genügen die
|
|
`*.Read.All`-Pendants:
|
|
|
|
`Group.Read.All`, `GroupMember.Read.All`, `User.Read.All`,
|
|
`DeviceManagementApps.Read.All`, `DeviceManagementConfiguration.Read.All`,
|
|
`offline_access` (+ optional `DeviceManagementManagedDevices.Read.All`).
|
|
|
|
---
|
|
|
|
## Authentifizierungs-Konfiguration
|
|
|
|
Zusätzlich zu den Berechtigungen muss die App als **öffentlicher Client** nutzbar
|
|
sein — sonst scheitert der erste Login (`AADSTS500113` bzw. `AADSTS50011`):
|
|
|
|
1. **Öffentliche Clientflows zulassen** → **Ja**
|
|
(Entra → App-Registrierung → *Authentifizierung* → ganz unten;
|
|
im Manifest `isFallbackPublicClient = true`).
|
|
2. **Redirect-URIs** unter *Mobilgerät- und Desktopanwendungen*:
|
|
```
|
|
https://login.microsoftonline.com/common/oauth2/nativeclient
|
|
ms-appx-web://Microsoft.AAD.BrokerPlugin/<CLIENT-ID>
|
|
```
|
|
- Zeile 1 → **Device-Code-Flow**
|
|
- Zeile 2 → **WAM-Broker** (Windows-Anmeldefenster); `<CLIENT-ID>` ist die
|
|
AppId der Registrierung selbst.
|
|
3. **Multi-Tenant:** Wird dieselbe App gegen fremde Tenants genutzt, muss
|
|
`signInAudience` auf *Accounts in any organizational directory*
|
|
(`AzureADMultipleOrgs`) stehen und im Ziel-Tenant per Admin-Consent
|
|
bereitgestellt werden. Bei einer eigenen App **pro** Tenant ist Single-Tenant
|
|
ausreichend.
|
|
|
|
---
|
|
|
|
## Automatische Einrichtung
|
|
|
|
Das Skript [`Setup-AppRegistration.ps1`](Setup-AppRegistration.ps1) erledigt alles
|
|
oben Genannte über Microsoft Graph. Es braucht nur das Modul
|
|
`Microsoft.Graph.Authentication` (dieselbe Abhängigkeit wie das Tool) und löst die
|
|
Berechtigungs-IDs **live** aus dem Graph-Service-Principal auf — keine fest
|
|
verdrahteten GUIDs.
|
|
|
|
```powershell
|
|
# Einmalig:
|
|
Install-Module Microsoft.Graph.Authentication -Scope CurrentUser
|
|
|
|
# Neue Single-Tenant-App inkl. Admin-Consent:
|
|
.\docs\Setup-AppRegistration.ps1 -GrantAdminConsent
|
|
|
|
# Mit Geräte-Rechten:
|
|
.\docs\Setup-AppRegistration.ps1 -IncludeDeviceActions -GrantAdminConsent
|
|
|
|
# Multi-Tenant-App:
|
|
.\docs\Setup-AppRegistration.ps1 -MultiTenant -GrantAdminConsent
|
|
|
|
# Bestehende App nur um Rechte/Redirect-URIs ergänzen:
|
|
.\docs\Setup-AppRegistration.ps1 -ClientId "<APP-ID>" -GrantAdminConsent
|
|
|
|
# Nur das Manifest-Snippet ausgeben (ohne etwas anzulegen wäre -WhatIf-artig —
|
|
# hier zusätzlich zum Anlegen):
|
|
.\docs\Setup-AppRegistration.ps1 -EmitManifest
|
|
```
|
|
|
|
Am Ende gibt das Skript **Tenant ID** und **Client ID** aus — diese Werte im
|
|
Intune Manager unter *Einstellungen → Verbindung* (bzw. im Tenant-Profil)
|
|
eintragen.
|
|
|
|
Die zum Anlegen/Ändern nötigen Admin-Rechte (`Application.ReadWrite.All`, für
|
|
Consent zusätzlich `DelegatedPermissionGrant.ReadWrite.All`) werden beim
|
|
`Connect-MgGraph`-Aufruf des Skripts einmalig abgefragt.
|
|
|
|
---
|
|
|
|
## Manuelle Einrichtung (Portal)
|
|
|
|
1. **Entra** → *App-Registrierungen* → *Neue Registrierung* → Name vergeben,
|
|
Kontotyp wählen (Single- oder Multi-Tenant) → **Registrieren**.
|
|
2. *API-Berechtigungen* → *Berechtigung hinzufügen* → **Microsoft Graph** →
|
|
**Delegierte Berechtigungen** → die [Kern-Berechtigungen](#kern-immer-erforderlich)
|
|
(und bei Bedarf die [Geräte-Berechtigungen](#geräte-tab-optional)) auswählen →
|
|
**Administratorzustimmung erteilen**.
|
|
3. *Authentifizierung* → [Authentifizierungs-Konfiguration](#authentifizierungs-konfiguration)
|
|
wie oben setzen (Public-Client-Flow + beide Redirect-URIs).
|
|
4. **Übersichtsseite**: *Anwendungs-(Client-)ID* und *Verzeichnis-(Mandanten-)ID*
|
|
in den Intune Manager übernehmen.
|