← Cloudflare Fundamentals / fundamentals / oauth
Vytvoření klienta OAuth
Předpoklady
Chcete-li vytvořit klienta OAuth, musíte mít pro příslušný účet jednu z těchto rolí: Super Administrator, Administrator nebo OAuth Client Write.
- Přihlaste se do dashboardu Cloudflare.
- Vyberte svůj účet.
- Přejděte na Manage Account > OAuth klienti.
- Vyberte Vytvořit klienta.
- Zadejte požadované konfigurační údaje:
- Client name
- Typ odpovědi
- Grant type
- Metoda ověření tokenem
- Přesměrovací adresy URL
- Volitelné: Přidejte nepovinná pole.
- Vyberte Pokračovat a definujte scopes, které váš klient potřebuje.
- Volitelně: V Vyberte volitelné rozsahy, vypněte Povinné pro každý rozsah, který chcete nastavit jako volitelný. Všechny rozsahy jsou ve výchozím nastavení povinné.
- Vyberte Vytvořit klienta.
- Uložte si Client ID a Client Secret na bezpečném místě.
Chcete-li vytvářet klienty OAuth pomocí Cloudflare API, vytvořte API token s OAuth Clients Write oprávnění.
curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/oauth_clients" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $API_TOKEN" \
-d '{
"client_name": "Cloudflare OAuth Client",
"grant_types": ["authorization_code"],
"redirect_uris": ["https://example.com/oauth/callback"],
"scopes": ["workers-platform.read", "workers-platform.write"],
"optional_scopes": ["workers-platform.read"],
"post_logout_redirect_uris": ["https://example.com/logout"],
"response_types": ["code"],
"token_endpoint_auth_method": "client_secret_basic",
"logo_uri": "https://example.com/logo.png",
"policy_uri": "https://example.com/policy",
"tos_uri": "https://example.com/tos",
"client_uri": "https://example.com",
"allowed_cors_origins": ["https://example.com"]
}'Vyberte rozsahy
Názvy OAuth scope odpovídají názvům oprávnění API tokenu Cloudflare. Oprávnění, která váš klient potřebuje, zjistíte v dokumentaci Cloudflare API.
Při vytváření nebo úpravě klienta OAuth vyberte alespoň jeden rozsah. Všechny vybrané rozsahy jsou ve výchozím nastavení povinné.
V Vyberte volitelné rozsahy, vypněte Povinné pro každý scope, který chcete nastavit jako volitelný.
Povinné rozsahy oprávnění musí být na obrazovce souhlasu uděleny, zatímco volitelné rozsahy může uživatel odmítnout.
Načtěte dostupné rozsahy (scopes) z API. Při vytváření klienta prostřednictvím API použijte ID rozsahu.
curl "https://api.cloudflare.com/client/v4/oauth/scopes" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $API_TOKEN"Chcete-li označit rozsahy jako volitelné, zahrňte je do optional_scopes požadavku. Musí se jednat o podmnožinu scopes pro klienta. Volitelné rozsahy může uživatel během autorizace odmítnout.
Podporované OAuth flows
OAuth klienti Cloudflare podporují OAuth 2.0 Authorization Code flow.
Cloudflare u klientů třetích stran nepodporuje typy OAuth grantů Client Credentials, Implicit, Resource Owner Password Credentials, Device Authorization ani žádné další.
Vyberte postup
Podle následujících pokynů vyberte tok OAuth:
| Client type | Tok | Ověřování u koncového bodu tokenu | PKCE |
|---|---|---|---|
| Serverová webová aplikace nebo backendová služba | Autorizační kód s client secret | client_secret_basic nebo client_secret_post |
Volitelné/nepovinné |
| Aplikace v prohlížeči, mobilní, desktopová nebo aplikace CLI | Autorizační kód s PKCE | none |
Povinné, S256 |
Client secret
Authorization Code flow je určen pro zabezpečené serverové aplikace, které dokážou ochránit client secret před vyzrazením.
- Použijte, když: Váš OAuth klient je webová aplikace na straně serveru nebo backendová služba.
- Jak to funguje: Váš klient přesměruje uživatele na autorizační stránku. Po autorizaci Cloudflare vrátí autorizační kód vašemu backendu. Váš backend si následně vymění kód a client secret za access token.
- Bezpečnostní poznámka: Nikdy nevystavujte svůj client secret v kódu na straně klienta ani jej nevkládejte do binárních souborů mobilních klientů.
PKCE
Proof Key for Code Exchange (PKCE) rozšiřuje tok Authorization Code pro veřejné klienty, jako jsou mobilní nebo jednostránkové aplikace, kde nelze bezpečně uložit client secret.
- Použijte, když: Váš OAuth klient je jednostránková, mobilní, desktopová nebo CLI aplikace.
- Jak to funguje: Vaše aplikace pro každý požadavek na přihlášení vygeneruje jedinečný code verifier a code challenge, místo aby používala statický client secret.
- Bezpečnostní poznámka: Klienti používající PKCE nepotřebují client secret.
Privátní a veřejní klienti
Nové klienty OAuth mají ve výchozím nastavení soukromou viditelnost. Soukromé klienty mohou autorizovat pouze členové nadřazeného účtu Cloudflare. Veřejné klienty umožňují autorizaci libovolnému uživateli Cloudflare.
Než klienta nastavíte jako veřejného, dokončete požadované kroky a vyplňte povinná pole.
Povinná pole
- Client name
- Logo
- Client URL
- Rozsahy
Povinné akce
OAuth klienti musí dokončit ověření domény pro URL klienta, než mohou být zveřejněny.
Povýšit klienta na veřejný
- Přejděte na Manage Account > OAuth klienti.
- Otevřete nabídku akcí pro svého klienta.
- Vyberte Změnit viditelnost.
curl -X PATCH "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/oauth_clients/$CLIENT_ID" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $API_TOKEN" \
-d '{ "visibility": "public" }'Ověření vlastnictví domény pro Client URL
Předtím než se klient stane veřejným, Cloudflare vyžaduje ověření vlastnictví domény URL klienta. Pokud je váš klient určen pouze k soukromému použití členy účtu, ověření vlastnictví domény není nutné.
Zkopírujte ověřovací kód a vytvořte TXT záznam s touto hodnotou do konfigurace DNS. Záznam musí obsahovat celý text, včetně cloudflare_oauth_client_publisher= prefix.
Cloudflare tento DNS záznam opakovaně kontroluje, dokud jej nenajde, nebo dokud po dvou dnech nevyprší časový limit požadavku.
Restartovat ověření
Pokud procesu ověření vyprší časový limit, vyberte Restartovat ověření v nabídce akcí klienta.
Chcete-li restartovat neúspěšné nebo časově vypršelé ověření, odešlete PATCH požadavek se stávajícím client_uri beze změny.
curl -X PATCH "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/oauth_clients/$CLIENT_ID" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $API_TOKEN" \
-d '{ "client_uri": "https://example.com" }'Obměnit client secrets
Každý klient může mít dva tajné klíče. Díky tomu můžete vytvořit nový tajný klíč, aktualizovat klienta, aby používal nový tajný klíč, a poté starý tajný klíč odstranit.
- Přejděte na Manage Account > OAuth klienti.
- Otevřete nabídku akcí pro svého klienta.
- Vyberte Obměnit client secret.
- Nový tajný klíč uložte na bezpečné místo.
- Jakmile klient začne používat nový tajný klíč, starý tajný klíč odstraňte.
Chcete-li zjistit, zda klient právě provádí rotaci tajného klíče, vyhledejte has_rotated_secret v GET odpověď. Pokud je hodnota true, starý tajný klíč odstraňte dříve, než vytvoříte další tajný klíč.
Vytvoření nového tajného klíče
curl -X POST "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/oauth_clients/$CLIENT_ID/rotate_secret" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $API_TOKEN"Odstraňte starý tajný klíč
curl -X DELETE "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/oauth_clients/$CLIENT_ID/rotate_secret" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $API_TOKEN"