{"id":944,"date":"2025-03-03T18:10:17","date_gmt":"2025-03-03T17:10:17","guid":{"rendered":"https:\/\/sparrow365.de\/?p=944"},"modified":"2025-04-20T22:53:05","modified_gmt":"2025-04-20T20:53:05","slug":"eigene-m365-terms-of-use-teil-2-entra-apps","status":"publish","type":"post","link":"https:\/\/sparrow365.de\/index.php\/2025\/03\/03\/eigene-m365-terms-of-use-teil-2-entra-apps\/","title":{"rendered":"Eigene M365 Terms of Use Teil 2: Entra Apps"},"content":{"rendered":"<p><a href=\"https:\/\/sparrow365.de\/index.php\/2024\/12\/31\/eigene-m365-terms-of-use-teil-1-tenantweite-einstellungen\/\">Im letzten Teil<\/a> haben wir die Tenantweit g\u00fcltigen <strong>&quot;Terms of Use&quot; (ToU)<\/strong> gesetzt, in diesem Teil geht es an die L\u00f6sungen f\u00fcr Applikationen die mit Entra verbunden werden. Zwar sind <strong>Conditional Access ToU<\/strong> oft eine gute L\u00f6sung. Doch selbst mit der erforderlichen Entra ID P1-Lizenz st\u00f6\u00dft man schnell an die Grenzen der 40 m\u00f6glichen ToU, wenn man f\u00fcr jede Applikation eine eigene Richtlinie definieren m\u00f6chte.    <\/p>\n<p><a href=\"https:\/\/learn.microsoft.com\/en-us\/entra\/identity\/users\/directory-service-limits-restrictions\"><img decoding=\"async\" style=\"max-height:100px;\" src=\"https:\/\/sparrow365.de\/wp-content\/uploads\/2025\/03\/2_TenantLimitations.png\" alt=\"TenantLimitations\" ><\/a><\/p>\n<p>Oder man hat auch die Probleme in non-persistent VDI Umgebungen gefunden und sucht Alternativen.<\/p>\n<p>Werfen wir also einen Blick auf die Optionen, die wirklich f\u00fcr einzelne Applikationen gedacht sind.<\/p>\n<p><br class=\"\"><\/p>\n<h2>Enterprise Applikationen<\/h2>\n<div class=\"imageflex\" style=\"display: flex;\">\n  <img decoding=\"async\" src=\"https:\/\/learn.microsoft.com\/de-de\/entra\/identity-platform\/media\/application-consent-experience\/consent_prompt_1a.png\" height=\"400px\"><\/p>\n<p class=\"imageflexcontent\" style=\"margin-left:5px; margin-top:0;\">\n  Enterprise-Applikationen sind, sehr vereinfacht gesagt, die Login-Schnittstellen einer Applikation zu Entra. Wenn hier noch nie Hand angelegt wurde, erlauben ihre Benutzer sehr wahrscheinlich bereits 3rd Party Applikationen Zugriff auf Unternehmensdaten, unter den Terms of Use der Entwickler.<br \/>\n  <br class=\"\"><br \/>\n     <br class=\"\"><br \/>\n   Dieses Genehmigen des Zugangs zu Daten im eigenen Namen nennt sich <b>user consent<\/b><br \/>\n   <br class=\"\"><br \/>\n     <br class=\"\"><br \/>\n   Das Bild links d\u00fcrfte bekannt sein \u2013 es zeigt einen solchen Consent Request.<br \/>\n   <br class=\"\"><br \/>\n   <a href=\"https:\/\/learn.microsoft.com\/en-us\/entra\/identity-platform\/application-consent-experience#app-requires-a-permission-that-the-user-has-the-right-to-grant\">Quelle: Microsoft<\/a><\/p>\n<\/div>\n<p><br class=\"\"><\/p>\n<p>Ich gehe an dieser Stelle einfach mal davon aus, dass der Tenant nur Benutzerconsent f\u00fcr eigene Applikationen bzw. unkritische Rechte erlaubt.<\/p>\n<p><img decoding=\"async\" style=\"max-height:300px;\" src=\"https:\/\/sparrow365.de\/wp-content\/uploads\/2025\/03\/0_ConsentAndPermissionSettings.webp\" alt=\"AdminCenterRestriktionaufUserconsent\" ><\/p>\n<blockquote>\n<p>\u26a0\ufe0f <em>Achtung: Diese Einstellung ist zwar Empfohlen, <a href=\"https:\/\/entra.microsoft.com\/#view\/Microsoft_AAD_IAM\/ConsentPoliciesMenuBlade\/~\/UserSettings\">aber leider nicht Default!<\/a><\/em> \u26a0\ufe0f<\/p>\n<\/blockquote>\n<p><br class=\"\"><\/p>\n<p>Es ist jedoch wichtig, dass Benutzern der User Consent nicht vollst\u00e4ndig verwehrt wird. Sonst gibt es f\u00fcr Applikationen nur eine Best\u00e4tigung auf Umgebungsebene durch einen Administrator.<\/p>\n<p>Das wollen wir in diesem Fall vermeiden \u2013 stattdessen soll der Benutzer &quot;bewusst&quot; sein Einverst\u00e4ndnis geben.<\/p>\n<hr \/>\n<h3>Multi-Tenant Applikationen<\/h3>\n<p>Eine Multi-Tenant-Applikation erlaubt es anderen Organisationen, einen \u201aAbleger\u2018 in ihrem Tenant zu installieren und ihre eigenen Benutzerkonten, Berechtigungen und Conditional Access Richtlinien anwenden.<\/p>\n<p>Eine solche Applikation erkennt man im Admin Center in der App <strong>Registration<\/strong> daran, dass der abgebildete Button gesetzt ist:  <\/p>\n<p><img decoding=\"async\" style=\"max-height:150px;\" src=\"https:\/\/sparrow365.de\/wp-content\/uploads\/2025\/03\/0_1_1_tenantChoice-e1741003974995.webp\" alt=\"AdminCenterAPI\"><\/p>\n<p>In einer solchen App Registration kann und sollte man unter \u201aBranding &amp; Properties\u2018 die ToU und das Privacy Statement hinterlegen, die den Benutzern im Consent Request angezeigt werden und die sie explizit best\u00e4tigen m\u00fcssen.<\/p>\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><img decoding=\"async\" style=\"max-height:300px;\" src=\"https:\/\/sparrow365.de\/wp-content\/uploads\/2025\/03\/0_1_3_TemsOfUseSettings.webp\" alt=\"TermsOfUseInAdminCenter\" ><\/td>\n<td><img decoding=\"async\" style=\"max-height:400px;\" src=\"https:\/\/sparrow365.de\/wp-content\/uploads\/2025\/03\/0_1_ConsentRequest.png\" alt=\"EntraID Multi Tenant Application Consent Request\" ><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<blockquote>\n<p>\u26a0\ufe0f <em>Achtung: Dies funktioniert ausschlie\u00dflich bei Multi-Tenant Applikationen!<\/em> \u26a0\ufe0f<\/p>\n<\/blockquote>\n<p><strong>Ich rate dringend davon ab, nur um eigene ToUs pro Applikation hinterlegen zu k\u00f6nnen, eine Multi-Tenant-Applikation zu erstellen<\/strong>. Es gab bereits in der Vergangenheit erfolgreiche Attacken \u00fcber den Tenant\u00fcbergreifenden <code>common<\/code>-Token-Endpunkt, die nicht funktionierten, wenn die Applikation nur Tokens akzeptierte, die f\u00fcr die eigene Umgebung ausgestellt wurden.<\/p>\n<blockquote>\n<p><strong><a href=\"https:\/\/msrc.microsoft.com\/blog\/2023\/03\/guidance-on-potential-misconfiguration-of-authorization-of-multi-tenant-applications-that-use-azure-ad\/#guidance-on-securing-your-multi-tenant-applications-that-use-azure-ad\">Microsoft empfiehlt ebenfalls Single-Tenant-Applikationen, wo immer m\u00f6glich.<\/a><\/strong><br \/>\nHier sind einige F\u00e4lle, in denen Multi-Tenant-Applikationen anf\u00e4llig waren (und teilweise noch, Stand M\u00e4rz 2025, <strong>sind<\/strong>)::<\/p>\n<ul>\n<li>2023: <a href=\"https:\/\/www.wiz.io\/blog\/azure-active-directory-bing-misconfiguration\">BingBang<\/a> &#8211; Tempor\u00e4r konnten Benutzer aus beliebigen Tenants auf Azure-Services zugreifen, wenn diese als Multi-Tenant konfiguriert waren.<\/li>\n<li>2023: <a href=\"https:\/\/msrc.microsoft.com\/blog\/2023\/06\/potential-risk-of-privilege-escalation-in-azure-ad-applications\/#customer-impact\">nOAuth<\/a> &#8211; Emails sind nicht global eindeutig, werden aber von vielen Applikationen zur eindeutigen Authentifizierung genutzt. Allgemeine Fehlimplementierung von OAuth, die sich jedoch auf den eigenen Tenant beschr\u00e4nken l\u00e4sst und dadurch eine Ausnutzung unwahrscheinlicher macht.<\/li>\n<\/ul>\n<\/blockquote>\n<hr \/>\n<h3>Single-Tenant Applikationen<\/h3>\n<p>In Single-Tenant-Applikationen gibt es nur die M\u00f6glichkeit, den Consent f\u00fcr die Rechte einzuholen, es wird fairerweise davon ausgegangen, dass innerhalb des eigenen Tenants bereits bekannte Terms of Use und Privacy Regeln gelten.<\/p>\n<p>Bei einer Single-Tenant-Applikation ist der Text im Consent Request <strong>immer<\/strong> folgender:<\/p>\n<blockquote>\n<p><em>Accepting these permissions means that you allow this app to use your data as specified in their terms of service and privacy statement. You can change these permissions at <a href=\"https:\/\/myapps.microsoft.com\">https:\/\/myapps.microsoft.com<\/a>.<br \/>\n<br class=\"\"><br \/>\nOnly accept if you trust the publisher and if you selected this app from a store or website you trust. Ask your admin if you&#8217;re not sure. Microsoft is not involved in licensing this app to you.<\/em><\/p>\n<\/blockquote>\n<hr \/>\n<h3>Erweiterte Consent Features und Informationen<\/h3>\n<p>Dieses Kapitel war auf einer sehr, SEHR hohen Flugh\u00f6he, damit der Fokus auf der ToU-Ebene bleibt.  <\/p>\n<p>Wer Appetit bekommen hat, sich mehr mit Enterprise-Apps und OAuth-Grants zu besch\u00e4ftigen, dem empfehle ich folgende Themen, in absteigender Wichtigkeit und steigender Komplexit\u00e4t:<\/p>\n<ol>\n<li><a href=\"https:\/\/learn.microsoft.com\/en-us\/entra\/identity-platform\/application-consent-experience\">Der OAuth Consent Screen f\u00fcr Benutzer und was er allgemein ist<\/a><\/li>\n<li><a href=\"https:\/\/learn.microsoft.com\/en-us\/entra\/identity\/enterprise-apps\/protect-against-consent-phishing\">Wie OAuth Consent ausgenutzt werden kann<\/a><\/li>\n<li><a href=\"https:\/\/learn.microsoft.com\/en-us\/entra\/identity\/enterprise-apps\/configure-user-consent?tabs=azure-portal&amp;pivots=portal#configure-user-consent-settings\">Einschr\u00e4nken des Consent f\u00fcr Benutzer<\/a><\/li>\n<li><a href=\"https:\/\/learn.microsoft.com\/en-us\/entra\/identity\/enterprise-apps\/configure-admin-consent-workflow\">Konfigurieren des Admin Request Prozess<\/a><\/li>\n<li><a href=\"https:\/\/www.pimwiddershoven.nl\/entry\/application-consent-policies-to-delegate-admin-consent\/\">Granulare Consent Policies von Pim Widdershoven<\/a><\/li>\n<li><a href=\"https:\/\/learn.microsoft.com\/en-us\/entra\/identity\/enterprise-apps\/manage-app-consent-policies?pivots=ms-powershell\">Granulare Consent Policies, umfangreicher von Microsoft<\/a><\/li>\n<\/ol>\n<p><br class=\"\"><\/p>\n<hr \/>\n<h2>CIAM Systeme<\/h2>\n<p>Dies ist eher eine Honorable Mention, wenn alle Stricke rei\u00dfen, und etwas Eigenes entwickelt werden muss.<\/p>\n<p><strong>C<\/strong>ustomer bzw. <strong>C<\/strong>onsumer <strong>I<\/strong>dentity And <strong>A<\/strong>ccess <strong>M<\/strong>anagement Systeme sind stark vereinfachte Identit\u00e4tsprovider, die f\u00fcr <strong>sehr hohe Benutzerzahlen<\/strong> und <strong>maximale Flexibilit\u00e4t<\/strong> ausgelegt sind. Dabei m\u00fcssen fast alle Abl\u00e4ufe selbst entwickelt oder zumindest umfangreich angepasst werden.<\/p>\n<p>Bei der Interaktion mit vielen externen Benutzern, kann es sich auf mehreren Ebenen lohnen, ein solches System zu etablieren. Dadurch lassen sich teure <strong>Voll-Lizenzen einsparen<\/strong>, erweiterte oder angepasste Informationen abrufen sowie eine <strong>klare Trennung zwischen externen und internen Benutzern<\/strong> schaffen.<\/p>\n<p>Daf\u00fcr ist die initiale Investition erheblich h\u00f6her und kann nicht von Administratoren allein gestemmt werden, sondern erfordert professionelle Entwickler.<\/p>\n<p>Stand M\u00e4rz 2025 besteht das Microsoft-Angebot aus <a href=\"https:\/\/learn.microsoft.com\/en-us\/entra\/external-id\/external-identities-overview\">Entra External ID<\/a>, das jedoch noch in den Kinderschuhen steckt, und dem \u201asoft\u2018 abgek\u00fcndigten Vorg\u00e4nger <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/active-directory-b2c\/overview\">Entra ID (bzw. Azure AD) B2C<\/a>.<\/p>\n<p><br class=\"\"><\/p>\n<hr \/>\n<h2>Zusammenfassung<\/h2>\n<p>Unsere neuen Optionen lassen sich wie folgt zusammenfassen:<\/p>\n<table>\n<thead>\n<tr>\n<th>Einstellung<\/th>\n<th>Betroffene Benutzertypen<\/th>\n<th>Sichtbarkeit<\/th>\n<th>Explizite Best\u00e4tigung<\/th>\n<th>&quot;Dateityp&quot;<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>OAuth Consent<\/td>\n<td>Interne Benutzer, G\u00e4ste<\/td>\n<td>Erstmalige Authentifizierung an einer Applikation <b>*<\/b><\/td>\n<td>\u2705 Erforderlich <b>*<\/b><\/td>\n<td>Angeforderte Einzelrechte (Scopes)<\/td>\n<\/tr>\n<tr>\n<td>Multi-Tenant Enterprise App<\/td>\n<td>Intern, G\u00e4ste<\/td>\n<td>Erstmalige Auth <b>*<\/b><\/td>\n<td>\u2705 Erforderlich <b>*<\/b><\/td>\n<td>URL<\/td>\n<\/tr>\n<tr>\n<td>Single-Tenant Enterprise App<\/td>\n<td>Intern, G\u00e4ste<\/td>\n<td>Erstmalige Auth <b>*<\/b><\/td>\n<td>\u2705 Erforderlich <b>*<\/b><\/td>\n<td>Es sind nur die OAuth-Rechte sichtbar!<\/td>\n<\/tr>\n<tr>\n<td>CIAM System<\/td>\n<td>Registrierte Benutzer<\/td>\n<td>Bei Registrierung, Login <b>**<\/b><\/td>\n<td>\u2705 Erforderlich <b>**<\/b><\/td>\n<td>Beliebig <b>**<\/b><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<blockquote>\n<p><b>*<\/b> <em>Vorausgesetzt es wurde kein Admin Consent gegeben<\/em><br \/>\n<b>**<\/b> <em>Je nachdem, wie die entwickelte L\u00f6sung aussieht.<\/em><\/p>\n<\/blockquote>\n<p>Ich habe es bereits im <a href=\"https:\/\/sparrow365.de\/index.php\/2024\/12\/31\/eigene-m365-terms-of-use-teil-1-tenantweite-einstellungen\/\">ersten Teil<\/a> erw\u00e4hnt, aber es ist wichtig, es noch einmal zu betonen: Wenn in einer Applikation kein Login erforderlich ist (Anonyme Nutzer), greifen nat\u00fcrlich auch keine der hier aufgef\u00fchrten Konfigurationen.<\/p>\n<p><br class=\"\"><\/p>\n<p>Im (geplant) letzten Teil dieser Serie werde ich auf Optionen in Microsoft Teams eingehen, und L\u00f6sungen in anderen M365 Applikationen ansprechen.<\/p>\n<p>Wenn es etwas gibt, das Sie kennen und ich aufnehmen k\u00f6nnte oder sie besonders interessiert, schreiben Sie es in die Kommentare oder vernetzen Sie sich mit mir auf LinkedIn!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Im letzten Teil haben wir die Tenantweit g\u00fcltigen &quot;Terms of Use&quot; (ToU) gesetzt, in diesem Teil geht es an die L\u00f6sungen f\u00fcr Applikationen die mit Entra verbunden werden. Zwar sind Conditional Access ToU oft eine gute L\u00f6sung. Doch selbst mit der erforderlichen Entra ID P1-Lizenz st\u00f6\u00dft man schnell an die Grenzen der 40 m\u00f6glichen ToU,&#8230; &raquo; <a class=\"read-more-link\" href=\"https:\/\/sparrow365.de\/index.php\/2025\/03\/03\/eigene-m365-terms-of-use-teil-2-entra-apps\/\">weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":945,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24,378],"tags":[72,70,156,433,347,64,52,333,447],"class_list":["post-944","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-me-id","category-m365-de","tag-aad","tag-azure-ad","tag-best-practices","tag-ciam-de","tag-enterprise-app-de","tag-entra","tag-entra-id","tag-microsoft-365","tag-tou"],"_links":{"self":[{"href":"https:\/\/sparrow365.de\/index.php\/wp-json\/wp\/v2\/posts\/944","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sparrow365.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sparrow365.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sparrow365.de\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sparrow365.de\/index.php\/wp-json\/wp\/v2\/comments?post=944"}],"version-history":[{"count":5,"href":"https:\/\/sparrow365.de\/index.php\/wp-json\/wp\/v2\/posts\/944\/revisions"}],"predecessor-version":[{"id":966,"href":"https:\/\/sparrow365.de\/index.php\/wp-json\/wp\/v2\/posts\/944\/revisions\/966"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sparrow365.de\/index.php\/wp-json\/wp\/v2\/media\/945"}],"wp:attachment":[{"href":"https:\/\/sparrow365.de\/index.php\/wp-json\/wp\/v2\/media?parent=944"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sparrow365.de\/index.php\/wp-json\/wp\/v2\/categories?post=944"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sparrow365.de\/index.php\/wp-json\/wp\/v2\/tags?post=944"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}