You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwhisk.apache.org by st...@apache.org on 2020/10/12 12:47:30 UTC

[openwhisk] branch master updated: Actions with require-whisk-auth annotation as boolean false are rejected by controller (#4989)

This is an automated email from the ASF dual-hosted git repository.

style95 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openwhisk.git


The following commit(s) were added to refs/heads/master by this push:
     new 9134a03  Actions with require-whisk-auth annotation as boolean false are rejected by controller (#4989)
9134a03 is described below

commit 9134a03c37f9be104cfc3523748ea6b8cfbfea38
Author: Nitika Agarwal <54...@users.noreply.github.com>
AuthorDate: Mon Oct 12 18:17:11 2020 +0530

    Actions with require-whisk-auth annotation as boolean false are rejected by controller (#4989)
    
    * Actions with require-whisk-auth annotation as boolean false are rejected by controller
    
    * Fix testcase
---
 .../apache/openwhisk/core/controller/WebActions.scala  |  9 +++++----
 .../openwhisk/core/cli/test/WskWebActionsTests.scala   | 18 ++++++++++++++++++
 2 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/core/controller/src/main/scala/org/apache/openwhisk/core/controller/WebActions.scala b/core/controller/src/main/scala/org/apache/openwhisk/core/controller/WebActions.scala
index 17536a5..4cf7496 100644
--- a/core/controller/src/main/scala/org/apache/openwhisk/core/controller/WebActions.scala
+++ b/core/controller/src/main/scala/org/apache/openwhisk/core/controller/WebActions.scala
@@ -784,10 +784,11 @@ trait WhiskWebActionsApi
     annotations
       .get(Annotations.RequireWhiskAuthAnnotation)
       .map {
-        case JsString(auth)           => checkAuthHeader(auth) // allowed if auth matches header
-        case JsNumber(auth)           => checkAuthHeader(auth.toString) // allowed if auth matches header
-        case JsTrue | JsBoolean(true) => authenticatedUser.isDefined // allowed if user already authenticated
-        case _                        => false // not allowed, something is not right
+        case JsString(auth)             => checkAuthHeader(auth) // allowed if auth matches header
+        case JsNumber(auth)             => checkAuthHeader(auth.toString) // allowed if auth matches header
+        case JsTrue | JsBoolean(true)   => authenticatedUser.isDefined // allowed if user already authenticated
+        case JsFalse | JsBoolean(false) => true // allowed if the require-whisk-auth is specified as false
+        case _                          => false // not allowed, something is not right
       }
   }
 
diff --git a/tests/src/test/scala/org/apache/openwhisk/core/cli/test/WskWebActionsTests.scala b/tests/src/test/scala/org/apache/openwhisk/core/cli/test/WskWebActionsTests.scala
index 85008c3..e4f519c 100644
--- a/tests/src/test/scala/org/apache/openwhisk/core/cli/test/WskWebActionsTests.scala
+++ b/tests/src/test/scala/org/apache/openwhisk/core/cli/test/WskWebActionsTests.scala
@@ -147,6 +147,24 @@ class WskWebActionsTests extends TestHelpers with WskTestHelpers with RestUtil w
       authorizedResponse.body.asString.parseJson.asJsObject.fields("__ow_user").convertTo[String] shouldBe namespace
   }
 
+  /**
+   * Tests web action not requiring authentication.
+   */
+  it should "create a web action not requiring authentication accessible via HTTPS" in withAssetCleaner(wskprops) {
+    (wp, assetHelper) =>
+      val name = "webaction"
+      val file = Some(TestUtils.getTestActionFilename("echo.js"))
+      val host = getServiceURL()
+      val url = s"$host$testRoutePath/$namespace/default/$name.json"
+
+      assetHelper.withCleaner(wsk.action, name) { (action, _) =>
+        action.create(name, file, web = Some("true"), annotations = Map("require-whisk-auth" -> false.toJson))
+      }
+
+      val unauthorizedResponse = RestAssured.given().config(sslconfig).get(url)
+      unauthorizedResponse.statusCode shouldBe 200
+  }
+
   it should "ensure that CORS header is preserved for custom options" in withAssetCleaner(wskprops) {
     (wp, assetHelper) =>
       val name = "webaction"