> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# reCAPTCHA

> Ochrana přihlášení, registrace a obnovení hesla pomocí Google reCAPTCHA v nasazení na Kubernetes.

Služba **web** (modul `login-register`) vyžaduje reCAPTCHA v2 (invisible) při přihlášení e-mailem, přihlášení přes LDAP, registraci a obnovení hesla. Klíč vytvořte a co jednotlivá nastavení dělají, si přečtěte na stránce [reCAPTCHA](https://ayakaleaf-pro.mintlify.site/cs/on-premises/configuration/overleaf-toolkit/authentication/recaptcha.md); tato stránka popisuje, jak ho vložit do Kubernetes.

| | |
| - | - |
| Služba | web, v každém podu Ayakaleaf Pro; načítá se při spuštění služby web |
| Pod → Google | `RECAPTCHA_ENDPOINT` (výchozí `https://www.google.com/recaptcha/api/siteverify`), při každém kontrolovaném požadavku |
| Prohlížeč → Google | skript widgetu z `www.recaptcha.net` |
| Stav | limity požadavků v Redisu; historie zařízení „tento prohlížeč už kontrolou prošel“ v šifrované cookie |
| Periodické úlohy | žádné |

### Konfigurace

**1. Klíč webu do ConfigMapy**

```yaml theme={null}
  RECAPTCHA_SITE_KEY: <site key>
  # optional
  # RECAPTCHA_ENDPOINT: https://www.recaptcha.net/recaptcha/api/siteverify
  # CAPTCHA_TRUSTED_USERS: robot@example.com
```

Klíč webu je veřejný: zobrazuje ho každá přihlašovací stránka.

**2. Tajný klíč a klíč historie zařízení do Secretu**

```bash theme={null}
kubectl -n overleaf patch secret overleaf-secrets --type merge -p '{"stringData":{
  "RECAPTCHA_SECRET_KEY":"<secret key>",
  "DEVICE_HISTORY_SECRET":"'"$(openssl rand -hex 32)"'"}}'
```

Nastavte oba klíče současně: s klíčem webu, ale bez tajného klíče selže každá kontrola a nikdo se nebude moci přihlásit heslem, zaregistrovat se ani obnovit heslo. `DEVICE_HISTORY_SECRET` musí mít 64 hexadecimálních znaků; kontejner ho negeneruje.

**3. Aplikujte a restartujte**

```bash theme={null}
kubectl apply -f 30-config.yaml
kubectl -n overleaf rollout restart deployment/overleaf     # or statefulset/overleaf
```

Poté ověřte, že každý pod dosáhne na endpoint. Pody to po přibližně jedné sekundě na pokus o spojení vzdají a přihlášení, u kterého nelze kontrolu provést, selže s chybou:

```bash theme={null}
for p in $(kubectl -n overleaf get pod -l app=overleaf -o name); do   # app=overleaf-ha for several replicas
  kubectl -n overleaf exec "$p" -- curl -sS -o /dev/null -w "$p %{http_code}\n" \
    https://www.google.com/recaptcha/api/siteverify
done
```

### Více replik

Všechny repliky musí sdílet `DEVICE_HISTORY_SECRET`, což splňují, když je uložen v Secretu. S různými hodnotami by prohlížeč, který kontrolou prošel na jedné replice, dostal captchu znovu na jiné. Limity požadavků se počítají v Redisu napříč všemi replikami.

### Otestováno na Kubernetes

Proti simulaci ověřovacího endpointu Googlu (s důvěrou nastavenou přes `NODE_EXTRA_CA_CERTS` z `overleaf-certs`), na Kubernetes 1.37, procházejí naše end-to-end testy pro reCAPTCHA (13 případů): na jedné replice přihlášení, registrace a obnovení hesla, z nichž každé je odmítnuto bez captchy nebo s neúspěšnou captchou a přijato s úspěšnou, historie zařízení z `DEVICE_HISTORY_SECRET`, která prohlížeči umožní captchu přeskočit, a `CAPTCHA_TRUSTED_USERS`; na třech replikách za HAProxy přihlášení přes LDAP s captchou.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.