Example #1
0
    def gather_request_args(self, **kwargs):
        ar_args = Service.gather_request_args(self, **kwargs)

        if 'redirect_uri' not in ar_args:
            try:
                ar_args['redirect_uri'] = self.service_context.redirect_uris[0]
            except (KeyError, AttributeError):
                raise MissingParameter('redirect_uri')

        return ar_args
Example #2
0
def get_state_parameter(request_args, kwargs):
    """Find a state value from a set of possible places."""
    try:
        _state = kwargs['state']
    except KeyError:
        try:
            _state = request_args['state']
        except KeyError:
            raise MissingParameter('state')

    return _state
Example #3
0
    def _matches_issued_trust_mark(self, request):
        id = request.get("id")
        sub = request.get("sub")
        if sub and sub != self.server_get("context").entity_id:
            return False

        mark = request.get("trust_mark")
        for _tm in self.server_get('context').signed_trust_marks:
            if mark:
                if mark == _tm:
                    return True
            elif id:
                _jwt = factory(_tm)
                _payload = _jwt.jwt.payload()
                if _payload["id"] == id:
                    return True
            else:
                raise MissingParameter("Must provide id or mark")
        return False
Example #4
0
    def create_authz_session(self,
                             authn_event,
                             areq,
                             client_id="",
                             uid="",
                             **kwargs):
        """

        :param authn_event:
        :param areq:
        :param client_id:
        :param uid:
        :param kwargs:
        :return:
        """
        try:
            _uid = authn_event["uid"]
        except (TypeError, KeyError):
            _uid = uid

        if not _uid:
            raise MissingParameter('Need a "uid"')

        sid = self.handler["code"].key(user=_uid, areq=areq)

        access_grant = self.handler["code"](sid=sid)

        _info = SessionInfo(code=access_grant, oauth_state="authz")

        if client_id:
            _info["client_id"] = client_id

        if areq:
            _info["authn_req"] = areq
            self.map_kv2sid("state", areq["state"], sid)
        if authn_event:
            _info["authn_event"] = authn_event

        if kwargs:
            _info.update(kwargs)

        self[sid] = _info
        return sid