Skip to content

Commit 4529fd6

Browse files
committed
Fix for #1849
1 parent 2a13931 commit 4529fd6

File tree

2 files changed

+17
-11
lines changed

2 files changed

+17
-11
lines changed

src/WebJobs.Script/Extensions/HttpRequestMessageExtensions.cs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,19 +60,21 @@ public static bool IsAuthDisabled(this HttpRequestMessage request)
6060
/// the specified level.
6161
/// </summary>
6262
/// <param name="request">The request.</param>
63-
/// <param name="level">The level to check.</param>
63+
/// <param name="levelToCheck">The level to check.</param>
6464
/// <param name="keyName">Optional key name if key based auth is being used</param>
6565
/// <returns>True if the request is authorized at the specified level,
6666
/// false otherwise.</returns>
67-
public static bool HasAuthorizationLevel(this HttpRequestMessage request, AuthorizationLevel level, string keyName = null)
67+
public static bool HasAuthorizationLevel(this HttpRequestMessage request, AuthorizationLevel levelToCheck, string keyName = null)
6868
{
69-
if (request.IsAuthDisabled())
69+
if (request.IsAuthDisabled() || levelToCheck == AuthorizationLevel.Anonymous)
7070
{
71+
// when auth is disabled or the required level is Anonymous
72+
// the request is authorized
7173
return true;
7274
}
7375

74-
var authorizationLevel = request.GetAuthorizationLevel();
75-
if (authorizationLevel == AuthorizationLevel.Admin)
76+
var requestAuthorizationLevel = request.GetAuthorizationLevel();
77+
if (requestAuthorizationLevel == AuthorizationLevel.Admin)
7678
{
7779
// requests authorized at admin level are always allowed
7880
return true;
@@ -89,7 +91,7 @@ public static bool HasAuthorizationLevel(this HttpRequestMessage request, Author
8991
}
9092

9193
// otherwise, the request level must exactly match the required level
92-
return authorizationLevel == level;
94+
return requestAuthorizationLevel == levelToCheck;
9395
}
9496

9597
public static string GetHeaderValueOrDefault(this HttpRequestMessage request, string headerName)

test/WebJobs.Script.Tests/Extensions/HttpRequestMessageExtensions.cs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -133,19 +133,23 @@ public void HasAuthorizationLevel_ReturnsExpectedValue()
133133
{
134134
var request = new HttpRequestMessage();
135135
Assert.True(request.HasAuthorizationLevel(AuthorizationLevel.Anonymous));
136-
137136
Assert.False(request.HasAuthorizationLevel(AuthorizationLevel.Function));
137+
Assert.False(request.HasAuthorizationLevel(AuthorizationLevel.Admin));
138+
138139
request.SetProperty(ScriptConstants.AzureFunctionsHttpRequestAuthorizationLevelKey, AuthorizationLevel.Anonymous);
140+
Assert.True(request.HasAuthorizationLevel(AuthorizationLevel.Anonymous));
139141
Assert.False(request.HasAuthorizationLevel(AuthorizationLevel.Function));
142+
Assert.False(request.HasAuthorizationLevel(AuthorizationLevel.Admin));
143+
140144
request.SetProperty(ScriptConstants.AzureFunctionsHttpRequestAuthorizationLevelKey, AuthorizationLevel.Function);
145+
Assert.True(request.HasAuthorizationLevel(AuthorizationLevel.Anonymous));
141146
Assert.True(request.HasAuthorizationLevel(AuthorizationLevel.Function));
142-
Assert.False(request.HasAuthorizationLevel(AuthorizationLevel.Anonymous));
143-
144147
Assert.False(request.HasAuthorizationLevel(AuthorizationLevel.Admin));
148+
145149
request.SetProperty(ScriptConstants.AzureFunctionsHttpRequestAuthorizationLevelKey, AuthorizationLevel.Admin);
146-
Assert.True(request.HasAuthorizationLevel(AuthorizationLevel.Admin));
147-
Assert.True(request.HasAuthorizationLevel(AuthorizationLevel.Function));
148150
Assert.True(request.HasAuthorizationLevel(AuthorizationLevel.Anonymous));
151+
Assert.True(request.HasAuthorizationLevel(AuthorizationLevel.Function));
152+
Assert.True(request.HasAuthorizationLevel(AuthorizationLevel.Admin));
149153

150154
request.SetProperty(ScriptConstants.AzureFunctionsHttpRequestAuthorizationLevelKey, AuthorizationLevel.Anonymous);
151155
Assert.False(request.HasAuthorizationLevel(AuthorizationLevel.Admin));

0 commit comments

Comments
 (0)