OIDC is een extensie van OAuth2 en bepaalde libraries waren (en sommige applicaties nog steeds) niet compleet, dat wil niet zeggen dat het niet op de standaarden gebaseerd was
Ze noemden het OIDC compliant, maar was dat niet, juist omdat ze de standaarden niet goed gevolgd hadden. Dat hebben ze na release hersteld. Dat heeft verder niets met de JWT's zelf te maken.
OIDC is overigens geen extensie van OAuth2, maar meer een wrapper er omheen. OAuth2 draait om authorisatie, OIDC om authenticatie. Het authorisatie gedeelte van OIDC ís OAuth2

enkel dat de OAuth2 implementaties van andere providers dit niet hadden en daarvoor developers het niet nodig achten om dit toch te ontwikkelen. Maar als je vb. Keycloak opzet kun je dit wel ondersteunen.
Ik denk dat je niet begrijpt waar ik op doelde. Het probleem was (en is nog steeds) dat Apple geen enkele regel code bood om hun afwijkend gebruik van client secrets uit te leggen of te demonstreren. De manier waarop zij dat doen maakt dat je als consumer ineens iets moet doen dat normaal gesproken juist aan de provider kant van OAuth2 zit, namelijk een JWS genereren.
Dat ze geen zin hebben om SDK's voor allerlei programmeertalen te onderhouden is niet gek, maar ze hadden wel op z'n minst één referentie implementatie moeten bieden en die is er niet.
De standaarden van OAuth2 en OIDC hebben daar verder niets mee te maken, want hoe een client secret tot stand komt is daarbij niet vast gelegd. Maar het betekent wel dat er geen enkele OAuth2
client library was die dit kon doen; en de meeste doen dit nog steeds niet, omdat het simpelweg niet tot de verantwoordelijkheid van een client behoort.
De secret etc waar jij over spreekt is wel degelijk de verantwoordelijkheid van jouw applicatie indien de cliënt dit wilt gebruiken. Inderdaad, Facebook etc, genereren alles aan hun kant en geven jouw applicatie dan de mogelijkheid om direct te communiceren met het profiel zonder dat de gebruiker daar toestemming voor blijft geven, met Apple is dit expliciet opgezet om niet te kunnen.
Uh, dit is dus absoluut niet het geval
Het client secret is bedoeld om jouw verzoek tot gebruikers gegevens te verifiëren, maar daarvoor heb je wel de authorisatie van de gebruiker al nodig. Dat ligt niet anders. Wel is het inderdaad zo dat het token dat je van Apple krijgt daarna vrij nutteloos is, terwijl je bij andere providers meerdere malen gegevens op kunt vragen - maar dat staat los van het secret.
Sterker nog, ik heb een aantal OIDC implementaties in één van m'n backends zitten waar je net zoals bij Apple niets kunt met het token, behalve dan controleren of het nog geldig is.
[Reactie gewijzigd door Werelds op 22 juli 2024 18:55]