Exemple #1
0
    def __call__(self, _, conv, location, *args):
        _cli = conv.client
        disco = DiscoveryServer(config=_cli.config)
        logger.debug("Parsing discovery service request")
        dsr = disco.parse_discovery_service_request(location)
        logger.debug("=> %s" % (dsr, ))

        # Use metadata to find the SP endpoint
        eid = dsr["entityID"][0]

        # verify that the return url is the one register in the metadata
        if not disco.verify_return(eid, dsr["return"]):
            logger.debug("Discovery request return address not in Metadata")
            raise Error("Discovery request return address not in Metadata")

        logger.debug("Creating discovery service response")
        return_url = disco.create_discovery_service_response(
            dsr["return"], dsr["returnIDParam"], self.args["entity_id"])

        logger.debug("=> %s" % return_url)
        resp = Dresponse()
        resp.headers = {"location": return_url}
        resp.status_code = 302
        resp.text = "redirect to SP"
        return resp
Exemple #2
0
    def __call__(self, _, conv, location, *args):
        _cli = conv.client
        disco = DiscoveryServer(config=_cli.config)
        logger.debug("Parsing discovery service request")
        dsr = disco.parse_discovery_service_request(location)
        logger.debug("=> %s" % (dsr,))

        # Use metadata to find the SP endpoint
        eid = dsr["entityID"][0]

        # verify that the return url is the one register in the metadata
        if not disco.verify_return(eid, dsr["return"]):
            logger.debug("Discovery request return address not in Metadata")
            raise Error("Discovery request return address not in Metadata")

        logger.debug("Creating discovery service response")
        return_url = disco.create_discovery_service_response(
            dsr["return"], dsr["returnIDParam"], self.args["entity_id"]
        )

        logger.debug("=> %s" % return_url)
        resp = Dresponse()
        resp.headers = {"location": return_url}
        resp.status_code = 302
        resp.text = "redirect to SP"
        return resp
Exemple #3
0
def test_construct_deconstruct_response():
    sp = Saml2Client(config_file=dotname("servera_conf"))
    url = sp.create_discovery_service_request(
        "http://example.com/saml/disco",
        "https://example.com/saml/sp.xml",
        is_passive=True,
        returnIDParam="foo",
        return_url="https://example.com/saml/sp/disc")
    ds = DiscoveryServer(config_file=dotname("disco_conf"))
    dsr = ds.parse_discovery_service_request(url)
    args = dict([(key, dsr[key]) for key in ["returnIDParam", "return"]])
    url = ds.create_discovery_service_response(
        entity_id="https://example.com/saml/idp.xml", **args)

    idp_id = sp.parse_discovery_service_response(url, returnIDParam="foo")
    assert idp_id == "https://example.com/saml/idp.xml"
Exemple #4
0
def test_construct_deconstruct_response():
    sp = Saml2Client(config_file=dotname("servera_conf"))
    url = sp.create_discovery_service_request("http://example.com/saml/disco",
                                              "https://example.com/saml/sp.xml",
                                              isPassive=True,
                                              returnIDParam="foo",
                                              return_url="https://example.com/saml/sp/disc")
    ds = DiscoveryServer(config_file=dotname("disco_conf"))
    dsr = ds.parse_discovery_service_request(url)
    args = dict([(key, dsr[key]) for key in ["returnIDParam", "return"]])
    url = ds.create_discovery_service_response(
        entity_id="https://example.com/saml/idp.xml",
        **args)

    idp_id = sp.parse_discovery_service_response(url, returnIDParam="foo")
    assert idp_id == "https://example.com/saml/idp.xml"