Esempio n. 1
0
 def discharge(url, request):
     qs = parse_qs(request.body)
     if qs.get('token64') is None:
         return response(status_code=401,
                         content={
                             'Code':
                             httpbakery.ERR_INTERACTION_REQUIRED,
                             'Message': 'interaction required',
                             'Info': {
                                 'InteractionMethods': {
                                     'agent': {
                                         'login-url': '/login'
                                     },
                                 },
                             },
                         },
                         headers={'Content-Type': 'application/json'})
     else:
         qs = parse_qs(request.body)
         content = {q: qs[q][0] for q in qs}
         m = httpbakery.discharge(checkers.AuthContext(), content,
                                  discharge_key, None, alwaysOK3rd)
         return {
             'status_code': 200,
             'content': {
                 'Macaroon': m.serialize_json()
             }
         }
 def discharge(url, request):
     qs = parse_qs(request.body)
     if qs.get('token64') is None:
         return response(
             status_code=401,
             content={
                 'Code': httpbakery.ERR_INTERACTION_REQUIRED,
                 'Message': 'interaction required',
                 'Info': {
                     'InteractionMethods': {
                         'agent': {'login-url': '/login'},
                     },
                 },
             },
             headers={'Content-Type': 'application/json'})
     else:
         qs = parse_qs(request.body)
         content = {q: qs[q][0] for q in qs}
         m = httpbakery.discharge(checkers.AuthContext(), content,
                                  discharge_key, None, alwaysOK3rd)
         return {
             'status_code': 200,
             'content': {
                 'Macaroon': m.to_dict()
             }
         }
Esempio n. 3
0
 def discharge(url, request):
     self.assertEqual(url.path, '/discharge')
     qs = parse_qs(request.body)
     content = {q: qs[q][0] for q in qs}
     m = httpbakery.discharge(checkers.AuthContext(), content, d.key, d,
                              alwaysOK3rd)
     return {'status_code': 200, 'content': {'Macaroon': m.to_dict()}}
        def discharge(url, request):
            qs = parse_qs(request.body)
            if qs.get('caveat64') is not None:
                content = {q: qs[q][0] for q in qs}

                class InteractionRequiredError(Exception):
                    def __init__(self, error):
                        self.error = error

                class CheckerInError(bakery.ThirdPartyCaveatChecker):
                    def check_third_party_caveat(self, ctx, info):
                        InfoStorage.info = info
                        raise InteractionRequiredError(
                            httpbakery.Error(
                                code=httpbakery.ERR_INTERACTION_REQUIRED,
                                version=httpbakery.request_version(
                                    request.headers),
                                message='interaction required',
                                info=httpbakery.ErrorInfo(
                                    wait_url='http://0.3.2.1/wait?'
                                             'dischargeid=1',
                                    visit_url='http://0.3.2.1/visit?'
                                              'dischargeid=1'
                                ),
                            ),
                        )
                try:
                    httpbakery.discharge(
                        checkers.AuthContext(), content,
                        discharge_key, None, CheckerInError())
                except InteractionRequiredError as exc:
                    return response(
                        status_code=401,
                        content={
                            'Code': exc.error.code,
                            'Message': exc.error.message,
                            'Info': {
                                'WaitURL': exc.error.info.wait_url,
                                'VisitURL': exc.error.info.visit_url,
                            },
                        },
                        headers={'Content-Type': 'application/json'})
 def discharge(url, request):
     qs = parse_qs(request.body)
     content = {q: qs[q][0] for q in qs}
     m = httpbakery.discharge(checkers.AuthContext(), content, d.key, d,
                              alwaysOK3rd)
     return {
         'status_code': 200,
         'content': {
             'Macaroon': m.to_dict()
         }
     }
Esempio n. 6
0
        def discharge(url, request):
            qs = parse_qs(request.body)
            if qs.get('caveat64') is not None:
                content = {q: qs[q][0] for q in qs}

                class InteractionRequiredError(Exception):
                    def __init__(self, error):
                        self.error = error

                class CheckerInError(bakery.ThirdPartyCaveatChecker):
                    def check_third_party_caveat(self, ctx, info):
                        InfoStorage.info = info
                        raise InteractionRequiredError(
                            httpbakery.Error(
                                code=httpbakery.ERR_INTERACTION_REQUIRED,
                                version=httpbakery.request_version(
                                    request.headers),
                                message='interaction required',
                                info=httpbakery.ErrorInfo(
                                    wait_url='http://0.3.2.1/wait?'
                                    'dischargeid=1',
                                    visit_url='http://0.3.2.1/visit?'
                                    'dischargeid=1'),
                            ), )

                try:
                    httpbakery.discharge(checkers.AuthContext(), content,
                                         discharge_key, None, CheckerInError())
                except InteractionRequiredError as exc:
                    return response(
                        status_code=401,
                        content={
                            'Code': exc.error.code,
                            'Message': exc.error.message,
                            'Info': {
                                'WaitURL': exc.error.info.wait_url,
                                'VisitURL': exc.error.info.visit_url,
                            },
                        },
                        headers={'Content-Type': 'application/json'})
Esempio n. 7
0
 def discharge(url, request):
     qs = parse_qs(request.body)
     content = {q: qs[q][0] for q in qs}
     httpbakery.discharge(checkers.AuthContext(), content, d.key, d,
                          ThirdPartyCaveatCheckerF(check))
 def discharge(url, request):
     qs = parse_qs(request.body)
     content = {q: qs[q][0] for q in qs}
     httpbakery.discharge(checkers.AuthContext(), content, d.key, d,
                          ThirdPartyCaveatCheckerF(check))