@@ -36,7 +36,7 @@ fn main() {
3636 std:: process:: exit ( 1 ) ;
3737 }
3838
39- let Config { server_config : ServerConfig { host, port, rsa_pub_file_path } , postgresql_config } =
39+ let Config { server_config : ServerConfig { host, port } , jwt_auth_config , postgresql_config } =
4040 match util:: config:: load_config ( & args[ 1 ] ) {
4141 Ok ( cfg) => cfg,
4242 Err ( e) => {
@@ -69,23 +69,27 @@ fn main() {
6969 } ,
7070 } ;
7171
72- let authorizer: Arc < dyn Authorizer > = if let Some ( file_path) = rsa_pub_file_path {
73- let rsa_pub_file = match std:: fs:: read ( file_path) {
74- Ok ( pem) => pem,
75- Err ( e) => {
76- println ! ( "Failed to read RSA public key file: {}" , e) ;
77- std:: process:: exit ( -1 ) ;
78- } ,
79- } ;
80- let rsa_public_key = match DecodingKey :: from_rsa_pem ( & rsa_pub_file) {
81- Ok ( pem) => pem,
72+ let rsa_pem_env = match std:: env:: var ( "VSS_JWT_RSA_PEM" ) {
73+ Ok ( env) => Some ( env) ,
74+ Err ( std:: env:: VarError :: NotPresent ) => None ,
75+ Err ( e) => {
76+ println ! ( "Failed to load the VSS_JWT_RSA_PEM env var: {}" , e) ;
77+ std:: process:: exit ( -1 ) ;
78+ } ,
79+ } ;
80+ let rsa_pem = rsa_pem_env. or ( jwt_auth_config. map ( |config| config. rsa_pem ) ) ;
81+ let authorizer: Arc < dyn Authorizer > = if let Some ( pem) = rsa_pem {
82+ let rsa_public_key = match DecodingKey :: from_rsa_pem ( pem. as_bytes ( ) ) {
83+ Ok ( p) => p,
8284 Err ( e) => {
83- println ! ( "Failed to parse RSA public key file : {}" , e) ;
85+ println ! ( "Failed to parse the PEM formatted RSA public key: {}" , e) ;
8486 std:: process:: exit ( -1 ) ;
8587 } ,
8688 } ;
89+ println ! ( "Configured JWT authorizer with RSA public key" ) ;
8790 Arc :: new ( JWTAuthorizer :: new ( rsa_public_key) . await )
8891 } else {
92+ println ! ( "No JWT authentication method configured" ) ;
8993 Arc :: new ( NoopAuthorizer { } )
9094 } ;
9195
0 commit comments