canada-ca / canada-ca/CATS-STAE
Native OIDC client types question
- Dominant language
- Shell
- Stars
- 16
- Forks
- 1
- PR merge metrics
- No merged PRs in 30d
Description
Reading through the OIDC spec the first time, I had the impression that native clients must register dynamically, and each native application must use the code flow and authenticate with private_key_jwt.
```
Full clients, native clients with dynamically registered keys, and direct access clients as defined
above MUST authenticate to the authorization server’s token endpoint using a JWT assertion as
defined by the JWT Profile for OAuth 2.0 Client Authentication and Authorization Grants using
only the private_key_jwt method defined in OpenID Connect Core
Native applications using dynamic registration MUST generate a unique public and private key
pair on the device and register that public key value with the authorization server. Authorization
servers MUST NOT issue a public and private key pair to the client as part of the registration
process.
```
However, in the igov specs https://openid.net/specs/openid-igov-oauth2-1_0-ID1.html#rfc.section.2.1.2 it says that,
```
Native clients MUST either:
use dynamic client registration to obtain a separate client id for each instance, or
act as a public client by using a common client id and use PKCE to protect calls to the token endpoint.
```
Rereading the CATS spec, noting that whenever a native client is mentioned, it's with the caveat that it used dynamic client registration. Is it permissible under CATS that native clients just not register dynamically so they may use PKCE and no client authentication? Why would a native client ever go to the trouble of the dynamic registration route, considering the ease of PKCE? I can only think if they needed encrypted id tokens.
Contributor guide
Assessment
This issue has not been assessed yet.