Skip to content

Latest commit

 

History

History
119 lines (95 loc) · 9.65 KB

README.md

File metadata and controls

119 lines (95 loc) · 9.65 KB

Envoy

Access Envoy Admin http://localhost:8001/.

Database

Proxying MongoDB.

httpbin

Access httpbin http://localhost:15001/ to view endpoints list.

Use image curlimages/curl:

$ docker exec -it envoy-curl sh

Directly access envoy-httpbin:

$ curl envoy-httpbin:8000/headers
{
  "headers": {
    "Accept": "*/*",
    "Host": "envoy-httpbin:8000",
    "User-Agent": "curl/8.6.0"
  }
}

Use proxy envoy to access envou-httpbin:

$ curl envoy:15001/headers
{
  "headers": {
    "Accept": "*/*",
    "Host": "envoy-httpbin",
    "User-Agent": "curl/8.6.0",
    "X-Envoy-Expected-Rq-Timeout-Ms": "15000",
    "X-Request-Id": "3aa4bbdd-c413-4efe-bcfc-26f3d0e84b3a"
  }
}

Cleanup:

$ docker compose down --rmi "all"
[+] Running 6/6
 ✔ Container envoy                   Removed
 ✔ Container envoy-httpbin           Removed
 ✔ Container envoy-curl              Removed
 ✔ Image envoyproxy/envoy:v1.28.0    Removed
 ✔ Image citizenstig/httpbin:latest  Removed
 ✔ Image curlimages/curl:latest      Removed

JWT Authentication

Provider: Keycloak

$ curl -s -X POST http://localhost:18080/realms/envoy/protocol/openid-connect/token   -d "client_id=envoy-service&username=envoy&password=envoy&grant_type=password"
{
  "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqU1lEV3VGWGhjcERQeEhNOUJUS3Q4c3JPNUYtaFNiMGhHdkRjTVRfZXYwIn0.eyJleHAiOjE3MTAzMjQ0OTQsImlhdCI6MTcxMDMyNDE5NCwianRpIjoiNTc5ZmVlMDgtZGIzNi00NDc2LWFhYmUtNWJhZTIyNmNjNmQ0IiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDoxODA4MC9yZWFsbXMvZW52b3kiLCJhdWQiOiJhY2NvdW50Iiwic3ViIjoiYjcwMTRhZWYtZGY0NC00MTk4LWFhNTItMDYwMGY0ZTg1MzBkIiwidHlwIjoiQmVhcmVyIiwiYXpwIjoiZW52b3ktc2VydmljZSIsInNlc3Npb25fc3RhdGUiOiJlMjM0MmU0NS1jYTI1LTQ4N2MtYWI4Yy1hZGQxZGU4NTQzYzIiLCJhY3IiOiIxIiwiYWxsb3dlZC1vcmlnaW5zIjpbIi8qIl0sInJlYWxtX2FjY2VzcyI6eyJyb2xlcyI6WyJvZmZsaW5lX2FjY2VzcyIsImRlZmF1bHQtcm9sZXMtZW52b3kiLCJ1bWFfYXV0aG9yaXphdGlvbiJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoiZW1haWwgcHJvZmlsZSIsInNpZCI6ImUyMzQyZTQ1LWNhMjUtNDg3Yy1hYjhjLWFkZDFkZTg1NDNjMiIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwicHJlZmVycmVkX3VzZXJuYW1lIjoiZW52b3kifQ.2eZd8wBh1QKQZTjX2R3Lq6FTJosXNyhG3xnU3OrDu_sLVxdaSXrgGoJ5SFlodnBK2fzsBNcetHzO6wK2XnJck3x04QePtvzReF059Prgq1-nHONK9j1SPS_6mO-39LNj2qT-BfldsNDg6UViwFUGMJSFumFsNT5kL5t88t-96h52VoMHIrSUeyvBbQoWMv3JIP9SPBQ1-tSAlrUxu5HtYxshEovI1IYa3Pk8ltOmWEUxbRAJyNq63HnFNdVF65SnBX4JMpCGN7OOaMR8eZdcd2oNwW3DXtoxep-cPulqdRT1t55SkZiWouEL7KHFgdBUkvr6YaijA3jBkbslvkS10Q",
  "expires_in": 300,
  "refresh_expires_in": 1800,
  "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICIyYzk4MzdmYi1lMTM4LTQ2NzgtOWYxMC04YjcyNWY5ZTU4NjkifQ.eyJleHAiOjE3MTAzMjU5OTQsImlhdCI6MTcxMDMyNDE5NCwianRpIjoiZjIxZWVmNDQtODRhMS00YTBkLTkxMzMtM2RhZDM3YmMwN2Q4IiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDoxODA4MC9yZWFsbXMvZW52b3kiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjE4MDgwL3JlYWxtcy9lbnZveSIsInN1YiI6ImI3MDE0YWVmLWRmNDQtNDE5OC1hYTUyLTA2MDBmNGU4NTMwZCIsInR5cCI6IlJlZnJlc2giLCJhenAiOiJlbnZveS1zZXJ2aWNlIiwic2Vzc2lvbl9zdGF0ZSI6ImUyMzQyZTQ1LWNhMjUtNDg3Yy1hYjhjLWFkZDFkZTg1NDNjMiIsInNjb3BlIjoiZW1haWwgcHJvZmlsZSIsInNpZCI6ImUyMzQyZTQ1LWNhMjUtNDg3Yy1hYjhjLWFkZDFkZTg1NDNjMiJ9.r5ChuLL9tohV7UbadqAj_SkB0SCONXCc6z7b44Nt9oQ",
  "token_type": "Bearer",
  "not-before-policy": 0,
  "session_state": "e2342e45-ca25-487c-ab8c-add1de8543c2",
  "scope": "email profile"
}
$ curl http://localhost:15001/headers
Jwt is missing

$ curl http://localhost:15001/headers -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqU1lEV3VGWGhjcERQeEhNOUJUS3Q4c3JPNUYtaFNiMGhHdkRjTVRfZXYwIn0.eyJleHAiOjE3MTAzMjQ0OTQsImlhdCI6MTcxMDMyNDE5NCwianRpIjoiNTc5ZmVlMDgtZGIzNi00NDc2LWFhYmUtNWJhZTIyNmNjNmQ0IiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDoxODA4MC9yZWFsbXMvZW52b3kiLCJhdWQiOiJhY2NvdW50Iiwic3ViIjoiYjcwMTRhZWYtZGY0NC00MTk4LWFhNTItMDYwMGY0ZTg1MzBkIiwidHlwIjoiQmVhcmVyIiwiYXpwIjoiZW52b3ktc2VydmljZSIsInNlc3Npb25fc3RhdGUiOiJlMjM0MmU0NS1jYTI1LTQ4N2MtYWI4Yy1hZGQxZGU4NTQzYzIiLCJhY3IiOiIxIiwiYWxsb3dlZC1vcmlnaW5zIjpbIi8qIl0sInJlYWxtX2FjY2VzcyI6eyJyb2xlcyI6WyJvZmZsaW5lX2FjY2VzcyIsImRlZmF1bHQtcm9sZXMtZW52b3kiLCJ1bWFfYXV0aG9yaXphdGlvbiJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoiZW1haWwgcHJvZmlsZSIsInNpZCI6ImUyMzQyZTQ1LWNhMjUtNDg3Yy1hYjhjLWFkZDFkZTg1NDNjMiIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwicHJlZmVycmVkX3VzZXJuYW1lIjoiZW52b3kifQ.2eZd8wBh1QKQZTjX2R3Lq6FTJosXNyhG3xnU3OrDu_sLVxdaSXrgGoJ5SFlodnBK2fzsBNcetHzO6wK2XnJck3x04QePtvzReF059Prgq1-nHONK9j1SPS_6mO-39LNj2qT-BfldsNDg6UViwFUGMJSFumFsNT5kL5t88t-96h52VoMHIrSUeyvBbQoWMv3JIP9SPBQ1-tSAlrUxu5HtYxshEovI1IYa3Pk8ltOmWEUxbRAJyNq63HnFNdVF65SnBX4JMpCGN7OOaMR8eZdcd2oNwW3DXtoxep-cPulqdRT1t55SkZiWouEL7KHFgdBUkvr6YaijA3jBkbslvkS10Q"
Jwt is expired

$ curl -s -X POST http://localhost:18080/realms/envoy/protocol/openid-connect/token   -d "client_id=en
voy-service&username=envoy&password=envoy&grant_type=password"
{
  "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqU1lEV3VGWGhjcERQeEhNOUJUS3Q4c3JPNUYtaFNiMGhHdkRjTVRfZXYwIn0.eyJleHAiOjE3MTAzMjczMDMsImlhdCI6MTcxMDMyNzAwMywianRpIjoiN2MyNmMxYTctMjQ4My00NWFiLTg3MmQtMzE3MjhmM2Y3M2IzIiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDoxODA4MC9yZWFsbXMvZW52b3kiLCJhdWQiOiJhY2NvdW50Iiwic3ViIjoiYjcwMTRhZWYtZGY0NC00MTk4LWFhNTItMDYwMGY0ZTg1MzBkIiwidHlwIjoiQmVhcmVyIiwiYXpwIjoiZW52b3ktc2VydmljZSIsInNlc3Npb25fc3RhdGUiOiJmYmMyYTc0NS00YTlkLTQ2ODEtYjI4MS03MGQ4ZDUxNjdmNDMiLCJhY3IiOiIxIiwiYWxsb3dlZC1vcmlnaW5zIjpbIi8qIl0sInJlYWxtX2FjY2VzcyI6eyJyb2xlcyI6WyJvZmZsaW5lX2FjY2VzcyIsImRlZmF1bHQtcm9sZXMtZW52b3kiLCJ1bWFfYXV0aG9yaXphdGlvbiJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoiZW1haWwgcHJvZmlsZSIsInNpZCI6ImZiYzJhNzQ1LTRhOWQtNDY4MS1iMjgxLTcwZDhkNTE2N2Y0MyIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwicHJlZmVycmVkX3VzZXJuYW1lIjoiZW52b3kifQ.UEia_1JBPhhlNBAd09Y_U5jGBs8Aj4FlU950vLqfHgrSHeXw2_2sZVUy-GzNTwwv_UyNQryoPhzJ2wbpiM4MgP6VmslfgOJDpVYVckB1BFUZDwnJAf-PmoxFE6ka-6iDG47sUQIhXOfpDrCs_ol5SiEXx_tnNCWv9a5Udc2fLTVFUSXOcBjWcrgz2cnNrCv-Y_qSv9IpThYnjVKu59i_KsjCr66RqIqMHFXeMc3GZdNg9X1MH957OdJJ3m7P9e99TI21zz6xSL0rRJzju9ERBNztVaQ2cLtS7CHM_pYH2aLORz2O8Kf6tLrBnvyJ1N3o8DbPS9DzmZ165efJqTHwtA",
  "expires_in": 300,
  "refresh_expires_in": 1800,
  "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICIyYzk4MzdmYi1lMTM4LTQ2NzgtOWYxMC04YjcyNWY5ZTU4NjkifQ.eyJleHAiOjE3MTAzMjg4MDMsImlhdCI6MTcxMDMyNzAwMywianRpIjoiOGU1MjkyZGUtNzQwOC00OWY3LTkwMWQtODdkNmQzYTQwYzQ3IiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDoxODA4MC9yZWFsbXMvZW52b3kiLCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjE4MDgwL3JlYWxtcy9lbnZveSIsInN1YiI6ImI3MDE0YWVmLWRmNDQtNDE5OC1hYTUyLTA2MDBmNGU4NTMwZCIsInR5cCI6IlJlZnJlc2giLCJhenAiOiJlbnZveS1zZXJ2aWNlIiwic2Vzc2lvbl9zdGF0ZSI6ImZiYzJhNzQ1LTRhOWQtNDY4MS1iMjgxLTcwZDhkNTE2N2Y0MyIsInNjb3BlIjoiZW1haWwgcHJvZmlsZSIsInNpZCI6ImZiYzJhNzQ1LTRhOWQtNDY4MS1iMjgxLTcwZDhkNTE2N2Y0MyJ9.JzV_y5V1PCiK6R0xS-I7zeZvd2PdSUC_gP-pFQLlPVc",
  "token_type": "Bearer",
  "not-before-policy": 0,
  "session_state": "fbc2a745-4a9d-4681-b281-70d8d5167f43",
  "scope": "email profile"
}

$ curl http://localhost:15001/headers -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJqU1lEV3VGWGhjcERQeEhNOUJUS3Q4c3JPNUYtaFNiMGhHdkRjTVRfZXYwIn0.eyJleHAiOjE3MTAzMjczMDMsImlhdCI6MTcxMDMyNzAwMywianRpIjoiN2MyNmMxYTctMjQ4My00NWFiLTg3MmQtMzE3MjhmM2Y3M2IzIiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDoxODA4MC9yZWFsbXMvZW52b3kiLCJhdWQiOiJhY2NvdW50Iiwic3ViIjoiYjcwMTRhZWYtZGY0NC00MTk4LWFhNTItMDYwMGY0ZTg1MzBkIiwidHlwIjoiQmVhcmVyIiwiYXpwIjoiZW52b3ktc2VydmljZSIsInNlc3Npb25fc3RhdGUiOiJmYmMyYTc0NS00YTlkLTQ2ODEtYjI4MS03MGQ4ZDUxNjdmNDMiLCJhY3IiOiIxIiwiYWxsb3dlZC1vcmlnaW5zIjpbIi8qIl0sInJlYWxtX2FjY2VzcyI6eyJyb2xlcyI6WyJvZmZsaW5lX2FjY2VzcyIsImRlZmF1bHQtcm9sZXMtZW52b3kiLCJ1bWFfYXV0aG9yaXphdGlvbiJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoiZW1haWwgcHJvZmlsZSIsInNpZCI6ImZiYzJhNzQ1LTRhOWQtNDY4MS1iMjgxLTcwZDhkNTE2N2Y0MyIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwicHJlZmVycmVkX3VzZXJuYW1lIjoiZW52b3kifQ.UEia_1JBPhhlNBAd09Y_U5jGBs8Aj4FlU950vLqfHgrSHeXw2_2sZVUy-GzNTwwv_UyNQryoPhzJ2wbpiM4MgP6VmslfgOJDpVYVckB1BFUZDwnJAf-PmoxFE6ka-6iDG47sUQIhXOfpDrCs_ol5SiEXx_tnNCWv9a5Udc2fLTVFUSXOcBjWcrgz2cnNrCv-Y_qSv9IpThYnjVKu59i_KsjCr66RqIqMHFXeMc3GZdNg9X1MH957OdJJ3m7P9e99TI21zz6xSL0rRJzju9ERBNztVaQ2cLtS7CHM_pYH2aLORz2O8Kf6tLrBnvyJ1N3o8DbPS9DzmZ165efJqTHwtA"
{
  "headers": {
    "Accept": "*/*",
    "Host": "envoy-httpbin",
    "User-Agent": "curl/8.4.0",
    "X-Envoy-Expected-Rq-Timeout-Ms": "15000",
    "X-Jwt-Payload": "eyJleHAiOjE3MTAzMjczMDMsImlhdCI6MTcxMDMyNzAwMywianRpIjoiN2MyNmMxYTctMjQ4My00NWFiLTg3MmQtMzE3MjhmM2Y3M2IzIiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDoxODA4MC9yZWFsbXMvZW52b3kiLCJhdWQiOiJhY2NvdW50Iiwic3ViIjoiYjcwMTRhZWYtZGY0NC00MTk4LWFhNTItMDYwMGY0ZTg1MzBkIiwidHlwIjoiQmVhcmVyIiwiYXpwIjoiZW52b3ktc2VydmljZSIsInNlc3Npb25fc3RhdGUiOiJmYmMyYTc0NS00YTlkLTQ2ODEtYjI4MS03MGQ4ZDUxNjdmNDMiLCJhY3IiOiIxIiwiYWxsb3dlZC1vcmlnaW5zIjpbIi8qIl0sInJlYWxtX2FjY2VzcyI6eyJyb2xlcyI6WyJvZmZsaW5lX2FjY2VzcyIsImRlZmF1bHQtcm9sZXMtZW52b3kiLCJ1bWFfYXV0aG9yaXphdGlvbiJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoiZW1haWwgcHJvZmlsZSIsInNpZCI6ImZiYzJhNzQ1LTRhOWQtNDY4MS1iMjgxLTcwZDhkNTE2N2Y0MyIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwicHJlZmVycmVkX3VzZXJuYW1lIjoiZW52b3kifQ",
    "X-Request-Id": "0028a186-b9c9-4fe8-b705-beef13610846"
  }
}