11 JSON Object Signing and Encryption
This chapter covers
We live in a world where data is exchanged between systems implemented in multiple programming languages by multiple teams working for multiple organizations. Systems interoperate using standard networking protocols such as HTTP in a well-defined manner and use standard data formats. REST, for example, uses JSON, SOAP uses XML, and gRPC uses protocol buffers (protobuffers). Standardized data formats for exchanging encrypted and signed data make interoperability significantly easier.
Security protocols such as X.509 digital certificates (chapters 8 and 9), OpenID Connect (OIDC) and OAuth2 (chapters 12 and 13), SAML, and TLS (chapter 10) have to exchange encrypted and signed messages. These protocols rely on standard formats to represent encrypted and signed content. OIDC uses JSON, SAML uses XML, and X.509 certificates are represented in a standardized binary data format.