atproto-proxy header experiments

@knksm5.final-techblog.com

Premise

  • knksm5.final-techblog.com = did:plc:vpjkockzv7nxnc5o4furet2x
  • PDS: morel.us-east.host.bsky.network

Service did.json

WhiteWind did.json
{
  "@context": [
    "https://www.w3.org/ns/did/v1",
    "https://w3id.org/security/suites/jws-2020/v1"
  ],
  "id": "did:web:whtwnd.com",
  "verificationMethod": [
    {
      "id": "did:web:whtwnd.com#owner",
      "type": "JsonWebKey2020",
      "controller": "did:web:whtwnd.com",
      "publicKeyJwk": {
        "kty": "EC",
        "crv": "secp256k1",
        "x": "cLO2a45bIXohmXXZtFgypv1eorUym7FC7hy+G+Ys2w0=",
        "y": "L4jmrS4oA98rsNOXNfyYktkb6eTBT/e9zzsDCGeTivI="
      }
    }
  ],
  "authentication": [
    "did:web:whtwnd.com#owner"
  ],
  "assertionMethod": [
    "did:web:whtwnd.com#owner"
  ],
  "service": [
    {
      "id": "#whitewind_blog",
      "type": "AtprotoAppView",
      "serviceEndpoint": "https://b481a144-23e5-4fa9-83ae-e448d3593655.whtwnd.com"
    }
  ]
}

curl logs (ordered by time)

Fail request(1)
curl -i -H 'Authorization: Bearer <TOKEN>' -H 'atproto-proxy: did:web:whtwnd.com#whitewind_blog' https://morel.us-east.host.bsky.network/xrpc/com.whtwnd.blog.getEntryMetadataByName\?author\=knksm5.final-techblog.com\&entryTitle\=About%20WhiteWind
HTTP/2 500
x-powered-by: Express
access-control-allow-origin: *
ratelimit-limit: 3000
ratelimit-remaining: 2999
ratelimit-reset: 1715869394
ratelimit-policy: 3000;w=300
content-type: application/json; charset=utf-8
content-length: 65
etag: W/"41-PDrLQG9BpCN547AVB5jtYl3RBt8"
vary: Accept-Encoding
date: Thu, 16 May 2024 14:18:16 GMT
strict-transport-security: max-age=63072000

{"error":"InternalServerError","message":"Internal Server Error"}%
Direct request without atproto-proxy
curl -i -H 'Authorization: Bearer <TOKEN>' htt
ps://morel.us-east.host.bsky.network/xrpc/com.whtwnd.blog.getEntryMetadataByName\?author\=knksm5.final-techblog.com\&entryTitle\=About%20WhiteWind
HTTP/2 501
x-powered-by: Express
access-control-allow-origin: *
ratelimit-limit: 3000
ratelimit-remaining: 2998
ratelimit-reset: 1715869394
ratelimit-policy: 3000;w=300
content-type: application/json; charset=utf-8
content-length: 67
etag: W/"43-/bs0m1axTx61oX0AJZlwBuYVGUY"
vary: Accept-Encoding
date: Thu, 16 May 2024 14:21:26 GMT
strict-transport-security: max-age=63072000

{"error":"MethodNotImplemented","message":"Method Not Implemented"}%
Fail request(2)
curl -i -H 'Authorization: Bearer <TOKEN>' -H 'atproto-proxy: did:web:whtwnd.com#whitewind_blog' https://morel.us-east.host.bsky.network/xrpc/com.whtwnd.blog.getEntryMetadataByName\?author\=knksm5.final-techblog.com\&entryTitle\=About%20WhiteWind
HTTP/2 500
x-powered-by: Express
access-control-allow-origin: *
ratelimit-limit: 3000
ratelimit-remaining: 2997
ratelimit-reset: 1715869394
ratelimit-policy: 3000;w=300
content-type: application/json; charset=utf-8
content-length: 65
etag: W/"41-PDrLQG9BpCN547AVB5jtYl3RBt8"
vary: Accept-Encoding
date: Thu, 16 May 2024 14:21:31 GMT
strict-transport-security: max-age=63072000

{"error":"InternalServerError","message":"Internal Server Error"}%
Fail request(3)
curl -i -H 'Authorization: Bearer <TOKEN>' -H 'atproto-proxy: did:web:whtwnd.com#whitewind_blog' https://morel.us-east.host.bsky.network/xrpc/com.whtwnd.blog.getEntryMetadataByName\?author\=knksm5.final-techblog.com\&entryTitle\=About%20WhiteWind
HTTP/2 500
x-powered-by: Express
access-control-allow-origin: *
ratelimit-limit: 3000
ratelimit-remaining: 2999
ratelimit-reset: 1715869968
ratelimit-policy: 3000;w=300
content-type: application/json; charset=utf-8
content-length: 65
etag: W/"41-PDrLQG9BpCN547AVB5jtYl3RBt8"
vary: Accept-Encoding
date: Thu, 16 May 2024 14:27:49 GMT
strict-transport-security: max-age=63072000

{"error":"InternalServerError","message":"Internal Server Error"}%
Direct request to appview (success)
curl -i https://b481a144-23e5-4fa9-83ae-e448d3593655.whtwnd.com/xrpc/com.whtwnd.blog.getEntryMetadataByName\?author\=knksm5.final-techblog.com\&entryTitle\=About%20WhiteWind
HTTP/2 200
date: Thu, 16 May 2024 14:28:35 GMT
content-type: application/json
content-length: 192
x-amzn-requestid: 36b21f09-62d9-49fb-82a4-f01acf38c563
access-control-allow-origin: *
access-control-allow-headers: Content-Type
x-amz-apigw-id: X3iy-FEDtjMET8Q=
access-control-allow-methods: OPTIONS,GET
x-amzn-trace-id: Root=1-66461812-72f60a8b761d571a70097751;Parent=6bd274a807b33a66;Sampled=0;lineage=8dc4dd71:0

{"cid":"bafyreiakcy2czpqw57ojhrivy44lmcua2vk7fmxo3kn37e2tl3zlwz645a","entryUri":"at://did:plc:vpjkockzv7nxnc5o4furet2x/com.whtwnd.blog.entry/3knxzuga4ds2q","lastUpdate":"2024-04-04T15:24:10Z"}%
Deliverately break token
curl -i -H 'Authorization: Bearer <BROKEN_TOKEN>' -H 'atproto-proxy: did:web:whtwnd.com#whitewind_blog' https://morel.us-east.host.bsky.network/xrpc/com.whtwnd.blog.getEntryMetadataByName\?author\=knksm5.final-techblog.com\&entryTitle\=About%20WhiteWind
HTTP/2 400
x-powered-by: Express
access-control-allow-origin: *
ratelimit-limit: 3000
ratelimit-remaining: 2984
ratelimit-reset: 1715869968
ratelimit-policy: 3000;w=300
content-type: application/json; charset=utf-8
content-length: 64
etag: W/"40-xhmkJNPFBTKYnh5m02EUy+y089k"
vary: Accept-Encoding
date: Thu, 16 May 2024 14:32:24 GMT
strict-transport-security: max-age=63072000

{"error":"InvalidToken","message":"Token could not be verified"}%
Fail request (4)
curl -i -H 'Authorization: Bearer <TOKEN>' -H 'atproto-proxy: did:web:whtwnd.com#whitewind_blog' https://morel.us-east.host.bsky.network/xrpc/com.whtwnd.blog.getEntryMetadataByName\?author\=knksm5.final-techblog.com\&entryTitle\=About%20WhiteWind
HTTP/2 500
x-powered-by: Express
access-control-allow-origin: *
ratelimit-limit: 3000
ratelimit-remaining: 2983
ratelimit-reset: 1715869968
ratelimit-policy: 3000;w=300
content-type: application/json; charset=utf-8
content-length: 65
etag: W/"41-PDrLQG9BpCN547AVB5jtYl3RBt8"
vary: Accept-Encoding
date: Thu, 16 May 2024 14:32:30 GMT
strict-transport-security: max-age=63072000

{"error":"InternalServerError","message":"Internal Server Error"}%
Fail request (5)
curl -i -H 'Authorization: Bearer <TOKEN>' -H 'atproto-proxy: did:web:whtwnd.com#whitewind_blog' https://morel.us-east.host.bsky.network/xrpc/com.whtwnd.blog.getEntryMetadataByName\?author\=knksm5.final-techblog.com\&entryTitle\=About%20WhiteWind
HTTP/2 500
x-powered-by: Express
access-control-allow-origin: *
ratelimit-limit: 3000
ratelimit-remaining: 2946
ratelimit-reset: 1715870432
ratelimit-policy: 3000;w=300
content-type: application/json; charset=utf-8
content-length: 65
etag: W/"41-PDrLQG9BpCN547AVB5jtYl3RBt8"
vary: Accept-Encoding
date: Thu, 16 May 2024 14:38:33 GMT
strict-transport-security: max-age=63072000

{"error":"InternalServerError","message":"Internal Server Error"}%
Fail request (6)
curl -i -H 'Authorization: Bearer <TOKEN>' -H 'atproto-proxy: did:web:whtwnd.com#whitewind_blog' https://morel.us-east.host.bsky.network/xrpc/com.whtwnd.blog.getEntryMetadataByName\?author\=knksm5.final-techblog.com\&entryTitle\=About%20WhiteWind
HTTP/2 500
x-powered-by: Express
access-control-allow-origin: *
ratelimit-limit: 3000
ratelimit-remaining: 2945
ratelimit-reset: 1715870432
ratelimit-policy: 3000;w=300
content-type: application/json; charset=utf-8
content-length: 65
etag: W/"41-PDrLQG9BpCN547AVB5jtYl3RBt8"
vary: Accept-Encoding
date: Thu, 16 May 2024 14:39:19 GMT
strict-transport-security: max-age=63072000

{"error":"InternalServerError","message":"Internal Server Error"}%

Maybe I turned on API Gateway CloudWatch logs around here?

Deliverately drop service id
curl -i -H 'Authorization: Bearer <TOKEN>' -H 'atproto-proxy: did:web:whtwnd.com' https://morel.us-east.host.bsky.network/xrpc/com.whtwnd.blog.getEntryMetadataByName\
?author\=knksm5.final-techblog.com\&entryTitle\=About%20WhiteWind
HTTP/2 400
x-powered-by: Express
access-control-allow-origin: *
ratelimit-limit: 3000
ratelimit-remaining: 2944
ratelimit-reset: 1715870432
ratelimit-policy: 3000;w=300
content-type: application/json; charset=utf-8
content-length: 62
etag: W/"3e-azp4Nl9WVmr3IcMPv6nM5tGtB8c"
vary: Accept-Encoding
date: Thu, 16 May 2024 14:39:41 GMT
strict-transport-security: max-age=63072000

{"error":"InvalidRequest","message":"no service id specified"}%
Deliverately break service id
curl -i -H 'Authorization: Bearer <TOKEN>' -H 'atproto-proxy: did:web:whtwnd.com#whitewind_blo' https://morel.us-east.host.bsky.network/xrpc/com.whtwnd.blog.getEntryM
etadataByName\?author\=knksm5.final-techblog.com\&entryTitle\=About%20WhiteWind
HTTP/2 400
x-powered-by: Express
access-control-allow-origin: *
ratelimit-limit: 3000
ratelimit-remaining: 2943
ratelimit-reset: 1715870432
ratelimit-policy: 3000;w=300
content-type: application/json; charset=utf-8
content-length: 78
etag: W/"4e-myZM5YQrfKNTS544KwhRZpYN11c"
vary: Accept-Encoding
date: Thu, 16 May 2024 14:39:52 GMT
strict-transport-security: max-age=63072000

{"error":"InvalidRequest","message":"could not resolve proxy did service url"}%
Successful request (com.whtwnd.blog.getEntryMetadataByName)
curl -i -H 'Authorization: Bearer <TOKEN>' -H 'atproto-proxy: did:web:whtwnd.com#whitewind_blog' https://morel.us-east.host.bsky.network/xrpc/com.whtwnd.blog.getEntryMetadataByName\?author\=knksm5.final-techblog.com\&entryTitle\=About%20WhiteWind
HTTP/2 200
x-powered-by: Express
access-control-allow-origin: *
ratelimit-limit: 3000
ratelimit-remaining: 2942
ratelimit-reset: 1715870432
ratelimit-policy: 3000;w=300
content-type: application/json
content-length: 192
vary: Accept-Encoding
date: Thu, 16 May 2024 14:40:05 GMT
strict-transport-security: max-age=63072000

{"cid":"bafyreiakcy2czpqw57ojhrivy44lmcua2vk7fmxo3kn37e2tl3zlwz645a","entryUri":"at://did:plc:vpjkockzv7nxnc5o4furet2x/com.whtwnd.blog.entry/3knxzuga4ds2q","lastUpdate":"2024-04-04T15:24:10Z"}%
Successful request (com.whtwnd.blog.getMentionsByEntry)
curl -i -H 'Authorization: Bearer <TOKEN>' -H 'atproto-proxy: did:web:whtwnd.com#whitewind_blog' https://morel.us-east.host.bsky.network/xrpc/com.whtwnd.blog.getMentionsByEntry\?postUri\=at%3A%2F%2Fdid%3Aplc%3Avafqb3yhndyawabm2t2zhw5z%2Fcom.whtwnd.blog.entry%2F3kslygbm5fl2y
HTTP/2 200
x-powered-by: Express
access-control-allow-origin: *
ratelimit-limit: 3000
ratelimit-remaining: 2999
ratelimit-reset: 1715870854
ratelimit-policy: 3000;w=300
content-type: application/json
content-length: 87
vary: Accept-Encoding
date: Thu, 16 May 2024 14:42:36 GMT
strict-transport-security: max-age=63072000

{"mentions":["at://did:plc:vafqb3yhndyawabm2t2zhw5z/app.bsky.feed.post/3kslyot6wql2u"]}%
knksm5.final-techblog.com
K-NKSM

@knksm5.final-techblog.com

Making a Markdown blog service using atproto which you can use with Bluesky account!
AT Protocolを使い、Blueskyアカウントがあれば使えるMarkdownブログサービス(AppView)を作っています!
WhiteWind https://whtwnd.com/

X / Twitter: @KNKSM5
Blog: https://blog.final-techblog.com/

Post reaction in Bluesky

*To be shown as a reaction, include article link in the post or add link card

Reactions from everyone (0)