<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 06:02:47 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>MongoDB Jira</title>
    <link>https://jira.mongodb.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.7.1</version>
        <build-number>970001</build-number>
        <build-date>13-04-2023</build-date>
    </build-info>


<item>
            <title>[SERVER-65458] Parse and validate tenantId at the start of command processing</title>
                <link>https://jira.mongodb.org/browse/SERVER-65458</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;Today, we &lt;a href=&quot;https://github.com/mongodb/mongo/blob/fd399c5a5d340f029fcd09b8de112f01d71761f0/src/mongo/db/service_entry_point_common.cpp#L591&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;parse a command request&lt;/a&gt; before &lt;a href=&quot;https://github.com/mongodb/mongo/blob/fd399c5a5d340f029fcd09b8de112f01d71761f0/src/mongo/db/service_entry_point_common.cpp#L1321&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;parsing and validating the tenantId sent in either the security token or $tenant field&lt;/a&gt;. We&apos;d like to instead parse and validate the tenantId before parsing the command and set a separate field on the OpMsg itself with the validated tenantId. That way, when parsing the command request, we can use this validated tenantId when constructing the NamespaceString for the command. In order to do this we&apos;ll need to:&lt;br/&gt;
*Add an optional field &apos;tenantId&apos; to &lt;a href=&quot;#L54&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpMsg\https://github.com/mongodb/mongo/blob/fd399c5a5d340f029fcd09b8de112f01d71761f0/src/mongo/rpc/op_msg.h#L54&lt;/a&gt;. If this is set, it should mean a validated tenantId was sent with the command (either as security token or $tenant)&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;After &lt;a href=&quot;https://github.com/mongodb/mongo/blob/fd399c5a5d340f029fcd09b8de112f01d71761f0/src/mongo/rpc/metadata.cpp#L98-L100&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;parsing/validating the tenantId in rpc::readRequestMetadata&lt;/a&gt;, set the tenantId field on the OpMsg. We probably should to change auth::readSecurityTokenMetadata and parseDollarTenantFromRequest to return the tenantId as opposed to grabbing it from the opCtx, since we may remove these decorations in the future.&lt;/li&gt;
	&lt;li&gt;Move the call to rpc::readRequestMetadata() to before we parse the request:
	&lt;ul&gt;
		&lt;li&gt;on mongod: &lt;a href=&quot;https://github.com/mongodb/mongo/blob/fd399c5a5d340f029fcd09b8de112f01d71761f0/src/mongo/db/service_entry_point_common.cpp#L591&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;it should be moved before we parse the command invocation here &lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;on mongos: &lt;a href=&quot;https://github.com/mongodb/mongo/blob/3ffd0984dd72536d9943caf4db852d12458c72ae/src/mongo/s/commands/strategy.cpp#L551&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;it should be moved before we parse the command invocation here&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;Let&apos;s add a test in rpc/metadata_test.cpp that asserts the tenantId field is set on the opMsg after readRequestMetadata() is called only if the tenantId has been validated.&lt;/li&gt;
&lt;/ul&gt;
</description>
                <environment></environment>
        <key id="2022423">SERVER-65458</key>
            <summary>Parse and validate tenantId at the start of command processing</summary>
                <type id="3" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14718&amp;avatarType=issuetype">Task</type>
                                            <priority id="3" iconUrl="https://jira.mongodb.org/images/icons/priorities/major.svg">Major - P3</priority>
                        <status id="6" iconUrl="https://jira.mongodb.org/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="13201">Fixed</resolution>
                                        <assignee username="sophia.tan@mongodb.com">Sophia Tan</assignee>
                                    <reporter username="janna.golden@mongodb.com">Janna Golden</reporter>
                        <labels>
                    </labels>
                <created>Mon, 11 Apr 2022 18:52:57 +0000</created>
                <updated>Sun, 29 Oct 2023 21:39:40 +0000</updated>
                            <resolved>Thu, 9 Jun 2022 12:58:14 +0000</resolved>
                                                    <fixVersion>6.1.0-rc0</fixVersion>
                                                        <votes>0</votes>
                                    <watches>3</watches>
                                                                                                                <comments>
                            <comment id="4603492" author="xgen-internal-githook" created="Wed, 8 Jun 2022 22:31:56 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Sophia Tan&apos;, &apos;email&apos;: &apos;sophia_tll@hotmail.com&apos;, &apos;username&apos;: &apos;sophiatll&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-65458&quot; title=&quot;Parse and validate tenantId at the start of command processing&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-65458&quot;&gt;&lt;del&gt;SERVER-65458&lt;/del&gt;&lt;/a&gt; Parse and validate tenantId at the start of command processing&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/0dccb99a06a8de0f72be81fa332e28eafc511b76&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/0dccb99a06a8de0f72be81fa332e28eafc511b76&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="4603491" author="xgen-internal-githook" created="Wed, 8 Jun 2022 22:31:53 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Sophia Tan&apos;, &apos;email&apos;: &apos;sophia_tll@hotmail.com&apos;, &apos;username&apos;: &apos;sophiatll&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-65458&quot; title=&quot;Parse and validate tenantId at the start of command processing&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-65458&quot;&gt;&lt;del&gt;SERVER-65458&lt;/del&gt;&lt;/a&gt; Parse and validate tenantId at the start of command processing&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/10gen/mongo-enterprise-modules/commit/c12728c0c01a1d3f2b67d68dd5ee49756357d65e&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/10gen/mongo-enterprise-modules/commit/c12728c0c01a1d3f2b67d68dd5ee49756357d65e&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                                                <inwardlinks description="is depended on by">
                                        <issuelink>
            <issuekey id="2022517">SERVER-65459</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2050753">SERVER-66586</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18555" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname># of Sprints</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>4.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10011" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Backwards Compatibility</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10038"><![CDATA[Fully Compatible]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Thu, 28 Apr 2022 20:44:47 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        1 year, 35 weeks ago
    
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18254" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Dependencies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[]]></customfieldvalue>


                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_17050" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Downstream Team Attention</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="16941"><![CDATA[Not Needed]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10857" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>PM-2346</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10057" key="com.atlassian.jira.toolkit:lastusercommented">
                        <customfieldname>Last comment by Customer</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>true</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10056" key="com.atlassian.jira.toolkit:lastupdaterorcommenter">
                        <customfieldname>Last commenter</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>luke.bonanomi@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            1 year, 35 weeks ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>xgen-internal-githook</customfieldvalue>
            <customfieldvalue>janna.golden@mongodb.com</customfieldvalue>
            <customfieldvalue>sophia.tan@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|i0qqzz:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|i09q0c:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_23361" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Requested By</customfieldname>
                        <customfieldvalues>
                                

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_22250" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Special Downgrade Instructions Required</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="23343"><![CDATA[Not Needed]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10557" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="6099">Server Serverless 2022-05-02</customfieldvalue>
    <customfieldvalue id="6104">Server Serverless 2022-05-16</customfieldvalue>
    <customfieldvalue id="6161">Server Serverless 2022-05-30</customfieldvalue>
    <customfieldvalue id="6268">Server Serverless 2022-06-13</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10053" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>Time In Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_22870" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Triagers</customfieldname>
                        <customfieldvalues>
                                

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_14350" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>serverRank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|i0qd5b:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                    </customfields>
    </item>
</channel>
</rss>