Uploaded image for project: 'Help-Desk'
  1. Help-Desk
  2. HELP-7203

FIWARE.Question.Tech.Security.PEP-Proxy.FIWARE Authentication in Python

    Details

      Description

      Created question in FIWARE Q/A platform on 02-09-2016 at 16:09
      Please, ANSWER this question AT http://stackoverflow.com/questions/39295231/fiware-authentication-in-python

      Question:
      FIWARE Authentication in Python

      Description:
      I am trying to authenticate user using FIWARE. It returns a 404 when I request the token, but I don't have problems to get access code request.
      My code:

      class OAuth2(object):
      def _init_(self):
      self.client_id = "<client_id>"
      self.client_secret = "<client_secret>"
      self.site = 'http://0.0.0.0:8000'
      self.redirect_uri = "http://192.168.99.101:8000/auth"
      self.authorization_url = '/oauth2/authorize'
      self.token_url = '/oauth2/token'

      def authorize_url(self, **kwargs):
      oauth_params =

      {'response_type': 'code', 'redirect_uri': self.redirect_uri, 'client_id': self.client_id}

      oauth_params.update(kwargs)
      return "%s%s?%s" % (self.site, quote(self.authorization_url), urlencode(oauth_params))

      def get_token(self, code, **kwargs):
      url = "%s%s" % (self.site, quote(self.token_url))
      data =

      {'grant_type': 'authorization_code', 'redirect_uri': self.redirect_uri, 'client_id': self.client_id, 'client_secret': self.client_secret, 'code': code}

      data.update(kwargs)
      response = requests.post(url, data=data)
      content = response.content

      if isinstance(response.content, str):
      try:
      content = json.loads(response.content)
      except ValueError:
      content = parse_qs(response.content)
      else:
      return content

      In my app, I call authorize_url() to get the code.

      @app.route("/authenticate")
      def authenticate():
      auth_url = auth_app.authorize_url()
      return redirect(auth_url)

      After, I get the code by callback url and I call the get_token() method:

      @app.route('/auth', methods=['GET', 'POST'])
      def auth():
      error = request.args.get('error', '')
      if error:
      return "Error: " + error

      code = request.args.get('code')
      content = auth_app.get_token()
      return render_template('index.html', content="content: " + content)

      Github Project: https://github.com/I-am-Gabi/security-app/tree/master/2-BasicAuthentication/securityapp-ui/web

      OAuth2 class: https://github.com/I-am-Gabi/security-app/blob/master/2-BasicAuthentication/securityapp-ui/web/oauth_fiware.py

      App: https://github.com/I-am-Gabi/security-app/blob/master/2-BasicAuthentication/securityapp-ui/web/app.py

      Fiware wiki: https://github.com/ging/fiware-idm/wiki/using-the-fiware-lab-instance

        Activity

        Hide
        backlogmanager Backlog Manager added a comment -

        2016-09-02 18:05|CREATED monitor | # answers= 1, accepted answer= False

        Show
        backlogmanager Backlog Manager added a comment - 2016-09-02 18:05|CREATED monitor | # answers= 1, accepted answer= False
        Hide
        backlogmanager Backlog Manager added a comment -

        2016-09-02 21:05|UPDATED status: transition Answer| # answers= 1, accepted answer= False

        Show
        backlogmanager Backlog Manager added a comment - 2016-09-02 21:05|UPDATED status: transition Answer| # answers= 1, accepted answer= False
        Hide
        backlogmanager Backlog Manager added a comment -

        2016-09-03 00:05|UPDATED status: transition Answered| # answers= 1, accepted answer= False

        Show
        backlogmanager Backlog Manager added a comment - 2016-09-03 00:05|UPDATED status: transition Answered| # answers= 1, accepted answer= False

          People

          • Assignee:
            aalonsog Alvaro Alonso
            Reporter:
            backlogmanager Backlog Manager
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: