Change 19002

tjuricek
tjuricek committed this change into //guest/perforce_software/helix-web-services/main/source
Request Review
Download .zip
Improve API to interact with multiple p4ds.

The configuration now requires an explicit setting of what P4Ds HWS can talk to via the 'P4D config dir', where there's a file indicating connection settings per p4d, and importantly, an ID. This is the "server ID" referenced everywhere.

Most methods now require a server ID to indicate which p4d to manipulate. In the future, it's likely we will interact with *multiple* p4d instances on some services.

This completely removes the ability to run HWS as a kind of an "open proxy" to whatever p4d you want.

Given the nature of the change and the lack of priority, we've removed Helix Cloud testing and disabled several methods from their "Helix Cloud" implementation. These will be relatively easy to bring back, we'll just need a new method from Raymond that lists the "allowed server IDs" that map to the HWS configured server IDs for a particular user.

Another notable aspect of this change is the use of JSON Web Token to create our authentication key. We associate this key with an in-memory "session" that contains the P4D tickets we use to authenticate users. The JWT token, by default, is assigned a timeout, which allows HWS to block further access to underlying servers without having to interact with multiple auth backends. If any backend fails with that session, the user will get a 403. If you disable the timeout, you'll need to ensure your clients clear out sessions.
  • Files 167
  • Comments 0
140 edited 22 added 5 deleted
automation/build.gradle#19
Loading...
automation/src/main/java/com/perforce/helix_web_services/automation/AutomationConfig.java#6
Loading...
automation/src/main/java/com/perforce/helix_web_services/automation/CreateJwtSigningToken.java#1
Loading...
automation/src/main/java/com/perforce/helix_web_services/automation/ManageHwsService.java#11
Loading...
automation/vendor/jackson-annotations-2.4.0.jar#1
Loading...
automation/vendor/jackson-core-2.4.2.jar#1
Loading...
automation/vendor/jackson-databind-2.4.2.jar#1
Loading...
automation/vendor/jjwt-0.6.0-sources.jar#1
Loading...
automation/vendor/jjwt-0.6.0.jar#1
Loading...
clients/2016.1.0/java/src/main/java/com/perforce/helix_web_services_client/AlphaApi.java#3
Loading...
clients/2016.1.0/java/src/main/java/com/perforce/helix_web_services_client/ApiClient.java#3
Loading...
clients/2016.1.0/java/src/main/java/com/perforce/helix_web_services_client/DefaultApi.java#6
Loading...
clients/2016.1.0/java/src/main/java/com/perforce/helix_web_services_client/StringUtil.java#9
Loading...
clients/2016.1.0/java/src/main/java/com/perforce/helix_web_services_client/models/LoginRequest.java#2
Loading...
clients/2016.1.0/java/src/main/java/com/perforce/helix_web_services_client/models/ServerLoginRequest.java#1
Loading...
clients/2016.1.0/javascript/index.js#2
Loading...
clients/2016.1.0/javascript/test/depots.js#2
Loading...
clients/2016.1.0/php/HelixWebServices/lib/Api/AlphaApi.php#3
Loading...
clients/2016.1.0/php/HelixWebServices/lib/Api/DefaultApi.php#4
Loading...
clients/2016.1.0/php/HelixWebServices/lib/Model/LoginRequest.php#2
Loading...
clients/2016.1.0/php/HelixWebServices/lib/Model/ServerLoginRequest.php#1
Loading...
clients/2016.1.0/php/HelixWebServices/tests/DepotTests.php#2
Loading...
clients/2016.1.0/python/helix_web_services_client/__init__.py#2
Loading...
clients/2016.1.0/python/helix_web_services_client/apis/alpha_api.py#3
Loading...
clients/2016.1.0/python/helix_web_services_client/apis/default_api.py#4
Loading...
clients/2016.1.0/python/helix_web_services_client/configuration.py#2
Loading...
clients/2016.1.0/python/helix_web_services_client/models/__init__.py#2
Loading...
clients/2016.1.0/python/helix_web_services_client/models/login_request.py#2
Loading...
clients/2016.1.0/python/helix_web_services_client/models/server_login_request.py#1
Loading...
clients/2016.1.0/python/tests/test_depots.py#2
Loading...
clients/2016.1.0/ruby/lib/helix_web_services_client.rb#3
Loading...
clients/2016.1.0/ruby/lib/helix_web_services_client/api/alpha_api.rb#3
Loading...
clients/2016.1.0/ruby/lib/helix_web_services_client/api/default_api.rb#5
Loading...
clients/2016.1.0/ruby/lib/helix_web_services_client/configuration.rb#2
Loading...
clients/2016.1.0/ruby/lib/helix_web_services_client/models/login_request.rb#2
Loading...
clients/2016.1.0/ruby/lib/helix_web_services_client/models/server_login_request.rb#1
Loading...
clients/2016.1.0/ruby/spec/depots_spec.rb#2
Loading...
clients/2016.1.0/ruby/spec/test_config.rb#3
Loading...
doc/src/asciidoc/03_configuration.asc#12
Loading...
doc/src/asciidoc/04_clientprog.asc#15
Loading...
p4base/src/main/java/com/perforce/helix_web_services/p4base/AuthMethods.java#3
Loading...
p4base/src/main/java/com/perforce/helix_web_services/p4base/ServerHandle.java#2
Loading...
p4base/src/main/java/com/perforce/helix_web_services/p4base/helix_sync/PendingChangelistManager.java#6
Loading...
server/build.gradle#14
Loading...
server/src/main/java/com/perforce/helix_web_services/server/ConfigurationMethods.java#2
Loading...
server/src/main/java/com/perforce/helix_web_services/server/HWSSettings.java#16
Loading...
server/src/main/java/com/perforce/helix_web_services/server/P4dConfig.java#2
Loading...
server/src/main/java/com/perforce/helix_web_services/server/UsesServerHandles.java#1
Loading...
server/src/main/java/com/perforce/helix_web_services/server/WebApp.java#48
Loading...
server/src/main/java/com/perforce/helix_web_services/server/WebHookMethods.java#2
Loading...
server/src/main/java/com/perforce/helix_web_services/server/filters/AuthFilter.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/filters/JWTAuthFilter.java#1
Loading...
server/src/main/java/com/perforce/helix_web_services/server/filters/PlatformVersionFilter.java#2
Loading...
server/src/main/java/com/perforce/helix_web_services/server/filters/ServerHandleCleanupFilter.java#2
Loading...
server/src/main/java/com/perforce/helix_web_services/server/filters/ServerHandleFilter.java#9
Loading...
server/src/main/java/com/perforce/helix_web_services/server/filters/SessionDataStoreFilter.java#1
Loading...
server/src/main/java/com/perforce/helix_web_services/server/helix_cloud/HelixCloudAuthentication.java#5
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/ConfigP4dsRoute.java#2
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/ProvidesLoginRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/git_fusion/GitFusionCreateRepoConfigRoute.java#2
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/git_fusion/GitFusionDeleteAllUserSSHKeysRoute.java#2
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/git_fusion/GitFusionDeleteRepoConfigRoute.java#4
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/git_fusion/GitFusionDeleteUserSSHKeyRoute.java#2
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/git_fusion/GitFusionGetRepoConfigRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/git_fusion/GitFusionListRepoConfigsRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/git_fusion/GitFusionListUserSSHKeysRoute.java#2
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/git_fusion/GitFusionReplaceUserSSHKeyRoute.java#2
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/git_fusion/GitFusionUpdateRepoConfigRoute.java#4
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/helix_sync/HSProjectCreateDeviceClientRoute.java#4
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/helix_sync/HSProjectCreateShelfClientRoute.java#4
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceCreateBranchRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceCreateChangeRoute.java#4
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceCreateClientRoute.java#4
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceCreateDepotRoute.java#4
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceCreateGroupRoute.java#6
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceCreateJobRoute.java#4
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceCreateLabelRoute.java#4
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceCreateServerRoute.java#4
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceCreateStreamRoute.java#4
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceCreateUserRoute.java#4
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceDeleteBranchRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceDeleteClientRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceDeleteCounterRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceDeleteDepotRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceDeleteGroupRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceDeleteJobFixRoute.java#2
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceDeleteJobRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceDeleteLabelRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceDeleteServerRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceDeleteStreamRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceDeleteUserRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceExecCommandRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceExecInputCommandRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceFixJobRoute.java#2
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceGetBranchRoute.java#5
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceGetChangeRoute.java#4
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceGetClientRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceGetCounterRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceGetDepotRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceGetGroupRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceGetJobRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceGetLabelRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceGetServerRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceGetStreamRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceGetUserRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceIncrementCounterRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceListBranchesRoute.java#4
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceListChangesRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceListClientsRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceListCountersRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceListDepotsRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceListGroupsRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceListJobsRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceListLabelsRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceListPathsRoute.java#2
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceListProtectionsRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceListServersRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceListStreamsRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceListTriggersRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceListUsersRoute.java#4
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceLoginRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceUpdateBranchRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceUpdateClientRoute.java#4
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceUpdateCounterRoute.java#4
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceUpdateDepotRoute.java#4
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceUpdateGroupRoute.java#5
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceUpdateJobRoute.java#4
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceUpdateLabelRoute.java#6
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceUpdateProtectionsRoute.java#4
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceUpdateServerRoute.java#4
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceUpdateStreamRoute.java#4
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceUpdateTriggersRoute.java#4
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/perforce/PerforceUpdateUserRoute.java#4
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/project/LoginRoute.java#2
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/project/ProjectsGetRoute.java#2
Loading...
server/src/main/java/com/perforce/helix_web_services/server/routes/project/ProjectsListRoute.java#3
Loading...
server/src/main/java/com/perforce/helix_web_services/server/sessions/MemoryBasedSessionDataStore.java#1
Loading...
server/src/main/java/com/perforce/helix_web_services/server/sessions/SessionData.java#1
Loading...
server/src/main/java/com/perforce/helix_web_services/server/sessions/SessionDataStore.java#1
Loading...
server/src/main/java/com/perforce/helix_web_services/server/sessions/SessionLogin.java#1
Loading...
server/vendor/jackson-annotations-2.4.0.jar#1
Loading...
server/vendor/jackson-core-2.1.3.jar#2
Loading...
server/vendor/jackson-core-2.4.2.jar#1
Loading...
server/vendor/jackson-databind-2.4.2.jar#1
Loading...
server/vendor/jjwt-0.6.0-sources.jar#1
Loading...
server/vendor/jjwt-0.6.0.jar#1
Loading...
swagger/src/docs/swagger/helix-web-services-2016.1.0.yaml#10
Loading...
swagger/templates/Java/libraries/retrofit/ApiClient.mustache#9
Loading...
testing/src/main/java/com/perforce/helix_web_services/testing/ClientProvider.java#13
Loading...
testing/src/main/java/com/perforce/helix_web_services/testing/server/PerforceBranchesTests.java#7
Loading...
testing/src/main/java/com/perforce/helix_web_services/testing/server/PerforceChangesTests.java#6
Loading...
testing/src/main/java/com/perforce/helix_web_services/testing/server/PerforceClientsTests.java#7
Loading...
testing/src/main/java/com/perforce/helix_web_services/testing/server/PerforceCommandTests.java#6
Loading...
testing/src/main/java/com/perforce/helix_web_services/testing/server/PerforceCountersTests.java#6
Loading...
testing/src/main/java/com/perforce/helix_web_services/testing/server/PerforceDepotTests.java#8
Loading...
testing/src/main/java/com/perforce/helix_web_services/testing/server/PerforceGroupsTests.java#9
Loading...
testing/src/main/java/com/perforce/helix_web_services/testing/server/PerforceJobsTests.java#7
Loading...
testing/src/main/java/com/perforce/helix_web_services/testing/server/PerforceLabelsTests.java#6
Loading...
testing/src/main/java/com/perforce/helix_web_services/testing/server/PerforceListingTests.java#5
Loading...
testing/src/main/java/com/perforce/helix_web_services/testing/server/PerforceProtectionsTests.java#5
Loading...
testing/src/main/java/com/perforce/helix_web_services/testing/server/PerforceServersTests.java#5
Loading...
testing/src/main/java/com/perforce/helix_web_services/testing/server/PerforceStreamsTests.java#6
Loading...
testing/src/main/java/com/perforce/helix_web_services/testing/server/PerforceTriggersTests.java#6
Loading...
testing/src/main/java/com/perforce/helix_web_services/testing/server/PerforceUsersTests.java#8
Loading...
testing/src/main/java/com/perforce/helix_web_services/testing/server/git_fusion/GitFusionRepoConfigTests.java#2
Loading...
testing/src/main/java/com/perforce/helix_web_services/testing/server/project/ProjectListingTests.java#6
Loading...
testing/testng-all.xml#4
Loading...
Tip: Use n and p to cycle through the changes.