Skip to content

Instantly share code, notes, and snippets.

@KalanaDananjaya
Created July 8, 2022 04:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save KalanaDananjaya/48e3922bc780bc111649a1425b47240c to your computer and use it in GitHub Desktop.
Save KalanaDananjaya/48e3922bc780bc111649a1425b47240c to your computer and use it in GitHub Desktop.
Simple python server for hosting custom key store and CIBA approval endpoint
from flask import Flask,jsonify,make_response, request
import json
from flask import Response
import mysql.connector
import os
ASSETS_DIR = os.path.dirname(os.path.abspath(__file__))
app = Flask('app')
mydb = mysql.connector.connect(
host="localhost",
user="root",
password="root",
database="openbank_apimgtdb_conformance"
)
mycursor = mydb.cursor()
@app.route('/automatedapproval', methods=["GET","POST"])
def automatedapproval():
body = {}
args = request.args
action = args.get("action")
if (action == "allow"):
action = "AUTHENTICATED"
if (action=="deny"):
action = "CONSENT_DENIED"
auth_req_id = args.get("token")
query = "UPDATE IDN_OAUTH2_CIBA_AUTH_CODE SET AUTH_REQ_STATUS = '{action}', AUTHENTICATED_USER_NAME='admin@wso2.com', USER_STORE_DOMAIN='abc', TENANT_ID = 1, IDP_ID = 1 WHERE AUTH_REQ_ID = '{token}'".format(action = action, token = auth_req_id)
print(query)
mycursor.execute(query)
mydb.commit()
response = make_response(jsonify(body))
response.headers['content-type'] = 'application/json'
return response
@app.route('/hello')
def hello():
return make_response(jsonify("hello"), 200)
@app.route('/keystore')
def keystore():
body = {
"keys" : [ {
"kid" : "GqhKVTANnLMYpGGfAtJ1Nhdkgjw",
"kty" : "RSA",
"n" : "sUuSYJySxXgyzzhBLoSo4F0cAxw1PMtecHkQ9uewIJIddZB9cD4clUzqBd-UkvTt0Ef3lcYYo5S79q6FO8mNbDP_PKygGSSrtYb-PiEzYTjC3qR3BPFrIhBwfX4aZ-Ax50Plr1XOjEHV2ay0ZOwJfuXcjVwSOXRurdg0Q8DnGxof4-K0VOWNKlm6Pr1Shv3-xeOdaZPmASAP-E56mhpYV2WZDz6AfF2Fxj2F76I3DiFY7gFP-7i5kXImS16ma82kTxf2KGEAA-2tPUE3XvV6_gxQfDZS3EUflxX1X0m4x_7vmMDobBO0wQxCM-QEAmfiyFqSBDLyeIEao4wn0zb4Lw",
"e" : "AQAB",
"use" : "sig",
"x5c" : [ "MIIFLTCCBBWgAwIBAgIEWcZEPTANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJHQjEUMBIGA1UEChMLT3BlbkJhbmtpbmcxLjAsBgNVBAMTJU9wZW5CYW5raW5nIFByZS1Qcm9kdWN0aW9uIElzc3VpbmcgQ0EwHhcNMjEwOTA4MDUyNjU2WhcNMjIxMDA4MDU1NjU2WjBhMQswCQYDVQQGEwJHQjEUMBIGA1UEChMLT3BlbkJhbmtpbmcxGzAZBgNVBAsTEjAwMTU4MDAwMDFIUVFyWkFBWDEfMB0GA1UEAxMWdTNaV2xmOVl0NDJkeVpnSXZ6a3ZxYjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALFLkmCcksV4Ms84QS6EqOBdHAMcNTzLXnB5EPbnsCCSHXWQfXA+HJVM6gXflJL07dBH95XGGKOUu/auhTvJjWwz/zysoBkkq7WG/j4hM2E4wt6kdwTxayIQcH1+GmfgMedD5a9VzoxB1dmstGTsCX7l3I1cEjl0bq3YNEPA5xsaH+PitFTljSpZuj69Uob9/sXjnWmT5gEgD/hOepoaWFdlmQ8+gHxdhcY9he+iNw4hWO4BT/u4uZFyJktepmvNpE8X9ihhAAPtrT1BN171ev4MUHw2UtxFH5cV9V9JuMf+75jA6GwTtMEMQjPkBAJn4shakgQy8niBGqOMJ9M2+C8CAwEAAaOCAfkwggH1MA4GA1UdDwEB/wQEAwIGwDAVBgNVHSUEDjAMBgorBgEEAYI3CgMMMIHgBgNVHSAEgdgwgdUwgdIGCysGAQQBqHWBBgFkMIHCMCoGCCsGAQUFBwIBFh5odHRwOi8vb2IudHJ1c3Rpcy5jb20vcG9saWNpZXMwgZMGCCsGAQUFBwICMIGGDIGDVXNlIG9mIHRoaXMgQ2VydGlmaWNhdGUgY29uc3RpdHV0ZXMgYWNjZXB0YW5jZSBvZiB0aGUgT3BlbkJhbmtpbmcgUm9vdCBDQSBDZXJ0aWZpY2F0aW9uIFBvbGljaWVzIGFuZCBDZXJ0aWZpY2F0ZSBQcmFjdGljZSBTdGF0ZW1lbnQwbQYIKwYBBQUHAQEEYTBfMCYGCCsGAQUFBzABhhpodHRwOi8vb2IudHJ1c3Rpcy5jb20vb2NzcDA1BggrBgEFBQcwAoYpaHR0cDovL29iLnRydXN0aXMuY29tL29iX3BwX2lzc3VpbmdjYS5jcnQwOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL29iLnRydXN0aXMuY29tL29iX3BwX2lzc3VpbmdjYS5jcmwwHwYDVR0jBBgwFoAUUHORxiFy03f0/gASBoFceXluP1AwHQYDVR0OBBYEFEpeT6ayDNKcbScrUakgkC6Wndf7MA0GCSqGSIb3DQEBCwUAA4IBAQB4f9CwbOt92BOUohSczBVuizQbozoQA6r/7+t3e9HGXYJ2cqaprLOTqU33//0hp3AhpwDlqhiVmBQHNE/OllLuN6CREpYsWr5QaaKL8x3dxk+BQAx/qVqtQfoWZJdBXkaOOxHdFmFgevL/T4MdIE+va2aceo7yZgh7kxuadhQZRMnSRpBqPEvHB/ugw3Aa+kg/ZVhiOBqz0ZcMNDQ5TvsVVMVa1JsltbeUC4sOFpzIQqkTiEvgtCIQgvHpFv4DCTTmb0Lva6807pa97A91qj50sxH7V3OoeWF1vJAzhFIb552WFsQBy8Qk9BuV+Tb+oqXuiE3l9x3H0bro//cUF7pZ" ],
"x5t" : "uwVO4NoF4eg0piAqlLATf1cEoI4=",
"x5u" : "https://keystore.openbankingtest.org.uk/0015800001HQQrZAAX/GqhKVTANnLMYpGGfAtJ1Nhdkgjw.pem",
"x5t#S256" : "4EUZEjyooUNaQ_YlB0goDFz46svf0zrBrYoGX_-eywg="
}, {
"kid" : "_wRpIDvMXGHSYn-p5lAV4D86kW0",
"kty" : "RSA",
"n" : "uqXPbKCY_jKqZZ-9KS6zoutK8HWSSdq5ACdTcyAvsSD5muUaWO2AvQ8neA9H2SREbh-2za-zFuesBFPhhOz8BVqBLFqGdetWeP8aUVVs75xakxp2dguX6l7uTifUh20PubdYilVmXDCCP8tBIP5vntN74ySkJGgoUhZAxbQSHkzox-1vUwg3mHfNH9AuYS5ERTM-yEHcIgwe_0tfZK3yYDqfmwf-Agk5Bbtut4_s3tACw6MqGA6HLi8RbH4iDtWMIfgRTsgAgcpJiEsgJME8oXlzXJOn-AwITTzpXIwO7uLnaM0rPZWxVfXeo2v_u3bBUpqhDZl-tQDe6rsdfS8R7w",
"e" : "AQAB",
"use" : "tls",
"x5c" : [ "MIIFODCCBCCgAwIBAgIEWcZEPjANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJHQjEUMBIGA1UEChMLT3BlbkJhbmtpbmcxLjAsBgNVBAMTJU9wZW5CYW5raW5nIFByZS1Qcm9kdWN0aW9uIElzc3VpbmcgQ0EwHhcNMjEwOTA4MDUyODEyWhcNMjIxMDA4MDU1ODEyWjBhMQswCQYDVQQGEwJHQjEUMBIGA1UEChMLT3BlbkJhbmtpbmcxGzAZBgNVBAsTEjAwMTU4MDAwMDFIUVFyWkFBWDEfMB0GA1UEAxMWdTNaV2xmOVl0NDJkeVpnSXZ6a3ZxYjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALqlz2ygmP4yqmWfvSkus6LrSvB1kknauQAnU3MgL7Eg+ZrlGljtgL0PJ3gPR9kkRG4fts2vsxbnrART4YTs/AVagSxahnXrVnj/GlFVbO+cWpMadnYLl+pe7k4n1IdtD7m3WIpVZlwwgj/LQSD+b57Te+MkpCRoKFIWQMW0Eh5M6Mftb1MIN5h3zR/QLmEuREUzPshB3CIMHv9LX2St8mA6n5sH/gIJOQW7breP7N7QAsOjKhgOhy4vEWx+Ig7VjCH4EU7IAIHKSYhLICTBPKF5c1yTp/gMCE086VyMDu7i52jNKz2VsVX13qNr/7t2wVKaoQ2ZfrUA3uq7HX0vEe8CAwEAAaOCAgQwggIAMA4GA1UdDwEB/wQEAwIHgDAgBgNVHSUBAf8EFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwgeAGA1UdIASB2DCB1TCB0gYLKwYBBAGodYEGAWQwgcIwKgYIKwYBBQUHAgEWHmh0dHA6Ly9vYi50cnVzdGlzLmNvbS9wb2xpY2llczCBkwYIKwYBBQUHAgIwgYYMgYNVc2Ugb2YgdGhpcyBDZXJ0aWZpY2F0ZSBjb25zdGl0dXRlcyBhY2NlcHRhbmNlIG9mIHRoZSBPcGVuQmFua2luZyBSb290IENBIENlcnRpZmljYXRpb24gUG9saWNpZXMgYW5kIENlcnRpZmljYXRlIFByYWN0aWNlIFN0YXRlbWVudDBtBggrBgEFBQcBAQRhMF8wJgYIKwYBBQUHMAGGGmh0dHA6Ly9vYi50cnVzdGlzLmNvbS9vY3NwMDUGCCsGAQUFBzAChilodHRwOi8vb2IudHJ1c3Rpcy5jb20vb2JfcHBfaXNzdWluZ2NhLmNydDA6BgNVHR8EMzAxMC+gLaArhilodHRwOi8vb2IudHJ1c3Rpcy5jb20vb2JfcHBfaXNzdWluZ2NhLmNybDAfBgNVHSMEGDAWgBRQc5HGIXLTd/T+ABIGgVx5eW4/UDAdBgNVHQ4EFgQUt/iQ/+ksD95pZUolYF8R+2838bgwDQYJKoZIhvcNAQELBQADggEBAH7/dvG7jm6xN1G0nziOHN/GSdJt6wxodmRr/nDGBiHjONS2qq6wSSaN/QfUfe5OPbICi6dDNDgJpk1ZJKWXpdBW3K0e3mjOvEjMSC6V/iu8T6NT4PWF9IGc10I93z/NbVYFahjfLtuBzBKwr7DbASYawzVFrUa7CGbzk+nUGoqoMV/0eF+UtjDx2NYoGov7WK07XDFxsJJOjq0lA7SB3/3BqttWJ+iX9CafGYP2v9hjjOz1y7Jbr66Kd9tBK9C0+5bHvO84VoupUl8iateeBiFPqd+pgLzORyiwIa7lsLvx273Fz3iOvX2Ksg9I/qhWABZ4adm//G45+GDGKFebzLo=" ],
"x5t" : "GRAcW4aQmQwhT47BZtZNdINqZa0=",
"x5u" : "https://keystore.openbankingtest.org.uk/0015800001HQQrZAAX/_wRpIDvMXGHSYn-p5lAV4D86kW0.pem",
"x5t#S256" : "2hyf0Atkd6Fj4rzn-vsD7GOn8iKgcbbHJUJXLlmr1Is="
},
{"kty":"RSA",
"e":"AQAB",
"kid":"NTVlMmY1Nzc4MGRlZjgyY2ZlNTVlMGM2NDVmZjkzM2U5M2M2YzZlMDVhNTNmMzZkY2Q2OWEyNjI3NGEyYjY5ZA_PS256",
"n":"hZ8l5N8ZEMdFOsSZBa1gzuckbZ0TrgmCPwTFM1Sf8U_di1wTA_d5VCNJh3ZNO_agBKhHRsJeDGAtx23Ohq-BblbwSICAd0H8L7oqZo92S-7f5e4y529CzpSt5lqCE2FIsFsBRRiozcZxH-BEsbVEYhPZJyt-RKVXQ0P5z88MUZ3WRp9KwHi42ltqYismfA_9M1tiyeoLoIWXnhodXSWL-TIQlCz7hdZEYOKLA6zyFkVXO0JasNGj3nZFbMuMufp4Ck7uIgiEVEn0BQnNsUZgn_CAx5F7mXUd08IRE0BsqXElcrua3_sURpl7GXYv9rkp2tB_Bzl_RGCBNyzv9w0atQ",
"use" : "sig",
"x5t": "NWI1MDA5MDU1ODlkNWE5NTdhYzc1NTMwMWM0MzUyMDkxOTNlMWI3Mw",
"x5u" : "http://127.0.0.1:8000/wso2carbon-is.pem",
"x5c" : [ "MIIDkzCCAnugAwIBAgIEAaPdwjANBgkqhkiG9w0BAQsFADBsMRAwDgYDVQQGEwdVbmtub3duMRAwDgYDVQQIEwdVbmtub3duMRAwDgYDVQQHEwdVbmtub3duMRAwDgYDVQQKEwdVbmtub3duMRAwDgYDVQQLEwdVbmtub3duMRAwDgYDVQQDEwdVbmtub3du MB4XDTIyMDYxNjEwMjk0NloXDTIyMDkxNDEwMjk0NlowbDEQMA4GA1UEBhMHVW5rbm93bjEQMA4GA1UECBMHVW5rbm93bjEQMA4GA1UEBxMHVW5rbm93bjEQMA4GA1UEChMHVW5rbm93bjEQMA4GA1UECxMHVW5rbm93bjEQMA4GA1UEAxMHVW5rbm93bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAIWfJeTfGRDHRTrEmQWtYM7n JG2dE64Jgj8ExTNUn/FP3YtcEwP3eVQjSYd2TTv2oASoR0bCXgxgLcdtzoavgW5W8EiAgHdB/C+6KmaPdkvu3+XuMudvQs6UreZaghNhSLBbAUUYqM3GcR/gRLG1RGIT2ScrfkSlV0ND+c/PDFGd1kafSsB4uNpbamIrJnwP/TNbYsnqC6CFl54aHV0li/ky EJQs+4XWRGDiiwOs8hZFVztCWrDRo952RWzLjLn6eApO7iIIhFRJ9AUJzbFGYJ/wgMeRe5l1HdPCERNAbKlxJXK7mt/7FEaZexl2L/a5KdrQfwc5f0RggTcs7/cNGrUCAwEAAaM9MDswHQYDVR0OBBYEFFEj2gSg9JID3ccajrnAip+4wYMVMBoGA1UdEQQTMBGHBMCoCLWCCWxvY2FsaG9zdDANBgkqhkiG9w0BAQsFAAOCAQEAPk/SFo6Rql/UD3x1a95vo0uE1RAE5MqTvWeWGdCftyx0ePNmvb+gdXBtxRZjoBSNf3QU3FzgPDm2cCke6vEnaRq8L/2nbDUfLxiEE6vLrak1LuvD4TGg/z5PR/R21+BaPn6bQu36R6GHqkSEGHGvitPifJU/94k39lrtZ9nuJcmN+Gcvnv1iAKtWXn12DRFK+sqEhSYcfdh/MEeIn0OwL6CZ2uv5fMIhI9HPCXuRLhpMSps4OuZZAkyJhW7u1hmaXw5WaIqpaxtSOJRJd6s9zzioMHUpW3BUkgXd+wFWoKc7C591oEhOUGn1X3DDlAoAepMN600E74/+pZoTRJVZ9g==" ],
"alg": "PS256",
"x5t#S256" : "5b1bb4e6dd7ff464e1603eb6afb3f7459758d1c77e9ee97ec692544fd36d5b6d"
}
]
}
response = make_response(jsonify(body), 200)
response.headers['content-type'] = 'application/json'
return response
context = ('cert.pem', 'key.pem')
app.run(host = '0.0.0.0', port = 9000, ssl_context=context)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment