Jak jako vývojář zajistíte, nulová důvěra (Zero Trust), když máte jedno rozhraní API, které potřebuje volat jiné rozhraní API? V tomto článku se dozvíte, jak bezpečně vyvíjet aplikaci, když pracuje jménem uživatele.
Když uživatel řídí uživatelské rozhraní aplikace, může aplikace používat delegovaná oprávnění, aby rozhraní API vědělo, na kterém uživateli, jehož jménem aplikace funguje. V přístupovém tokenu, který aplikace poskytuje při volání rozhraní API, by kontrolovala deklarace identity subjektu (sub) nebo ID objektu (oid) a ID tenanta (svázané). Rozhraní API nespoléhá na nedůvěryhodnou aplikaci, což je jen volání pocházející z nějakého umístění v síti. Místo toho ověří token, aby se zajistilo, že rozhraní API funguje pouze jménem uživatele aplikace, který ověřil Microsoft Entra ID.
Když jedno rozhraní API (budeme na něj odkazovat jako na původní rozhraní API), je důležité, aby rozhraní API, které voláme (budeme ho označovat jako podřízené rozhraní API), postupoval podle výše popsaného procesu ověřování. Podřízené rozhraní API nemůže spoléhat na nedůvěryhodný zdroj sítě. Musí získat identitu uživatele z správně ověřeného přístupového tokenu.
Pokud podřízené rozhraní API nedodržuje správný proces ověřování, musí podřízené rozhraní API spoléhat na původní rozhraní API a poskytnout identitu uživatele jiným způsobem. Podřízené rozhraní API může k provedení operace nesprávně použít oprávnění aplikace. Původní rozhraní API se pak stane jedinou autoritou, pro kterou by uživatelé mohli dosáhnout výsledků v podřízeném rozhraní API. Původní rozhraní API by mohlo záměrně (nebo neúmyslně) umožnit uživateli provést úlohu, kterou uživatel nemohl jinak provést. Jeden uživatel může například změnit podrobnosti o jiném uživateli nebo číst a aktualizovat dokumenty, ke kterým uživatel nemá oprávnění k přístupu. Nesprávné ověření může způsobit vážné problémy se zabezpečením.
Pro lepší zabezpečení získá původní rozhraní API delegovaný přístupový token oprávnění , který se poskytne podřízené rozhraní API při volání původního rozhraní API. Pojďme si projít, jak to funguje.
Klientská aplikace získá přístupový token pro volání původního rozhraní API.
Následující diagram znázorňuje klientskou aplikaci vlevo a původní rozhraní API vpravo.
Klientská aplikace získala delegovaný přístupový token oprávnění (označený obrazcem pětiúhelníku s popiskem A) do původního rozhraní API. Delegovaný přístupový token oprávnění umožňuje pracovat jménem uživatele, aby volal původní rozhraní API, které vyžaduje autorizaci.
Klientská aplikace poskytuje přístupový token k původnímu rozhraní API.
Následující animace ukazuje klientskou aplikaci, která uděluje přístupový token původnímu rozhraní API. Původní rozhraní API plně ověří a zkontroluje přístupový token a určí identitu uživatele klientské aplikace.
Původní rozhraní API provádí ověřování a vynucování tokenů.
Další animace ukazuje, že jakmile klientská aplikace poskytne přístupový token původnímu rozhraní API, původní rozhraní API provede ověření a vynucování tokenu. Pokud je vše v pořádku, rozhraní API bude pokračovat a obsluhovat žádost o klientskou aplikaci.
Původní rozhraní API nemůže použít přístupový token k volání podřízené rozhraní API
Následující animace ukazuje, že původní rozhraní API teď chce volat podřízené rozhraní API. Původní rozhraní API ale nemůže použít přístupový token k volání podřízeného rozhraní API.
Původní rozhraní API se vrátí zpět do Microsoft Entra ID.
V animaci níže se původní rozhraní API musí vrátit k ID Microsoft Entra. Potřebuje přístupový token pro volání podřízeného rozhraní API jménem uživatele.
Další animace ukazuje původní rozhraní API poskytující token, který původní rozhraní API přijalo z klientské aplikace a přihlašovací údaje klienta původního rozhraní API.
ID Microsoft Entra zkontroluje například souhlas nebo vynucení podmíněného přístupu. Možná se budete muset vrátit ke svému volajícímu klientovi a poskytnout důvod, proč token nemůžete získat. Obvykle byste použili proces výzvy deklarací identity a vrátili byste se k volající aplikaci s informacemi týkajícími se nedodržování souhlasu (například související se zásadami podmíněného přístupu).
ID Microsoft Entra provádí kontroly
V následující animaci provede MICROSOFT Entra ID své kontroly. Pokud je všechno v pořádku, Microsoft Entra ID vydá přístupový token k původnímu rozhraní API pro volání podřízeného rozhraní API jménem uživatele.
Původní rozhraní API má kontext uživatele s tokem On-Behalf-Of
Následující animace znázorňuje proces toku On-Behalf-Of (OBO), který rozhraní API umožňuje pokračovat v kontextu uživatele, protože volá podřízené rozhraní API.
Původní volání rozhraní API pro podřízené rozhraní API
V další animaci zavoláme podřízené rozhraní API. Token, který přijímá podřízené rozhraní API, bude mít správnou cílovou skupinu (aud), která označuje podřízené rozhraní API.
Token bude obsahovat rozsahy uděleného souhlasu a původní identitu uživatele aplikace. Podřízené rozhraní API může správně implementovat efektivní oprávnění, aby se zajistilo, že identifikovaný uživatel má oprávnění k provedení požadované úlohy. K získání tokenů pro rozhraní API pro volání jiného rozhraní API budete chtít použít jménem toku, aby se zajistilo, že kontext uživatele předá všem podřízeným rozhraním API.
Nejlepší možnost: Původní rozhraní API provádí tok On-Behalf-Of
Tato poslední animace ukazuje, že nejlepší možností je, aby původní rozhraní API provádělo tok On-Behalf-Of (OBO). Pokud podřízené rozhraní API obdrží správný token, bude moct správně reagovat.
Pokud rozhraní API působí jménem uživatele a potřebuje volat jiné rozhraní API, musí rozhraní API použít OBO k získání delegovaného přístupového tokenu oprávnění k volání podřízeného rozhraní API jménem uživatele. Rozhraní API by nikdy neměla používat oprávnění aplikace k volání podřízených rozhraní API, pokud rozhraní API působí jménem uživatele.
Další kroky
Scénáře ověřování platformy Microsoft Identity Platform a aplikace popisují toky ověřování a scénáře aplikací, ve kterých se používají.
Služba API Protection popisuje osvědčené postupy pro ochranu rozhraní API prostřednictvím registrace, definování oprávnění a souhlasu a vynucování přístupu k dosažení vašich cílů nulová důvěra (Zero Trust).
Přizpůsobení tokenů popisuje informace, které můžete získat v tokenech Microsoft Entra a jak přizpůsobit tokeny, aby se zlepšila flexibilita a řízení a současně se zvyšuje zabezpečení nulové důvěryhodnosti aplikace s nejnižšími oprávněními.
Osvědčené postupy zabezpečení pro vlastnosti aplikace popisují identifikátor URI přesměrování, přístupové tokeny (používané pro implicitní toky), certifikáty a tajné kódy, identifikátor URI ID aplikace a vlastnictví aplikace.
Knihovny ověřování platformy Microsoft Identity Platform popisují podporu microsoft Authentication Library pro různé typy aplikací.
Váš názor
Byla tato stránka užitečná?
Váš názor
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu: https://aka.ms/ContentUserFeedback.