<div dir="ltr"><div>I had a look at the interface earlier today myself as well.</div><div><br></div><div>The client_secret value differs from a private_key_jwt client_assertion like so</div><div><ol><li>its `sub` and `iss` are not the same client_id value</li><li>it does not require `jti` (and it wouldn't probably use it for checking the assertion is only used once anyway)</li></ol><div>Apple's documentation states that the expiration of this derived client secret JWT can be up to 6 months. My assumption is they really wanted to stick to client secret basic/post scheme so that developers may use the basic oauth/oidc client implementations out there but have rotating/expiring client secrets out of the box, thats why the client secret value is derived from a private key Apple <b>generates for you </b>(you cannot provide your own public key).</div></div><div><br></div><div>There's no discovery and no userinfo endpoint, id token signing is RS256 only given that the <a href="https://appleid.apple.com/auth/keys">jwks_uri</a> only yields a single RS256 alg key and the returned ID Token claims lack documentation. If there's no userinfo what's the point of using code flow and getting an access token - is it just so that clients must use the derived secret? ¯\_(ツ)_/¯</div><div><br></div><div>Apple's frontend "Sign In with Apple JS" javascript implementation is a mystery to me as well, having a look at the JS it runs authorization within a popup with a `code id_token` response type but `form_post` response mode and a proprietary frame_id parameter. There's no hook for getting the tokens back. This seems a work in progress interface.</div><br clear="all"><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">S pozdravem,<br><b>Filip Skokan</b></div></div><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, 4 Jun 2019 at 12:31, Joseph Heenan via Openid-specs-ab <<a href="mailto:openid-specs-ab@lists.openid.net">openid-specs-ab@lists.openid.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi all,<br>
<br>
Apple announced their own sign on solution at WWDC yesterday.<br>
<br>
It appears to be broadly OAuth2 / OpenID Connect, though this isn’t explicitly mentioned:<br>
<br>
<a href="https://developer.apple.com/documentation/signinwithapplerestapi/generate_and_validate_tokens" rel="noreferrer" target="_blank">https://developer.apple.com/documentation/signinwithapplerestapi/generate_and_validate_tokens</a><br>
<br>
<a href="https://developer.apple.com/documentation/signinwithapplerestapi/tokenresponse" rel="noreferrer" target="_blank">https://developer.apple.com/documentation/signinwithapplerestapi/tokenresponse</a><br>
<br>
There is an id_token in the response, but it’s contents aren’t obviously described beyond being ’A JSON Web Token that contains the user’s identity information.’<br>
<br>
One obvious oddity is that at the token endpoint you are required to pass a client_secret parameter that contains an ES256 JWS that is not entirely unlikely a client_assertion. I don’t know if that’s a mistake in the documentation or if Apple have deliberately moved away from a standard client assertion for reasons that are unclear.<br>
<br>
Is anyone at WWDC? There’s a session and a lab on Wednesday that might present an opportunity to ask some questions.<br>
<br>
Thanks<br>
<br>
Joseph<br>
<br>
_______________________________________________<br>
Openid-specs-ab mailing list<br>
<a href="mailto:Openid-specs-ab@lists.openid.net" target="_blank">Openid-specs-ab@lists.openid.net</a><br>
<a href="http://lists.openid.net/mailman/listinfo/openid-specs-ab" rel="noreferrer" target="_blank">http://lists.openid.net/mailman/listinfo/openid-specs-ab</a><br>
</blockquote></div>