Add Basic OpenID Connect support including UserInfo endpoint

will scope names only contain characters that are acceptable to use in a python function name? For example, could a scope be "foo:bar"?