App-Client darf eine eigene Anwendung beim Anmeldedienst sein
In Authentik hat jede Anwendung standardmaessig ihren eigenen Issuer, abgeleitet aus dem Application-Slug. Web- und App-Client brauchen dort aber zwei getrennte Anwendungen, weil ein Provider entweder vertraulich ODER oeffentlich ist. Bisher wurde das App-Token gegen den Issuer und den Schluesselsatz der Web-Anwendung geprueft - die App-Anmeldung waere damit an der iss-Pruefung gescheitert. Discovery und JWKS werden jetzt je Adresse gepuffert statt je Anbieter, und OIDC_<KUERZEL>_NATIVE_DISCOVERY_URL benennt die Anwendung des App-Clients. Ohne die Variable bleibt es bei einer gemeinsamen Adresse. Ausserdem im README: der Signing Key muss gesetzt sein, sonst signiert Authentik mit HS256 und das Token wird abgelehnt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
3d0ff54bf5
commit
31b3624cc7
@@ -410,3 +410,24 @@ def test_zettel_merkt_sich_das_zu_verknuepfende_konto(db):
|
||||
assert eingeloest.link_user_id == eva.id
|
||||
# Eine normale Anmeldung traegt das Feld nicht.
|
||||
assert oidc_state.einloesen(db, oidc_state.anlegen(db, "authentik").state).link_user_id is None
|
||||
|
||||
|
||||
def test_app_client_darf_eigene_discovery_adresse_haben():
|
||||
"""In Authentik hat jede Anwendung standardmaessig einen eigenen Issuer.
|
||||
|
||||
Web- und App-Client brauchen dort zwei getrennte Anwendungen – ohne eigene
|
||||
Discovery-Adresse wuerde die iss-Pruefung des App-Tokens fehlschlagen.
|
||||
"""
|
||||
umgebung = dict(VOLLE_UMGEBUNG)
|
||||
umgebung["OIDC_AUTHENTIK_NATIVE_DISCOVERY_URL"] = (
|
||||
"https://idp.example.com/application/o/vorrania-ios/.well-known/openid-configuration"
|
||||
)
|
||||
(p,) = provider_aus_umgebung(umgebung, BASIS)
|
||||
|
||||
assert p.app_discovery_url == umgebung["OIDC_AUTHENTIK_NATIVE_DISCOVERY_URL"]
|
||||
assert p.discovery_url != p.app_discovery_url
|
||||
|
||||
|
||||
def test_ohne_eigene_adresse_teilen_sich_beide_wege_die_discovery():
|
||||
(p,) = provider_aus_umgebung(VOLLE_UMGEBUNG, BASIS)
|
||||
assert p.app_discovery_url == p.discovery_url
|
||||
|
||||
Reference in New Issue
Block a user