google-nomulus/java/google/registry/flows
jianglai 9e7c996081 Add fallback headers to GFE specific headers
Currently we exact the client certificate hash from header X-GFE-SSL-Certificate. This works because the proxy running on [] sends the request directly to the AFE via HttpOverRpc, bypassing the frontline GFE, which would strip away this header.

[]

After the proxy moves to GCP we can no longer use that header. Instead we should use X-SSL-Certificate, which does not get stripped by the GFE. In fact the open source build should never have contained X-GFE-SSL-Certificate because obviously external nomulus users have to go through the GFE to reach the registry app and that header would never have survived.

Without changing how the [] proxy works, this CL makes the registry first try to extract the hash from X-GFE-SSL-Certificate, and fallback to X-SSL-Certificate if necessary. This allows the current setup to continue to work, while the new proxy is being tested.

This should not open us up to attacks because even if an attacker uses a proxy that uses X-SSL-Certificate, it still needs to pass OAuth in order to talk to /_dr/epp.

Similarly, we use X-Requested-Servername-SNI as fallback to X-GFE-Requested-Servername-SNI. This can be eliminated altogether when the [] proxy is retired, because the only reason we check if the client request is SNI enabled (by checking the existence of that header) is because the GFE only requests client certificate when SNI is enabled. The GCP proxy does not have that limitation, and also will be only serving one certificate with all SAN listed in it.

Some formatting change is also introduced by the formatter. They seem to be better conforming to the style guide, so I left them there.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=165378083
2017-08-29 16:21:00 -04:00
..
annotations Make FlowRunner log ICANN activity report field name 2017-03-27 13:32:57 -04:00
async Add basic logging for async operation processing time 2017-07-10 11:31:56 -04:00
contact Add metrics for async batch operation processing 2017-06-05 18:17:09 -04:00
custom Restrict domain transfer pricing to 1 year 2017-03-21 15:33:29 -04:00
domain Add better testing of domain and host creation using multi-part TLDs 2017-08-29 15:47:50 -04:00
exceptions Remove all vestiges of memcache 2017-06-14 10:28:24 -04:00
host Fix typo in comment 2017-07-10 11:42:39 -04:00
picker Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
poll Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
session Make Registrar load methods return Optionals instead of Nullables 2017-08-01 16:58:59 -04:00
soy Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
BUILD Set correct auth settings for all actions 2017-03-13 11:22:55 -04:00
CheckApiAction.java Change @Auth to an AutoValue, and created a set of predefined Auths 2017-08-01 16:33:10 -04:00
EppConsoleAction.java Change @Auth to an AutoValue, and created a set of predefined Auths 2017-08-01 16:33:10 -04:00
EppController.java Log EppExceptions in EppController at INFO (vs FlowRunner at WARNING) 2017-05-03 11:04:51 -04:00
EppException.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
EppMetrics.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
EppRequestHandler.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
EppRequestSource.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
EppTlsAction.java Change @Auth to an AutoValue, and created a set of predefined Auths 2017-08-01 16:33:10 -04:00
EppToolAction.java Change @Auth to an AutoValue, and created a set of predefined Auths 2017-08-01 16:33:10 -04:00
EppXmlTransformer.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
ExtensionManager.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
Flow.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
FlowComponent.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
FlowMetadata.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
FlowModule.java Refactor out creation of server TRIDs so they can be tested 2017-04-13 10:55:47 -04:00
FlowReporter.java Fix Java 7 missing generic type error 2017-04-26 11:02:02 -04:00
FlowRunner.java Log EppExceptions in EppController at INFO (vs FlowRunner at WARNING) 2017-05-03 11:04:51 -04:00
FlowScope.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
FlowUtils.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
GaeUserCredentials.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
HttpSessionMetadata.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
PasswordOnlyTransportCredentials.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
ResourceFlowUtils.java Remove straggler references to extended registration years 2017-03-27 12:59:48 -04:00
ServerTridProvider.java Refactor out creation of server TRIDs so they can be tested 2017-04-13 10:55:47 -04:00
ServerTridProviderImpl.java Refactor out creation of server TRIDs so they can be tested 2017-04-13 10:55:47 -04:00
ServerTridProviderModule.java Refactor out creation of server TRIDs so they can be tested 2017-04-13 10:55:47 -04:00
SessionMetadata.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
StatelessRequestSessionMetadata.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
TlsCredentials.java Add fallback headers to GFE specific headers 2017-08-29 16:21:00 -04:00
TransactionalFlow.java Refer to Datastore everywhere correctly by its capitalized form 2017-02-17 12:12:12 -05:00
TransportCredentials.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00