@@ -632,14 +632,22 @@ def do_POST(self):
632632 self .server .SHARED ["schema" ] = self .headers .get ("Default-Schema" )
633633
634634 if self .headers .get ("Authorization" ) is not None :
635- auth_header = self .headers ["Authorization" ].replace ("Basic " , "" )
636- credentials = b64decode (auth_header ).decode ("utf-8" ).split (":" , 1 )
637- self .server .SHARED ["username" ] = credentials [0 ]
638- if len (credentials ) > 1 and credentials [1 ]:
639- self .server .SHARED ["password" ] = credentials [1 ]
640- else :
641- self .server .SHARED ["password" ] = None
635+ auth_header = self .headers ["Authorization" ]
636+ if "Basic" in auth_header :
637+ auth_header = auth_header .replace ("Basic " , "" )
638+ credentials = (
639+ b64decode (auth_header ).decode ("utf-8" ).split (":" , 1 )
640+ )
641+ self .server .SHARED ["username" ] = credentials [0 ]
642+ if len (credentials ) > 1 and credentials [1 ]:
643+ self .server .SHARED ["password" ] = credentials [1 ]
644+ else :
645+ self .server .SHARED ["password" ] = None
646+ elif "Bearer" in auth_header :
647+ jwt_token = auth_header .replace ("Bearer " , "" )
648+ self .server .SHARED ["jwt_token" ] = jwt_token
642649 else :
650+ self .server .SHARED ["jwt_token" ] = None
643651 self .server .SHARED ["username" ] = None
644652
645653 if self .headers .get ("X-User" ) is not None :
@@ -705,3 +713,10 @@ def test_credentials(serve_http):
705713 assert server .SHARED ["usernameFromXUser" ] == username
706714 assert server .SHARED ["username" ] == username
707715 assert server .SHARED ["password" ] == password
716+
717+ # Just a single token, most convenient.
718+ jwt_token = "testJwtToken"
719+ with connect (url , jwt_token = jwt_token ) as conn :
720+ assert conn .client .jwt_token == jwt_token
721+ conn .client .sql ("select 3;" )
722+ assert server .SHARED ["jwt_token" ] == jwt_token
0 commit comments