{"id":117,"date":"2023-12-17T22:41:58","date_gmt":"2023-12-17T22:41:58","guid":{"rendered":"https:\/\/feellikelearning.com\/en\/?p=117"},"modified":"2023-12-17T22:41:59","modified_gmt":"2023-12-17T22:41:59","slug":"flask-api-with-bear-token-authentication","status":"publish","type":"post","link":"https:\/\/feellikelearning.com\/en\/index.php\/2023\/12\/17\/flask-api-with-bear-token-authentication\/","title":{"rendered":"Flask API with Bear Token authentication"},"content":{"rendered":"\n<p>Here is an simple example of Flask API using bear token to authenticate the access. Authentication is achieved by using the annotation in python. Annotation under the cover is calling the &#8220;authenticate&#8221; method. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from flask import Flask, request, jsonify\nfrom flask_restful import Api \n\nimport subprocess\n\napp = Flask(__name__)\napi = Api(app)\n\nTOKEN = 'hiworld'\n\ndef authenticate(func):\n    def wrapper(*args, **kwargs):\n        token = request.headers.get(\"Authorization\")\n        if token and token == f\"Bearer {TOKEN}\":\n            return func(*args, **kwargs)\n        else:\n            return {\"error\": \"Unauthorized\"}, 401\n\n    return wrapper\n\n# Endpoint that runs a Python command\n@app.route('\/run_command', methods=&#91;'POST'])\n@authenticate\ndef run_command():\n    data = request.get_json()\n\n    # Check if 'command' key exists in the JSON payload\n    if 'command' not in data:\n        return jsonify({'error': 'Command not provided'}), 400\n\n    command = data&#91;'command']\n\n    try:\n        result = subprocess.check_output(command, shell=True, text=True)\n        return jsonify({'result': result})\n    except subprocess.CalledProcessError as e:\n        return jsonify({'error': f'Error executing command: {e.output}'}), 500\n\nif __name__ == '__main__':\n    app.run(debug=True, port=8080)\n<\/code><\/pre>\n\n\n\n<p>To test the API, can use this curl command<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -u your_username:your_password -X POST -H \"Content-Type: application\/json\" -H \"Authorization: Bearer hiworld\" -d '{\"command\": \"ls -lh\"}' http:\/\/127.0.0.1:8081\/run_command<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Here is an simple example of Flask API using bear token to authenticate the access. Authentication is achieved by using the annotation in python. Annotation under the cover is calling the &#8220;authenticate&#8221; method. To test the API, can use this curl command<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-117","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Flask API with Bear Token authentication - Feel Like Learning<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/feellikelearning.com\/en\/index.php\/2023\/12\/17\/flask-api-with-bear-token-authentication\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Flask API with Bear Token authentication - Feel Like Learning\" \/>\n<meta property=\"og:description\" content=\"Here is an simple example of Flask API using bear token to authenticate the access. Authentication is achieved by using the annotation in python. Annotation under the cover is calling the &#8220;authenticate&#8221; method. To test the API, can use this curl command\" \/>\n<meta property=\"og:url\" content=\"https:\/\/feellikelearning.com\/en\/index.php\/2023\/12\/17\/flask-api-with-bear-token-authentication\/\" \/>\n<meta property=\"og:site_name\" content=\"Feel Like Learning\" \/>\n<meta property=\"article:published_time\" content=\"2023-12-17T22:41:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-12-17T22:41:59+00:00\" \/>\n<meta name=\"author\" content=\"feellikelearning\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"feellikelearning\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/feellikelearning.com\/en\/index.php\/2023\/12\/17\/flask-api-with-bear-token-authentication\/\",\"url\":\"https:\/\/feellikelearning.com\/en\/index.php\/2023\/12\/17\/flask-api-with-bear-token-authentication\/\",\"name\":\"Flask API with Bear Token authentication - Feel Like Learning\",\"isPartOf\":{\"@id\":\"https:\/\/feellikelearning.com\/en\/#website\"},\"datePublished\":\"2023-12-17T22:41:58+00:00\",\"dateModified\":\"2023-12-17T22:41:59+00:00\",\"author\":{\"@id\":\"https:\/\/feellikelearning.com\/en\/#\/schema\/person\/1ec5aac313d6de20215fe2b8e176b8a7\"},\"breadcrumb\":{\"@id\":\"https:\/\/feellikelearning.com\/en\/index.php\/2023\/12\/17\/flask-api-with-bear-token-authentication\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/feellikelearning.com\/en\/index.php\/2023\/12\/17\/flask-api-with-bear-token-authentication\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/feellikelearning.com\/en\/index.php\/2023\/12\/17\/flask-api-with-bear-token-authentication\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/feellikelearning.com\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Flask API with Bear Token authentication\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/feellikelearning.com\/en\/#website\",\"url\":\"https:\/\/feellikelearning.com\/en\/\",\"name\":\"Feel Like Learning\",\"description\":\"keep curiosity alive\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/feellikelearning.com\/en\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/feellikelearning.com\/en\/#\/schema\/person\/1ec5aac313d6de20215fe2b8e176b8a7\",\"name\":\"feellikelearning\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/feellikelearning.com\/en\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/36aec9d519f02362e3e89b0716ae640d08701f57e818830f3f197db5fbc1ae20?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/36aec9d519f02362e3e89b0716ae640d08701f57e818830f3f197db5fbc1ae20?s=96&d=mm&r=g\",\"caption\":\"feellikelearning\"},\"sameAs\":[\"http:\/\/feellikelearning.com\/en\"],\"url\":\"https:\/\/feellikelearning.com\/en\/index.php\/author\/feellikelearning\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Flask API with Bear Token authentication - Feel Like Learning","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/feellikelearning.com\/en\/index.php\/2023\/12\/17\/flask-api-with-bear-token-authentication\/","og_locale":"en_US","og_type":"article","og_title":"Flask API with Bear Token authentication - Feel Like Learning","og_description":"Here is an simple example of Flask API using bear token to authenticate the access. Authentication is achieved by using the annotation in python. Annotation under the cover is calling the &#8220;authenticate&#8221; method. To test the API, can use this curl command","og_url":"https:\/\/feellikelearning.com\/en\/index.php\/2023\/12\/17\/flask-api-with-bear-token-authentication\/","og_site_name":"Feel Like Learning","article_published_time":"2023-12-17T22:41:58+00:00","article_modified_time":"2023-12-17T22:41:59+00:00","author":"feellikelearning","twitter_card":"summary_large_image","twitter_misc":{"Written by":"feellikelearning","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/feellikelearning.com\/en\/index.php\/2023\/12\/17\/flask-api-with-bear-token-authentication\/","url":"https:\/\/feellikelearning.com\/en\/index.php\/2023\/12\/17\/flask-api-with-bear-token-authentication\/","name":"Flask API with Bear Token authentication - Feel Like Learning","isPartOf":{"@id":"https:\/\/feellikelearning.com\/en\/#website"},"datePublished":"2023-12-17T22:41:58+00:00","dateModified":"2023-12-17T22:41:59+00:00","author":{"@id":"https:\/\/feellikelearning.com\/en\/#\/schema\/person\/1ec5aac313d6de20215fe2b8e176b8a7"},"breadcrumb":{"@id":"https:\/\/feellikelearning.com\/en\/index.php\/2023\/12\/17\/flask-api-with-bear-token-authentication\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/feellikelearning.com\/en\/index.php\/2023\/12\/17\/flask-api-with-bear-token-authentication\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/feellikelearning.com\/en\/index.php\/2023\/12\/17\/flask-api-with-bear-token-authentication\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/feellikelearning.com\/en\/"},{"@type":"ListItem","position":2,"name":"Flask API with Bear Token authentication"}]},{"@type":"WebSite","@id":"https:\/\/feellikelearning.com\/en\/#website","url":"https:\/\/feellikelearning.com\/en\/","name":"Feel Like Learning","description":"keep curiosity alive","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/feellikelearning.com\/en\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/feellikelearning.com\/en\/#\/schema\/person\/1ec5aac313d6de20215fe2b8e176b8a7","name":"feellikelearning","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/feellikelearning.com\/en\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/36aec9d519f02362e3e89b0716ae640d08701f57e818830f3f197db5fbc1ae20?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/36aec9d519f02362e3e89b0716ae640d08701f57e818830f3f197db5fbc1ae20?s=96&d=mm&r=g","caption":"feellikelearning"},"sameAs":["http:\/\/feellikelearning.com\/en"],"url":"https:\/\/feellikelearning.com\/en\/index.php\/author\/feellikelearning\/"}]}},"_links":{"self":[{"href":"https:\/\/feellikelearning.com\/en\/index.php\/wp-json\/wp\/v2\/posts\/117","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/feellikelearning.com\/en\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/feellikelearning.com\/en\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/feellikelearning.com\/en\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/feellikelearning.com\/en\/index.php\/wp-json\/wp\/v2\/comments?post=117"}],"version-history":[{"count":1,"href":"https:\/\/feellikelearning.com\/en\/index.php\/wp-json\/wp\/v2\/posts\/117\/revisions"}],"predecessor-version":[{"id":118,"href":"https:\/\/feellikelearning.com\/en\/index.php\/wp-json\/wp\/v2\/posts\/117\/revisions\/118"}],"wp:attachment":[{"href":"https:\/\/feellikelearning.com\/en\/index.php\/wp-json\/wp\/v2\/media?parent=117"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/feellikelearning.com\/en\/index.php\/wp-json\/wp\/v2\/categories?post=117"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/feellikelearning.com\/en\/index.php\/wp-json\/wp\/v2\/tags?post=117"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}