|  | @@ -1,4 +1,15 @@
 | 
	
		
			
				|  |  |  Oidc = {};
 | 
	
		
			
				|  |  | +httpCa = false;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +if (process.env.OAUTH2_CA_CERT !== undefined) {
 | 
	
		
			
				|  |  | +    try {
 | 
	
		
			
				|  |  | +        const fs = Npm.require('fs');
 | 
	
		
			
				|  |  | +	httpCa = fs.readFileSync(process.env.OAUTH2_CA_CERT);
 | 
	
		
			
				|  |  | +    } catch(e) {
 | 
	
		
			
				|  |  | +	console.log('WARNING: failed loading: ' + process.env.OAUTH2_CA_CERT);
 | 
	
		
			
				|  |  | +	console.log(e);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  OAuth.registerService('oidc', 2, null, function (query) {
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -86,9 +97,7 @@ if (process.env.ORACLE_OIM_ENABLED !== 'true' && process.env.ORACLE_OIM_ENABLED
 | 
	
		
			
				|  |  |      var response;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      try {
 | 
	
		
			
				|  |  | -      response = HTTP.post(
 | 
	
		
			
				|  |  | -        serverTokenEndpoint,
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | +      var postOptions = {
 | 
	
		
			
				|  |  |            headers: {
 | 
	
		
			
				|  |  |              Accept: 'application/json',
 | 
	
		
			
				|  |  |              "User-Agent": userAgent
 | 
	
	
		
			
				|  | @@ -101,8 +110,11 @@ if (process.env.ORACLE_OIM_ENABLED !== 'true' && process.env.ORACLE_OIM_ENABLED
 | 
	
		
			
				|  |  |              grant_type: 'authorization_code',
 | 
	
		
			
				|  |  |              state: query.state
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -      );
 | 
	
		
			
				|  |  | +        };
 | 
	
		
			
				|  |  | +      if (httpCa) {
 | 
	
		
			
				|  |  | +	postOptions['npmRequestOptions'] = { ca: httpCa };
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      response = HTTP.post(serverTokenEndpoint, postOptions);
 | 
	
		
			
				|  |  |      } catch (err) {
 | 
	
		
			
				|  |  |        throw _.extend(new Error("Failed to get token from OIDC " + serverTokenEndpoint + ": " + err.message),
 | 
	
		
			
				|  |  |          { response: err.response });
 | 
	
	
		
			
				|  | @@ -143,9 +155,7 @@ if (process.env.ORACLE_OIM_ENABLED === 'true' || process.env.ORACLE_OIM_ENABLED
 | 
	
		
			
				|  |  |      if (debug) console.log('Basic Token: ', strBasicToken64);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      try {
 | 
	
		
			
				|  |  | -      response = HTTP.post(
 | 
	
		
			
				|  |  | -        serverTokenEndpoint,
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | +      var postOptions = {
 | 
	
		
			
				|  |  |            headers: {
 | 
	
		
			
				|  |  |              Accept: 'application/json',
 | 
	
		
			
				|  |  |              "User-Agent": userAgent,
 | 
	
	
		
			
				|  | @@ -159,8 +169,11 @@ if (process.env.ORACLE_OIM_ENABLED === 'true' || process.env.ORACLE_OIM_ENABLED
 | 
	
		
			
				|  |  |              grant_type: 'authorization_code',
 | 
	
		
			
				|  |  |              state: query.state
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -      );
 | 
	
		
			
				|  |  | +        };
 | 
	
		
			
				|  |  | +      if (httpCa) {
 | 
	
		
			
				|  |  | +	postOptions['npmRequestOptions'] = { ca: httpCa };
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +      response = HTTP.post(serverTokenEndpoint, postOptions);
 | 
	
		
			
				|  |  |      } catch (err) {
 | 
	
		
			
				|  |  |        throw _.extend(new Error("Failed to get token from OIDC " + serverTokenEndpoint + ": " + err.message),
 | 
	
		
			
				|  |  |          { response: err.response });
 | 
	
	
		
			
				|  | @@ -188,15 +201,16 @@ var getUserInfo = function (accessToken) {
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    var response;
 | 
	
		
			
				|  |  |    try {
 | 
	
		
			
				|  |  | -    response = HTTP.get(
 | 
	
		
			
				|  |  | -      serverUserinfoEndpoint,
 | 
	
		
			
				|  |  | -      {
 | 
	
		
			
				|  |  | +    var getOptions = {
 | 
	
		
			
				|  |  |          headers: {
 | 
	
		
			
				|  |  |            "User-Agent": userAgent,
 | 
	
		
			
				|  |  |            "Authorization": "Bearer " + accessToken
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -    );
 | 
	
		
			
				|  |  | +      };
 | 
	
		
			
				|  |  | +    if (httpCa) {
 | 
	
		
			
				|  |  | +      getOptions['npmRequestOptions'] = { ca: httpCa };
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    response = HTTP.get(serverUserinfoEndpoint, getOptions);
 | 
	
		
			
				|  |  |    } catch (err) {
 | 
	
		
			
				|  |  |      throw _.extend(new Error("Failed to fetch userinfo from OIDC " + serverUserinfoEndpoint + ": " + err.message),
 | 
	
		
			
				|  |  |                     {response: err.response});
 |