...
Absolute requirements for clients using HelseID
All clients
...
shall only establish connections to servers, including HelseID, using TLS. All TLS connections shall be set up using TLS version 1.2 or later, and follow RFC 7525.
shall use Authorization Code flow, as described by IETF in OAuth 2.0 and by OIDF in OpenID Connect for interactive sessions (end-user sessions), OR
shall use the Client Credentials flow as described in RFC 6749.
shall be confidential clients, meaning that the client secrets used to authenticate the clients are known to HelseID prior to the authentication.
shall pass request parameters as JWT as described by OIDF in OpenID Connect, and as detailed by HelseID.
shall support client authentication usinusing either:
“private_key_jwt”, as described by OpenID Connect for interactive sessions.
Se below for allowed algorithms
Mutual-TLS for OAuth Client Assertions Authentication as described by RFC 7521 and RFC 75238705. (This is not supported by HelseID yet)
The requirements for client authentication are further detailed by HelseID
shall support sender-constrained tokens using either
Mutual-TLS for OAuth Certificate-Bound Access Tokens mTLS for OAuth as described by RFC 8705.
Demonstrating Proof-of-Possession at the Application Layer (DPoP) as described by draft-ietf-oauth-dpop. At the moment this specification has a draft status, so it is liable to change.
This is a future requirement and is not supported by HelseID yet
shall send access tokens in http authorization headers, as described by RFC 6750.
Clients that supports user logon
shall use authorization code grant, as described by IETF in OAuth 2.0 and by OIDF in OpenID Connect for interactive sessions (end-user sessions).
shall use PKCE, as defined by IETF in RFC 76936 - Proof Key for Code Exchange, to mitigate against code interception and other attacks.shall send access tokens in http authorization headers, as described by RFC 6750.
shall use the “authorization_details” structure, as defined by IETF in the specification Rich Authorization Requests, to convey fine grained authorization requirements to HelseID. These requirements are further detailed by HelseID here.
shall check the the validity of the “iss” parameter in the authorization response to prevent mix-up attacks.
shall implement protection against XSS and CSRF attacks. Please refer to external sources as OWASP for details about how to test and secure a client.
shall not expose to open redirectors where the client is vulnerable to malicious redirections . Please refer to external sources to find descriptions of mitigations to these types of attacks.
the client shall protect against attacks via HTTP Header
the client shall protect against attacks via Javascript (e.g. XSS attacks)
Clients that do not support user logon (machine to machine)
shall use the Client Credentials flow as described in RFC 6749.
shall use a client assertion to convey fine grained authorization information to HelseID. The process is described here.
Cryptography and secrets
All “secrets” (in practice private keys)
Cryptography
The following algorithms are supported when using “private_key_jwt” and request objects.
...