FIWARE Authentication in Python
<p>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:</p>

<pre><code>class OAuth2(object): 
    def __init__(self): 
        self.client_id = "&lt;client_id&gt;"
        self.client_secret = "&lt;client_secret&gt;"
        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
</code></pre>

<p>In my app, I call authorize_url() to get the code.</p>

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

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

<pre><code>@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)
</code></pre>

<p>Github Project: <a href="https://github.com/I-am-Gabi/security-app/tree/master/2-BasicAuthentication/securityapp-ui/web" rel="nofollow">https://github.com/I-am-Gabi/security-app/tree/master/2-BasicAuthentication/securityapp-ui/web</a></p>

<p>OAuth2 class: <a href="https://github.com/I-am-Gabi/security-app/blob/master/2-BasicAuthentication/securityapp-ui/web/oauth_fiware.py" rel="nofollow">https://github.com/I-am-Gabi/security-app/blob/master/2-BasicAuthentication/securityapp-ui/web/oauth_fiware.py</a></p>

<p>App: <a href="https://github.com/I-am-Gabi/security-app/blob/master/2-BasicAuthentication/securityapp-ui/web/app.py" rel="nofollow">https://github.com/I-am-Gabi/security-app/blob/master/2-BasicAuthentication/securityapp-ui/web/app.py</a></p>

<p>Fiware wiki: <a href="https://github.com/ging/fiware-idm/wiki/using-the-fiware-lab-instance" rel="nofollow">https://github.com/ging/fiware-idm/wiki/using-the-fiware-lab-instance</a></p>