@@ -19,6 +19,7 @@ type Request struct {
1919 Headers map [string ][]string
2020 Form url.Values
2121 JARM map [string ]interface {}
22+ RequestObject string
2223 SigningKey interface {}
2324 EncryptionKey interface {}
2425 Cert * x509.Certificate
@@ -64,33 +65,35 @@ func (r *Request) AuthorizeRequest(
6465 r .Form .Set ("code_challenge_method" , "S256" )
6566 }
6667
67- if cconfig .RequestObject {
68- var request string
69-
68+ if cconfig .RequestObject || cconfig .EncryptedRequestObject {
7069 claims := RequestObjectClaims (r .Form , sconfig , cconfig )
7170
7271 if cconfig .SigningKey != "" {
73- if request , r .SigningKey , err = SignJWT (claims , JWKSigner (cconfig , hc )); err != nil {
72+ if r . RequestObject , r .SigningKey , err = SignJWT (claims , JWKSigner (cconfig . SigningKey , hc )); err != nil {
7473 return "" , err
7574 }
7675 } else {
77- if request , r .SigningKey , err = PlaintextJWT (claims ); err != nil {
78- return "" , err
79- }
80- }
81-
82- if cconfig .EncryptionKey != "" {
83- if request , r .EncryptionKey , err = EncryptJWT (request , JWEEncrypter (cconfig , hc )); err != nil {
76+ if r .RequestObject , r .SigningKey , err = PlaintextJWT (claims ); err != nil {
8477 return "" , err
8578 }
8679 }
8780
8881 r .Form = url.Values {
8982 "client_id" : {cconfig .ClientID },
90- "request" : {request },
83+ "request" : {r . RequestObject },
9184 "scope" : {"openid" },
9285 }
9386
87+ if cconfig .EncryptedRequestObject {
88+ var encryptedRequestObject string
89+
90+ if encryptedRequestObject , r .EncryptionKey , err = EncryptJWT (r .RequestObject , JWEEncrypter (sconfig .JWKsURI , hc )); err != nil {
91+ return "" , err
92+ }
93+
94+ r .Form .Set ("request" , encryptedRequestObject )
95+ }
96+
9497 if len (cconfig .Scopes ) > 0 {
9598 r .Form .Set ("scope" , strings .Join (cconfig .Scopes , " " ))
9699 }
@@ -129,7 +132,7 @@ func (r *Request) AuthenticateClient(
129132
130133 if clientAssertion , r .SigningKey , err = SignJWT (
131134 ClientAssertionClaims (sconfig , cconfig ),
132- JWKSigner (cconfig , hc ),
135+ JWKSigner (cconfig . SigningKey , hc ),
133136 ); err != nil {
134137 return endpoint , err
135138 }
0 commit comments