Skip to content

DEV-3876: Add pubkey AuthN#1334

Open
mpsolano wants to merge 11 commits intomasterfrom
feat/dev-3876-add-dbgap-sftp-pubkey-authn
Open

DEV-3876: Add pubkey AuthN#1334
mpsolano wants to merge 11 commits intomasterfrom
feat/dev-3876-add-dbgap-sftp-pubkey-authn

Conversation

@mpsolano
Copy link
Copy Markdown

@mpsolano mpsolano commented Feb 19, 2026

Implements public key authentication for connection to a dbGaP SFTP server as specified in the Gen3 Product Feature Document here.

Also patches paramiko at runtime to use a FIPS compliant hashing algorithm (SHA256 instead of MD5) for fingerprinting.

@coveralls
Copy link
Copy Markdown

coveralls commented Feb 19, 2026

Pull Request Test Coverage Report for Build 23868987927

Details

  • 0 of 0 changed or added relevant lines in 0 files are covered.
  • 134 unchanged lines in 1 file lost coverage.
  • Overall coverage remained the same at 75.067%

Files with Coverage Reduction New Missed Lines %
sync/sync_users.py 134 82.02%
Totals Coverage Status
Change from base Build 23756457076: 0.0%
Covered Lines: 8460
Relevant Lines: 11270

💛 - Coveralls

@github-actions
Copy link
Copy Markdown

Test summary after running integration tests

filepath passed failed skipped SUBTOTAL
tests/test_oauth2.py 15 0 0 15
tests/test_centralized_auth.py 15 1 0 16
tests/test_audit_service.py 3 0 3 6
tests/test_data_upload.py 8 0 1 9
tests/test_presigned_url.py 7 0 0 7
tests/test_dbgap.py 4 0 1 5
tests/test_drs_endpoint.py 4 0 0 4
tests/test_user_token.py 5 0 0 5
tests/test_oidc_client.py 2 0 0 2
tests/test_client_credentials.py 1 0 0 1
tests/test_register_user.py 2 0 0 2
tests/test_google_data_access.py 1 0 0 1
tests/test_ras_authn.py 0 0 3 3
TOTAL 67 1 8 76

Test summary after rerunning failed integration tests

filepath passed SUBTOTAL
tests/test_centralized_auth.py 1 1
TOTAL 1 1

Please find the detailed integration test report here

Please find the detailed integration test report after rerunning failed tests here

Please find the Github Action logs here

@github-actions
Copy link
Copy Markdown

Test summary after running integration tests

filepath passed failed skipped SUBTOTAL
tests/test_oauth2.py 15 0 0 15
tests/test_centralized_auth.py 16 0 0 16
tests/test_audit_service.py 3 0 3 6
tests/test_data_upload.py 8 0 1 9
tests/test_presigned_url.py 7 0 0 7
tests/test_dbgap.py 4 0 1 5
tests/test_user_token.py 4 1 0 5
tests/test_drs_endpoint.py 4 0 0 4
tests/test_register_user.py 2 0 0 2
tests/test_google_data_access.py 1 0 0 1
tests/test_client_credentials.py 1 0 0 1
tests/test_oidc_client.py 2 0 0 2
tests/test_ras_authn.py 0 0 3 3
TOTAL 67 1 8 76

Test summary after rerunning failed integration tests

filepath passed SUBTOTAL
tests/test_user_token.py 1 1
TOTAL 1 1

Please find the detailed integration test report here

Please find the detailed integration test report after rerunning failed tests here

Please find the Github Action logs here

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 6, 2026

Test summary after running integration tests

filepath passed failed skipped SUBTOTAL
tests/test_oauth2.py 15 0 0 15
tests/test_centralized_auth.py 15 1 0 16
tests/test_audit_service.py 3 0 3 6
tests/test_data_upload.py 8 0 1 9
tests/test_presigned_url.py 7 0 0 7
tests/test_dbgap.py 4 0 1 5
tests/test_drs_endpoint.py 4 0 0 4
tests/test_register_user.py 2 0 0 2
tests/test_google_data_access.py 1 0 0 1
tests/test_client_credentials.py 1 0 0 1
tests/test_user_token.py 5 0 0 5
tests/test_oidc_client.py 2 0 0 2
tests/test_ras_authn.py 0 0 3 3
TOTAL 67 1 8 76

Test summary after rerunning failed integration tests

filepath passed SUBTOTAL
tests/test_centralized_auth.py 1 1
TOTAL 1 1

Please find the detailed integration test report here

Please find the detailed integration test report after rerunning failed tests here

Please find the Github Action logs here

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 9, 2026

Failed to Prepare CI environment

Please find the Github Action logs here

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 9, 2026

Test summary after running integration tests

filepath passed failed skipped SUBTOTAL
tests/test_oauth2.py 15 0 0 15
tests/test_centralized_auth.py 15 1 0 16
tests/test_audit_service.py 3 0 3 6
tests/test_data_upload.py 8 0 1 9
tests/test_presigned_url.py 7 0 0 7
tests/test_dbgap.py 4 0 1 5
tests/test_drs_endpoint.py 4 0 0 4
tests/test_oidc_client.py 2 0 0 2
tests/test_client_credentials.py 1 0 0 1
tests/test_register_user.py 2 0 0 2
tests/test_user_token.py 5 0 0 5
tests/test_google_data_access.py 1 0 0 1
tests/test_ras_authn.py 0 0 3 3
TOTAL 67 1 8 76

Test summary after rerunning failed integration tests

filepath passed SUBTOTAL
tests/test_centralized_auth.py 1 1
TOTAL 1 1

Please find the detailed integration test report here

Please find the detailed integration test report after rerunning failed tests here

Please find the Github Action logs here

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 9, 2026

filepath passed skipped SUBTOTAL
tests/test_oauth2.py 15 0 15
tests/test_centralized_auth.py 16 0 16
tests/test_audit_service.py 3 3 6
tests/test_data_upload.py 8 1 9
tests/test_presigned_url.py 7 0 7
tests/test_dbgap.py 4 1 5
tests/test_drs_endpoint.py 4 0 4
tests/test_user_token.py 5 0 5
tests/test_register_user.py 2 0 2
tests/test_google_data_access.py 1 0 1
tests/test_client_credentials.py 1 0 1
tests/test_oidc_client.py 2 0 2
tests/test_ras_authn.py 0 3 3
TOTAL 68 8 76

Please find the detailed integration test report here

Please find the Github Action logs here

@mpsolano mpsolano marked this pull request as ready for review March 11, 2026 16:43
parameters["key_filename"] = str(server.get("private_key_filename"))

# patch paramiko to use sha256 instead of md5 for fips compliance
if server.get("is_fips_enabled", False):
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should remove this feature flag and call out in the release notes, maybe under Deployment Changes, that paramiko will no longer connect using md5.

Also, could we update this so paramiko's sha256 is used for both authN flows?

@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 1, 2026

filepath passed skipped SUBTOTAL
tests/test_oauth2.py 15 0 15
tests/test_centralized_auth.py 16 0 16
tests/test_audit_service.py 3 3 6
tests/test_data_upload.py 8 1 9
tests/test_presigned_url.py 7 0 7
tests/test_dbgap.py 4 1 5
tests/test_user_token.py 5 0 5
tests/test_drs_endpoint.py 4 0 4
tests/test_register_user.py 2 0 2
tests/test_google_data_access.py 1 0 1
tests/test_oidc_client.py 2 0 2
tests/test_client_credentials.py 1 0 1
tests/test_ras_authn.py 0 3 3
TOTAL 68 8 76

Please find the detailed integration test report here

Please find the Github Action logs here

Also switch to lambda for enhanced readability.
@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 1, 2026

Test summary after running integration tests

filepath passed failed skipped SUBTOTAL
tests/test_oauth2.py 15 0 0 15
tests/test_centralized_auth.py 15 1 0 16
tests/test_audit_service.py 3 0 3 6
tests/test_data_upload.py 8 0 1 9
tests/test_presigned_url.py 7 0 0 7
tests/test_dbgap.py 4 0 1 5
tests/test_drs_endpoint.py 4 0 0 4
tests/test_register_user.py 2 0 0 2
tests/test_user_token.py 5 0 0 5
tests/test_google_data_access.py 1 0 0 1
tests/test_client_credentials.py 1 0 0 1
tests/test_oidc_client.py 2 0 0 2
tests/test_ras_authn.py 0 0 3 3
TOTAL 67 1 8 76

Test summary after rerunning failed integration tests

filepath passed SUBTOTAL
tests/test_centralized_auth.py 1 1
TOTAL 1 1

Please find the detailed integration test report here

Please find the detailed integration test report after rerunning failed tests here

Please find the Github Action logs here

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants