Skip to content

Commit f7930b0

Browse files
authored
Defaulting SwtAuthenticationEnabled to False (#10197)
1 parent dee7fae commit f7930b0

File tree

6 files changed

+29
-7
lines changed

6 files changed

+29
-7
lines changed

CustomDictionary.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,8 @@
7777
<Word>EventHub</Word>
7878
<Word>Non</Word>
7979
<Word>Decryptable</Word>
80-
</Recognized>
80+
<Word>Swt</Word>
81+
</Recognized>
8182
<Deprecated/>
8283
<Compound>
8384
<Term CompoundAlternate="CancellationToken">cancellationToken</Term>

src/WebJobs.Script.WebHost/Filters/AuthorizationLevelAttribute.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
using System.Web.Http.Controllers;
1313
using System.Web.Http.Filters;
1414
using Microsoft.Azure.WebJobs.Extensions.Http;
15+
using Microsoft.Azure.WebJobs.Script.Config;
1516
using Microsoft.Azure.WebJobs.Script.WebHost.Security;
1617

1718
namespace Microsoft.Azure.WebJobs.Script.WebHost.Filters
@@ -55,7 +56,11 @@ public async override Task OnAuthorizationAsync(HttpActionContext actionContext,
5556
// If the request has not yet been authenticated, authenticate it
5657
if (requestAuthorizationLevel == AuthorizationLevel.Anonymous)
5758
{
58-
string armToken = GetArmTokenHeader(actionContext);
59+
string armToken = null;
60+
if (FeatureFlags.IsEnabled(ScriptConstants.FeatureFlagSwtAuthenticationEnabled))
61+
{
62+
armToken = GetArmTokenHeader(actionContext);
63+
}
5964

6065
if (armToken != null)
6166
{

src/WebJobs.Script/Config/FeatureFlags.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public static class FeatureFlags
1414
{
1515
public static bool IsEnabled(string name)
1616
{
17-
string featureFlags = Environment.GetEnvironmentVariable("AzureWebJobsFeatureFlags");
17+
string featureFlags = Environment.GetEnvironmentVariable(EnvironmentSettingNames.AzureWebJobsFeatureFlags);
1818
if (!string.IsNullOrEmpty(featureFlags))
1919
{
2020
string[] flags = featureFlags.Split(',');

src/WebJobs.Script/EnvironmentSettingNames.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ public static class EnvironmentSettingNames
3232
public const string AzureWebsiteArmCacheEnabled = "WEBSITE_FUNCTIONS_ARMCACHE_ENABLED";
3333
public const string TestDataCapEnabled = "WEBSITE_FUNCTIONS_TESTDATA_CAP_ENABLED";
3434
public const string AzureWebsiteRuntimeSiteName = "WEBSITE_DEPLOYMENT_ID";
35+
public const string AzureWebJobsFeatureFlags = "AzureWebJobsFeatureFlags";
3536

3637
/// <summary>
3738
/// Environment variable dynamically set by the platform when it is safe to

src/WebJobs.Script/ScriptConstants.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ public static class ScriptConstants
8383

8484
public const string FeatureFlagDisableShadowCopy = "DisableShadowCopy";
8585
public const string FeatureFlagsEnableDynamicExtensionLoading = "EnableDynamicExtensionLoading";
86+
public const string FeatureFlagSwtAuthenticationEnabled = "SwtAuthenticationEnabled";
8687

8788
public const string SiteAzureFunctionsUriFormat = "https://{0}.azurewebsites.net/azurefunctions";
8889
public const string ScmSiteUriFormat = "https://{0}.scm.azurewebsites.net";

test/WebJobs.Script.Tests/Filters/AuthorizationLevelAttributeTests.cs

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -396,9 +396,13 @@ public async Task OnAuthorization_WithNamedKeyHeader_Succeeds()
396396
Assert.Null(actionContext.Response);
397397
}
398398

399-
[Fact]
400-
public async Task OnAuthorization_Arm_Success_SetsAdminAuthLevel()
399+
[Theory]
400+
[InlineData(true)]
401+
[InlineData(false)]
402+
public async Task OnAuthorization_Arm_SetsAdminAuthLevel_WhenSwtAuthenticationEnabled(bool swtAuthenticationEnabled)
401403
{
404+
string featureFlags = swtAuthenticationEnabled ? "Foo,SwtAuthenticationEnabled,Bar" : "Foo,Bar";
405+
402406
byte[] key = GenerateKeyBytes();
403407
string keyString = GenerateKeyHexString(key);
404408
string token = CreateSimpleWebToken(DateTime.UtcNow.AddMinutes(5), key);
@@ -411,12 +415,22 @@ public async Task OnAuthorization_Arm_Success_SetsAdminAuthLevel()
411415
actionContext.ControllerContext.Request = request;
412416

413417
using (new TestScopedEnvironmentVariable(EnvironmentSettingNames.WebsiteAuthEncryptionKey, keyString))
418+
using (new TestScopedEnvironmentVariable(EnvironmentSettingNames.AzureWebJobsFeatureFlags, featureFlags))
414419
{
415420
await attribute.OnAuthorizationAsync(actionContext, CancellationToken.None);
416421
}
417422

418-
Assert.Null(actionContext.Response);
419-
Assert.Equal(AuthorizationLevel.Admin, actionContext.Request.GetAuthorizationLevel());
423+
AuthorizationLevel authorizationLevel = actionContext.Request.GetAuthorizationLevel();
424+
if (swtAuthenticationEnabled)
425+
{
426+
Assert.Null(actionContext.Response);
427+
Assert.Equal(AuthorizationLevel.Admin, authorizationLevel);
428+
}
429+
else
430+
{
431+
Assert.Equal(HttpStatusCode.Unauthorized, actionContext.Response.StatusCode);
432+
Assert.Equal(AuthorizationLevel.Anonymous, authorizationLevel);
433+
}
420434
}
421435

422436
[Fact]

0 commit comments

Comments
 (0)