Repository: jupyterhub/ltiauthenticator

Issue:
Configured oauth_consumer_key not known
<!-- Thank you for contributing. These HTML comments will not render in the issue, but you can delete them once you've read them if you prefer! -->

### Bug description
I am testing PR #48 with Helm chart zero-to-jupyterhub-k8s 1.1.1 as follows:

1. I use the Docker image jupyterhub/k8s-hub:1.1.1 as base. This is working fine with the configuration below.
2. install the latest ltiauthenticator
3. configure the authenticator in values.yml

```
hub:
  config:
    LTIAuthenticator:
      consumers: {
        "aaaaaaaaaaaaaaaaaaaaaaa": "bbbbbbbbbbbbbbbbb"
        }
    JupyterHub:
      authenticator_class: ltiauthenticator.LTIAuthenticator
```

#### Expected behaviour
<!-- Tell us what you thought would happen. -->
Authentication is working as with ltiauthenticator 1.0.0

#### Actual behaviour
<!-- Tell us what actually happens. -->
Authentication fails. The issue raises here:

```
        if args["oauth_consumer_key"] not in self.consumers:
            raise HTTPError(401, "unknown oauth_consumer_key")
```

I think the LTI11Authenticator does not get the configuration items from the values.yml (content is `{}` at initialization); the attribute `args["oauth_consumer_key"]` contains the correct value. 

I tried then to find where the configuration values are read, but I could not find that piece of code here or in JupyterHub.

### Your personal set up
<!--
Tell us a little about the system you're using.
Please include information about how you installed,
e.g. are you using a distribution such as zero-to-jupyterhub or the-littlest-jupyterhub.
 -->
Kubernetes setup is straight forward. For testing, my Dockerfile to build the test environment looks like (forked the repo to add additional debugging output only):
```
FROM jupyterhub/k8s-hub:1.1.1

USER 0
RUN git clone https://github.com/bengig/ltiauthenticator.git && cd ltiauthenticator && git checkout jhub-integration && pip3 install .

USER 1000
CMD ["jupyterhub", "--config", "/usr/local/etc/jupyterhub/jupyterhub_config.py"]
```


Comments:

Patch:
diff --git a/ltiauthenticator/lti11/auth.py b/ltiauthenticator/lti11/auth.py
index 016cfa6..641b17d 100644
--- a/ltiauthenticator/lti11/auth.py
+++ b/ltiauthenticator/lti11/auth.py
@@ -120,10 +120,8 @@ class LTI11Authenticator(Authenticator):
 
             # raise an http error if the username_key is not in the request's arguments.
             if self.username_key not in args.keys():
-                raise HTTPError(
-                    400,
-                    "%s did not match any of the launch request arguments."
-                    % self.username_key,
+                self.log.warning(
+                    "%s the specified username_key did not match any of the launch request arguments."
                 )
 
             # get the username_key. if empty, fetch the username from the request's user_id value.


Test patch:
diff --git a/tests/test_lti11_authenticator.py b/tests/test_lti11_authenticator.py
index 267ceac..db45300 100644
--- a/tests/test_lti11_authenticator.py
+++ b/tests/test_lti11_authenticator.py
@@ -74,6 +74,35 @@ async def test_authenticator_returns_auth_dict_when_custom_canvas_user_id_is_emp
         assert result["name"] == expected["name"]
 
 
+@pytest.mark.asyncio
+async def test_authenticator_returns_auth_dict_when_custom_canvas_user_id_does_not_exist(
+    make_lti11_success_authentication_request_args,
+):
+    """
+    Do we get a valid username when the custom_canvas_user_id parameter does not exist in the launch request?
+    """
+    local_args = make_lti11_success_authentication_request_args()
+    del local_args["custom_canvas_user_id"]
+    with patch.object(
+        LTI11LaunchValidator, "validate_launch_request", return_value=True
+    ):
+        authenticator = LTI11Authenticator()
+        handler = Mock(
+            spec=RequestHandler,
+            get_secure_cookie=Mock(return_value=json.dumps(["key", "secret"])),
+            request=Mock(
+                arguments=local_args,
+                headers={},
+                items=[],
+            ),
+        )
+        result = await authenticator.authenticate(handler, None)
+        expected = {
+            "name": "185d6c59731a553009ca9b59ca3a885100000",
+        }
+        assert result["name"] == expected["name"]
+
+
 @pytest.mark.asyncio
 async def test_authenticator_returns_correct_username_when_using_lis_person_contact_email_primary(
     make_lti11_success_authentication_request_args,