Exemple #1
0
 def frontend(self, frontend_config):
     # will use in-memory storage
     instance = OpenIDConnectFrontend(lambda ctx, req: None,
                                      INTERNAL_ATTRIBUTES, frontend_config,
                                      BASE_URL, "oidc_frontend")
     instance.register_endpoints(["foo_backend"])
     return instance
Exemple #2
0
    def test_token_endpoint_issues_refresh_tokens_if_configured(
            self, context, frontend_config, authn_req):
        frontend_config["provider"][
            "refresh_token_lifetime"] = 60 * 60 * 24 * 365
        frontend = OpenIDConnectFrontend(lambda ctx, req: None,
                                         INTERNAL_ATTRIBUTES, frontend_config,
                                         BASE_URL, "oidc_frontend")
        frontend.register_endpoints(["test_backend"])

        user_id = "test_user"
        self.insert_client_in_client_db(frontend, authn_req["redirect_uri"])
        self.insert_user_in_user_db(frontend, user_id)
        authn_req["response_type"] = "code"
        authn_resp = frontend.provider.authorize(authn_req, user_id)

        context.request = AccessTokenRequest(
            redirect_uri=authn_req["redirect_uri"],
            code=authn_resp["code"]).to_dict()
        credentials = "{}:{}".format(CLIENT_ID, CLIENT_SECRET)
        basic_auth = urlsafe_b64encode(
            credentials.encode("utf-8")).decode("utf-8")
        context.request_authorization = "Basic {}".format(basic_auth)

        response = frontend.token_endpoint(context)
        parsed = AccessTokenResponse().deserialize(response.message, "json")
        assert parsed["refresh_token"]
 def frontend(self, frontend_config):
     # will use in-memory storage
     instance = OpenIDConnectFrontend(
         lambda ctx, req: None, INTERNAL_ATTRIBUTES, frontend_config, BASE_URL, "oidc_frontend"
     )
     instance.register_endpoints(["foo_backend"])
     return instance
Exemple #4
0
 def create_frontend_with_extra_scopes(self, frontend_config_with_extra_scopes):
     # will use in-memory storage
     internal_attributes_with_extra_scopes = copy.deepcopy(INTERNAL_ATTRIBUTES)
     internal_attributes_with_extra_scopes["attributes"].update(EXTRA_CLAIMS)
     instance = OpenIDConnectFrontend(
         lambda ctx, req: None,
         internal_attributes_with_extra_scopes,
         frontend_config_with_extra_scopes,
         BASE_URL,
         "oidc_frontend_with_extra_scopes",
     )
     instance.register_endpoints(["foo_backend"])
     return instance
Exemple #5
0
    def test_token_endpoint_issues_refresh_tokens_if_configured(self, context, frontend_config, authn_req):
        frontend_config["provider"]["refresh_token_lifetime"] = 60 * 60 * 24 * 365
        frontend = OpenIDConnectFrontend(lambda ctx, req: None, INTERNAL_ATTRIBUTES,
                                         frontend_config, BASE_URL, "oidc_frontend")
        frontend.register_endpoints(["test_backend"])

        user_id = "test_user"
        self.insert_client_in_client_db(frontend, authn_req["redirect_uri"])
        self.insert_user_in_user_db(frontend, user_id)
        authn_req["response_type"] = "code"
        authn_resp = frontend.provider.authorize(authn_req, user_id)

        context.request = AccessTokenRequest(redirect_uri=authn_req["redirect_uri"], code=authn_resp["code"]).to_dict()
        credentials = "{}:{}".format(CLIENT_ID, CLIENT_SECRET)
        basic_auth = urlsafe_b64encode(credentials.encode("utf-8")).decode("utf-8")
        context.request_authorization = "Basic {}".format(basic_auth)

        response = frontend.token_endpoint(context)
        parsed = AccessTokenResponse().deserialize(response.message, "json")
        assert parsed["refresh_token"]