Skip to content
Snippets Groups Projects
Verified Commit eb9602ca authored by Matthias Käppler's avatar Matthias Käppler :two: Committed by GitLab
Browse files

Merge branch 'mk-cc-jwk-rfc7638-kid' into 'master'

Use RFC 7638 thumbprints for JWT kids

See merge request !173689



Merged-by: Matthias Käppler's avatarMatthias Käppler <mkaeppler@gitlab.com>
Approved-by: default avatarAleksei Lipniagov <alipniagov@gitlab.com>
Approved-by: default avatarRoy Zwambag <rzwambag@gitlab.com>
Reviewed-by: default avatarAleksei Lipniagov <alipniagov@gitlab.com>
parents 3cf0ba6a f054929e
No related branches found
No related tags found
1 merge request!173689Use RFC 7638 thumbprints for JWT kids
Pipeline #1562275912 passed with warnings
Pipeline: E2E GDK

#1562296169

    Pipeline: E2E Omnibus GitLab EE

    #1562286181

      Pipeline: E2E CNG

      #1562286161

        +30
        ......@@ -48,7 +48,7 @@ def load_signing_key
        raise 'Cloud Connector: no key found' unless key_data
        ::JWT::JWK.new(OpenSSL::PKey::RSA.new(key_data))
        ::JWT::JWK.new(OpenSSL::PKey::RSA.new(key_data), kid_generator: ::JWT::JWK::Thumbprint)
        end
        def scopes_for(resource)
        ......
        ......@@ -6,7 +6,15 @@
        let(:cut_off_date) { 1.month.ago }
        let(:bundled_with) { {} }
        let(:backend) { 'gitlab-ai-gateway' }
        let(:available_service_data) { described_class.new(:duo_chat, cut_off_date, bundled_with, backend) }
        let_it_be(:rsa_key) { OpenSSL::PKey::RSA.new(2048) }
        let_it_be(:expected_key_data) { Rails.application.credentials.openid_connect_signing_key }
        subject(:available_service_data) { described_class.new(:duo_chat, cut_off_date, bundled_with, backend) }
        before do
        allow(OpenSSL::PKey::RSA).to receive(:new).with(expected_key_data).and_return(rsa_key)
        end
        describe '#access_token' do
        let(:resource) { create(:user) }
        ......@@ -35,7 +43,7 @@
        allow(Gitlab::CloudConnector).to receive(:gitlab_realm).and_return(gitlab_realm)
        end
        it 'returns the constructed token' do
        it 'returns the encoded token' do
        expect(Gitlab::CloudConnector::JSONWebToken).to receive(:new).with(
        issuer: issuer,
        audience: backend,
        ......@@ -50,6 +58,16 @@
        expect(access_token).to eq(encoded_token_string)
        end
        it 'uses RFC 7638 thumbprint key generator to compute kid' do
        jwk = ::JWT::JWK.new(rsa_key, kid_generator: ::JWT::JWK::Thumbprint)
        _, token_header = *::JWT.decode(access_token, nil, false)
        actual_kid = token_header['kid']
        expected_kid = jwk.kid
        expect(actual_kid).to eq(expected_kid)
        end
        context 'when cloud_connector_jwt_replace is disabled' do
        before do
        stub_feature_flags(cloud_connector_jwt_replace: false)
        ......
        0% Loading or .
        You are about to add 0 people to the discussion. Proceed with caution.
        Finish editing this message first!
        Please register or to comment