Ejemplo n.º 1
0
        self.config = get_config(self.rp_base, PROVIDER)
        self.rp_config = RpConfig(self.config)

    @staticmethod
    def get_instance():
        """
        Returns an instance of the singleton class.
        """
        if not TestConfiguration._instance:
            TestConfiguration._instance = TestConfiguration()
        return TestConfiguration._instance


CLIENT_ID = "client_1"

_, idp_key_file = FileGenerator.get_instance().generate_cert("idp")
KC_RSA = keybundle_from_local_file(
    idp_key_file.name,
    "RSA",
    ["ver", "sig"],
    "op_sign"
)
KEYJAR = KeyJar()
KEYJAR[CLIENT_ID] = [KC_RSA]
KEYJAR[""] = KC_RSA
JWKS = KEYJAR.export_jwks()

CDB = {
    CLIENT_ID: {
        "client_secret": "client_secret",
        "redirect_uris": [("%sauthz" % TestConfiguration.get_instance().rp_base, None)],
Ejemplo n.º 2
0
        self.config = get_config(self.rp_base, PROVIDER)
        self.rp_config = RpConfig(self.config)

    @staticmethod
    def get_instance():
        """
        Returns an instance of the singleton class.
        """
        if not TestConfiguration._instance:
            TestConfiguration._instance = TestConfiguration()
        return TestConfiguration._instance


CLIENT_ID = "client_1"

_, idp_key_file = FileGenerator.get_instance().generate_cert("idp")
KC_RSA = keybundle_from_local_file(idp_key_file.name, "RSA", ["ver", "sig"],
                                   "op_sign")
KEYJAR = KeyJar()
KEYJAR[CLIENT_ID] = [KC_RSA]
KEYJAR[""] = KC_RSA
JWKS = KEYJAR.export_jwks()

CDB = {
    CLIENT_ID: {
        "client_secret":
        "client_secret",
        "redirect_uris":
        [("%sauthz" % TestConfiguration.get_instance().rp_base, None)],
        "client_salt":
        "salted",
Ejemplo n.º 3
0
    def __init__(self):
        if TestConfiguration._instance:
            raise TypeError('Singletons must be accessed through `get_instance()`.')
        else:
            TestConfiguration._instance = self
        # Add test directory to path to be able to import configurations
        sys.path.append(os.path.dirname(__file__))

        if os.path.isfile("/usr/bin/xmlsec1"):
            self.xmlsec_path = "/usr/bin/xmlsec1"
        elif os.path.isfile("/usr/local/bin/xmlsec1"):
            self.xmlsec_path = "/usr/local/bin/xmlsec1"

        proxy_config_dict = {"BASE": "https://localhost:8090",
                             "COOKIE_STATE_NAME": "TEST_STATE",
                             "STATE_ENCRYPTION_KEY": "ASDasd123",
                             "PLUGIN_PATH": [os.path.dirname(__file__)],
                             "BACKEND_MODULES": [inspect.getmodulename(__file__)],
                             "FRONTEND_MODULES": [inspect.getmodulename(__file__)],
                             "USER_ID_HASH_SALT": "qwerty",
                             "INTERNAL_ATTRIBUTES": INTERNAL_ATTRIBUTES}

        self.proxy_config = SATOSAConfig(proxy_config_dict)

        frontend_metadata = []
        backend_metadata = []
        self.fake_idp_metadata = []
        self.fake_sp_metadata = []

        self.backend_cert, self.backend_key = \
            FileGenerator.get_instance().generate_cert("Saml2Backend")
        self.frontend_cert, self.frontend_key = \
            FileGenerator.get_instance().generate_cert("Saml2Frontend")

        fake_idp_base = "https://example.com"
        fake_idp_cert, fake_idp_key = FileGenerator.get_instance().generate_cert("fake_idp")
        self.fake_idp_config = {
            "entityid": "{}/unittest_idp.xml".format(fake_idp_base),
            "service": {
                "idp": {
                    "endpoints": {
                        "single_sign_on_service": [
                            ("%s/sso/post" % fake_idp_base, BINDING_HTTP_POST),
                            ("%s/sso/redirect" % fake_idp_base, BINDING_HTTP_REDIRECT),
                        ],
                    },
                },
            },
            "key_file": fake_idp_key.name,
            "cert_file": fake_idp_cert.name,
            "metadata": {
                "local": backend_metadata,
            },
            "xmlsec_binary": self.xmlsec_path,
        }

        fake_sp_base = "http://example.com"
        fake_sp_cert, fake_sp_key = FileGenerator.get_instance().generate_cert("fake_sp")
        self.fake_sp_config = {
            "entityid": "{}/unittest_sp.xml".format(fake_sp_base),
            "service": {
                "sp": {
                    "endpoints": {
                        "assertion_consumer_service": [
                            ("%s/acs/redirect" % fake_sp_base, BINDING_HTTP_REDIRECT),
                            ("%s/acs/post" % fake_sp_base, BINDING_HTTP_POST)
                        ],
                    },
                    "allow_unsolicited": "true",
                },
            },
            "key_file": fake_sp_key.name,
            "cert_file": fake_sp_cert.name,
            "metadata": {
                "local": frontend_metadata,
            },
            "xmlsec_binary": self.xmlsec_path,
        }

        fake_idp_metadata_file = FileGenerator.get_instance().create_metadata(
            self.fake_idp_config,
            "fake_idp")
        fake_sp_metadata_file = FileGenerator.get_instance().create_metadata(
            self.fake_sp_config,
            "fake_sp")
        frontend_metadata_file = FileGenerator.get_instance().create_metadata(
            Saml2FrontendPlugin(self.proxy_config.BASE).config["idp_config"],
            "frontend")
        backend_metadata_file = FileGenerator.get_instance().create_metadata(
            Saml2BackendPlugin(self.proxy_config.BASE).config["config"], "backend")

        self.fake_idp_metadata.append(fake_idp_metadata_file.name)
        self.fake_sp_metadata.append(fake_sp_metadata_file.name)
        frontend_metadata.append(frontend_metadata_file.name)
        backend_metadata.append(backend_metadata_file.name)
Ejemplo n.º 4
0
    def __init__(self):
        if TestConfiguration._instance:
            raise TypeError(
                'Singletons must be accessed through `get_instance()`.')
        else:
            TestConfiguration._instance = self
        # Add test directory to path to be able to import configurations
        sys.path.append(os.path.dirname(__file__))

        if os.path.isfile("/usr/bin/xmlsec1"):
            self.xmlsec_path = "/usr/bin/xmlsec1"
        elif os.path.isfile("/usr/local/bin/xmlsec1"):
            self.xmlsec_path = "/usr/local/bin/xmlsec1"

        proxy_config_dict = {
            "BASE": "https://localhost:8090",
            "COOKIE_STATE_NAME": "TEST_STATE",
            "STATE_ENCRYPTION_KEY": "ASDasd123",
            "PLUGIN_PATH": [os.path.dirname(__file__)],
            "BACKEND_MODULES": [inspect.getmodulename(__file__)],
            "FRONTEND_MODULES": [inspect.getmodulename(__file__)],
            "USER_ID_HASH_SALT": "qwerty",
            "INTERNAL_ATTRIBUTES": INTERNAL_ATTRIBUTES
        }

        self.proxy_config = SATOSAConfig(proxy_config_dict)

        frontend_metadata = []
        backend_metadata = []
        self.fake_idp_metadata = []
        self.fake_sp_metadata = []

        self.backend_cert, self.backend_key = \
            FileGenerator.get_instance().generate_cert("Saml2Backend")
        self.frontend_cert, self.frontend_key = \
            FileGenerator.get_instance().generate_cert("Saml2Frontend")

        fake_idp_base = "https://example.com"
        fake_idp_cert, fake_idp_key = FileGenerator.get_instance(
        ).generate_cert("fake_idp")
        self.fake_idp_config = {
            "entityid": "{}/unittest_idp.xml".format(fake_idp_base),
            "service": {
                "idp": {
                    "endpoints": {
                        "single_sign_on_service": [
                            ("%s/sso/post" % fake_idp_base, BINDING_HTTP_POST),
                            ("%s/sso/redirect" % fake_idp_base,
                             BINDING_HTTP_REDIRECT),
                        ],
                    },
                },
            },
            "key_file": fake_idp_key.name,
            "cert_file": fake_idp_cert.name,
            "metadata": {
                "local": backend_metadata,
            },
            "xmlsec_binary": self.xmlsec_path,
        }

        fake_sp_base = "http://example.com"
        fake_sp_cert, fake_sp_key = FileGenerator.get_instance().generate_cert(
            "fake_sp")
        self.fake_sp_config = {
            "entityid": "{}/unittest_sp.xml".format(fake_sp_base),
            "service": {
                "sp": {
                    "endpoints": {
                        "assertion_consumer_service":
                        [("%s/acs/redirect" % fake_sp_base,
                          BINDING_HTTP_REDIRECT),
                         ("%s/acs/post" % fake_sp_base, BINDING_HTTP_POST)],
                    },
                    "allow_unsolicited": "true",
                },
            },
            "key_file": fake_sp_key.name,
            "cert_file": fake_sp_cert.name,
            "metadata": {
                "local": frontend_metadata,
            },
            "xmlsec_binary": self.xmlsec_path,
        }

        fake_idp_metadata_file = FileGenerator.get_instance().create_metadata(
            self.fake_idp_config, "fake_idp")
        fake_sp_metadata_file = FileGenerator.get_instance().create_metadata(
            self.fake_sp_config, "fake_sp")
        frontend_metadata_file = FileGenerator.get_instance().create_metadata(
            Saml2FrontendPlugin(self.proxy_config.BASE).config["idp_config"],
            "frontend")
        backend_metadata_file = FileGenerator.get_instance().create_metadata(
            Saml2BackendPlugin(self.proxy_config.BASE).config["config"],
            "backend")

        self.fake_idp_metadata.append(fake_idp_metadata_file.name)
        self.fake_sp_metadata.append(fake_sp_metadata_file.name)
        frontend_metadata.append(frontend_metadata_file.name)
        backend_metadata.append(backend_metadata_file.name)