Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cannot get authentik sign-in to work #1597

Open
igor47 opened this issue Jan 26, 2025 · 3 comments
Open

cannot get authentik sign-in to work #1597

igor47 opened this issue Jan 26, 2025 · 3 comments

Comments

@igor47
Copy link

igor47 commented Jan 26, 2025

spent a long time on this, and i can't figure out what's wrong. i tried using both authentik on its own, and also using the github compatibility interface. my config:

      oauth = {
        "github" = {
          enabled = true
          name = "Github"
          icon = "fab fa-github"
          scope = ""
          authorize-url = "https://authentik.tlk/login/oauth/authorize"
          token-url = "https://authentik.tlk/login/oauth/access_token"
          user-url = "https://authentik.tlk/user"
          user-id-key = "preferred_username"
          client-id = "CLIENTID"
          client-secret = "client-secret"
        },
        "authentik" = {
          enabled = true
          name = "Authentik"
          icon = "fab fa-paw"
          scope = ""
          authorize-url = "https://authentik.tlk/application/o/authorize/"
          token-url = "https://authentik.tlk/application/o/token/"
          user-url = "https://authentik.tlk/application/o/userinfo/"
          user-id-key = "preferred_username"
          user-email-key = "email"
          client-id = "CLIENTID"
          client-secret = "client-secret"
        }
      }

here's the combined logs from both sharry and authentik:

fileshare.purr-1  | 2025.01.26 01:32:24 [io-comp...] INFO org.http4s.server.middleware.Logger - HTTP/1.1 GET /api/v2/open/auth/oauth/authentik
fileshare.purr-1  | 2025.01.26 01:32:24 [io-comp...] INFO org.http4s.server.middleware.Logger - HTTP/1.1 302 Found
authentik-1       | {"auth_via": "session", "domain_url": "authentik.tld", "event": "No scopes requested, defaulting to all configured scopes", "host": "authentik.tld", "level": "info", "logger": "authentik.providers.oauth2.views.authorize", "pid": 2171634, "request_id": "069fdb6139a94676be9aac53ea1c4247", "schema_name": "public", "scopes": "{'email', 'profile', 'openid'}", "timestamp": "2025-01-26T01:32:24.857133"}
authentik-1       | {"auth_via": "session", "domain_url": "authentik.tld", "event": "/application/o/authorize/?client_id=CLIENTID&scope=&redirect_uri=https%3A%2F%2Fsharry.tld%2Fapi%2Fv2%2Fopen%2Fauth%2Foauth%2Fauthentik%2Fresume&response_type=code&state=2dvrKZj1HAh%24RWv30T4fqfM8d5E6uvzTL98_bkM", "host": "authentik.tld", "level": "info", "logger": "authentik.asgi", "method": "GET", "pid": 2171634, "remote": "23.93.181.245", "request_id": "069fdb6139a94676be9aac53ea1c4247", "runtime": 78, "schema_name": "public", "scheme": "https", "status": 302, "timestamp": "2025-01-26T01:32:24.900133", "user": "igor47", "user_agent": "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"}
authentik-1       | {"auth_via": "session", "domain_url": "authentik.tld", "event": "/if/flow/default-provider-authorization-implicit-consent/?client_id=CLIENTID&scope=&redirect_uri=https%3A%2F%2Fsharry.tld%2Fapi%2Fv2%2Fopen%2Fauth%2Foauth%2Fauthentik%2Fresume&response_type=code&state=2dvrKZj1HAh%24RWv30T4fqfM8d5E6uvzTL98_bkM", "host": "authentik.tld", "level": "info", "logger": "authentik.asgi", "method": "GET", "pid": 2171634, "remote": "23.93.181.245", "request_id": "fa035ceb94d9435abf83f258daf963f9", "runtime": 47, "schema_name": "public", "scheme": "https", "status": 200, "timestamp": "2025-01-26T01:32:25.098790", "user": "igor47", "user_agent": "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"}
fileshare.purr-1  | 2025.01.26 01:32:25 [io-comp...] INFO org.http4s.server.middleware.Logger - HTTP/1.1 GET /sw.js
fileshare.purr-1  | 2025.01.26 01:32:25 [io-comp...] INFO org.http4s.server.middleware.Logger - HTTP/1.1 200 OK
fileshare.purr-1  | 2025.01.26 01:32:25 [io-comp...] INFO org.http4s.server.middleware.Logger - HTTP/1.1 GET /api/v2/open/info/version
fileshare.purr-1  | 2025.01.26 01:32:25 [io-comp...] INFO org.http4s.server.middleware.Logger - HTTP/1.1 200 OK
authentik-1       | {"auth_via": "session", "domain_url": "authentik.tld", "event": "/api/v3/root/config/", "host": "authentik.tld", "level": "info", "logger": "authentik.asgi", "method": "GET", "pid": 2174655, "remote": "23.93.181.245", "request_id": "575730440c6947658cc2134c2a062211", "runtime": 36, "schema_name": "public", "scheme": "https", "status": 200, "timestamp": "2025-01-26T01:32:26.099194", "user": "igor47", "user_agent": "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"}
authentik-1       | {"auth_via": "session", "domain_url": "authentik.tld", "event": "/api/v3/core/brands/current/", "host": "authentik.tld", "level": "info", "logger": "authentik.asgi", "method": "GET", "pid": 2171634, "remote": "23.93.181.245", "request_id": "3088d7fc010e4343a1d9b07ef3e0982a", "runtime": 47, "schema_name": "public", "scheme": "https", "status": 200, "timestamp": "2025-01-26T01:32:26.110538", "user": "igor47", "user_agent": "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"}
authentik-1       | {"domain_url": null, "event": "/ws/client/", "level": "info", "logger": "authentik.asgi", "pid": 2171634, "remote": "23.93.181.245", "schema_name": "public", "scheme": "ws", "timestamp": "2025-01-26T01:32:26.295764", "user_agent": "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"}
authentik-1       | {"auth_via": "session", "domain_url": "authentik.tld", "event": "/api/v3/root/config/", "host": "authentik.tld", "level": "info", "logger": "authentik.asgi", "method": "GET", "pid": 2174655, "remote": "23.93.181.245", "request_id": "7f9ca2d476f441dabaf193b8092d54e9", "runtime": 20, "schema_name": "public", "scheme": "https", "status": 200, "timestamp": "2025-01-26T01:32:26.356012", "user": "igor47", "user_agent": "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"}
authentik-1       | {"action": "authorize_application", "auth_via": "session", "client_ip": "23.93.181.245", "context": {"authorized_application": {"app": "authentik_core", "model_name": "application", "name": "File Share", "pk": "b1b0de7e3a06493cb92dd6129f053436"}, "flow": "61b8cd06a337478192ba8f17e4da8472", "http_request": {"args": {"client_id": "CLIENTID", "redirect_uri": "https://sharry.tld/api/v2/open/auth/oauth/authentik/resume", "response_type": "code", "scope": "", "state": "2dvrKZj1HAh$RWv30T4fqfM8d5E6uvzTL98_bkM"}, "method": "GET", "path": "/api/v3/flows/executor/default-provider-authorization-implicit-consent/", "request_id": "7b339c3387614dfea97ae6739f12e037", "user_agent": "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"}, "scopes": "email profile openid"}, "domain_url": "authentik.tld", "event": "Created Event", "host": "authentik.tld", "level": "info", "logger": "authentik.events.models", "pid": 2171634, "request_id": "7b339c3387614dfea97ae6739f12e037", "schema_name": "public", "timestamp": "2025-01-26T01:32:26.356887"}
authentik-1       | {"auth_via": "session", "domain_url": "authentik.tld", "event": "/api/v3/core/brands/current/", "host": "authentik.tld", "level": "info", "logger": "authentik.asgi", "method": "GET", "pid": 2171634, "remote": "23.93.181.245", "request_id": "5b239793791f47c2809aa44212690b22", "runtime": 33, "schema_name": "public", "scheme": "https", "status": 200, "timestamp": "2025-01-26T01:32:26.386864", "user": "igor47", "user_agent": "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"}
authentik-1       | {"auth_via": "session", "domain_url": "authentik.tld", "event": "Task published", "host": "authentik.tld", "level": "info", "logger": "authentik.root.celery", "pid": 2171634, "request_id": "7b339c3387614dfea97ae6739f12e037", "schema_name": "public", "task_id": "d4d9eb3486b044798ff6cd1f30e8fdd4", "task_name": "authentik.events.tasks.event_notification_handler", "timestamp": "2025-01-26T01:32:26.473761"}
authentik-1       | {"auth_via": "session", "domain_url": "authentik.tld", "event": "/api/v3/flows/executor/default-provider-authorization-implicit-consent/?query=client_id%3DCLIENTID%26scope%3D%26redirect_uri%3Dhttps%253A%252F%252Fsharry.tld%252Fapi%252Fv2%252Fopen%252Fauth%252Foauth%252Fauthentik%252Fresume%26response_type%3Dcode%26state%3D2dvrKZj1HAh%2524RWv30T4fqfM8d5E6uvzTL98_bkM", "host": "authentik.tld", "level": "info", "logger": "authentik.asgi", "method": "GET", "pid": 2171634, "remote": "23.93.181.245", "request_id": "7b339c3387614dfea97ae6739f12e037", "runtime": 185, "schema_name": "public", "scheme": "https", "status": 200, "timestamp": "2025-01-26T01:32:26.499507", "user": "igor47", "user_agent": "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"}
fileshare.purr-1  | 2025.01.26 01:32:27 [io-comp...] DEBUG sharry.restserver.oauth.CodeFlow.apply:36 - Obtaining access_token for provider authentik and code 4e0a7e4f967041b2bcd30234005c6c99
fileshare.purr-1  | 2025.01.26 01:32:27 [io-comp...] TRACE sharry.restserver.oauth.CodeFlow.lreq:133 - HTTP/1.1 POST https://authentik.tld/application/o/token/ Headers(Content-Type: application/x-www-form-urlencoded; charset=UTF-8, Content-Length: 362) body="redirect_uri=https%3A%2F%2Fsharry.tld%2Fapi%2Fv2%2Fopen%2Fauth%2Foauth%2Fauthentik%2Fresume&client_id=CLIENTID&code=4e0a7e4f967041b2bcd30234005c6c99&client_secret=M2mDPiK2dBGX8WjKVJhQduPXOPSZxVDZhu9VQBYwjoXwovsCpw3TsEOsQzxLQPqqlccWA3pGe7AxZuhBJy2gc19JqzhR3C80D0gjt2PowZ0u0EpLg23zK5j98w8pwL0e&grant_type=authorization_code"
authentik-1       | {"domain_url": null, "event": "/ws/client/", "level": "info", "logger": "authentik.asgi", "pid": 2171634, "remote": "23.93.181.245", "schema_name": "public", "scheme": "ws", "timestamp": "2025-01-26T01:32:28.040991", "user_agent": "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"}
authentik-1       | {"auth_via": "oauth_client_secret", "domain_url": "authentik.tld", "event": "/application/o/token/", "host": "authentik.tld", "level": "info", "logger": "authentik.asgi", "method": "POST", "pid": 2171634, "remote": "172.20.1.1", "request_id": "bcea2d60c7894547a8c837c396b25c84", "runtime": 974, "schema_name": "public", "scheme": "https", "status": 200, "timestamp": "2025-01-26T01:32:28.119896", "user": "", "user_agent": "http4s-ember/0.23.27"}
fileshare.purr-1  | 2025.01.26 01:33:25 [io-comp...] INFO org.http4s.server.middleware.Logger - HTTP/1.1 GET /api/v2/open/info/version
fileshare.purr-1  | 2025.01.26 01:33:25 [io-comp...] INFO org.http4s.server.middleware.Logger - HTTP/1.1 200 OK
fileshare.purr-1  | 2025.01.26 01:33:27 [io-comp...] DEBUG sharry.restserver.oauth.CodeFlow.apply:36 - Obtaining access_token for provider authentik and code 4e0a7e4f967041b2bcd30234005c6c99
fileshare.purr-1  | 2025.01.26 01:33:27 [io-comp...] TRACE sharry.restserver.oauth.CodeFlow.lreq:133 - HTTP/1.1 POST https://authentik.tld/application/o/token/ Headers(Content-Type: application/x-www-form-urlencoded; charset=UTF-8, Content-Length: 362) body="redirect_uri=https%3A%2F%2Fsharry.tld%2Fapi%2Fv2%2Fopen%2Fauth%2Foauth%2Fauthentik%2Fresume&client_id=CLIENTID&code=4e0a7e4f967041b2bcd30234005c6c99&client_secret=M2mDPiK2dBGX8WjKVJhQduPXOPSZxVDZhu9VQBYwjoXwovsCpw3TsEOsQzxLQPqqlccWA3pGe7AxZuhBJy2gc19JqzhR3C80D0gjt2PowZ0u0EpLg23zK5j98w8pwL0e&grant_type=authorization_code"
authentik-1       | {"auth_via": "oauth_client_secret", "code": "4e0a7e4f967041b2bcd30234005c6c99", "domain_url": "authentik.tld", "event": "Code does not exist", "host": "authentik.tld", "level": "warning", "logger": "authentik.providers.oauth2.views.token", "pid": 2171634, "request_id": "e22efdd6236d453ea452a6a7eafe4e54", "schema_name": "public", "timestamp": "2025-01-26T01:33:27.220000"}
authentik-1       | {"auth_via": "oauth_client_secret", "domain_url": "authentik.tld", "event": "/application/o/token/", "host": "authentik.tld", "level": "info", "logger": "authentik.asgi", "method": "POST", "pid": 2171634, "remote": "172.20.1.1", "request_id": "e22efdd6236d453ea452a6a7eafe4e54", "runtime": 35, "schema_name": "public", "scheme": "https", "status": 400, "timestamp": "2025-01-26T01:33:27.221979", "user": "", "user_agent": "http4s-ember/0.23.27"}
fileshare.purr-1  | 2025.01.26 01:33:27 [io-comp...] ERROR sharry.restserver.oauth.CodeFlow.codeToToken:76 - Error obtaining access token '400' / IO(...)
fileshare.purr-1  | 2025.01.26 01:33:27 [io-comp...] TRACE sharry.restserver.oauth.CodeFlow.lres:139 - HTTP/1.1 400 Bad Request Headers(Cache-Control: no-store, Content-Type: application/json, Date: Sun, 26 Jan 2025 01:33:26 GMT, Pragma: no-cache, Referrer-Policy: same-origin, Vary: Accept-Encoding, Vary: Cookie, X-Authentik-Id: e22efdd6236d453ea452a6a7eafe4e54, X-Content-Type-Options: nosniff, X-Frame-Options: DENY, X-Powered-By: authentik, Transfer-Encoding: chunked) body=""
fileshare.purr-1  | 2025.01.26 01:33:27 [io-comp...] INFO org.http4s.server.middleware.Logger - HTTP/1.1 GET /api/v2/open/auth/oauth/authentik/resume?code=4e0a7e4f967041b2bcd30234005c6c99&state=2dvrKZj1HAh%24RWv30T4fqfM8d5E6uvzTL98_bkM
fileshare.purr-1  | 2025.01.26 01:33:27 [io-comp...] INFO org.http4s.server.middleware.Logger - HTTP/1.1 307 Temporary Redirect
fileshare.purr-1  | 2025.01.26 01:33:27 [io-comp...] INFO org.http4s.server.middleware.Logger - HTTP/1.1 GET /app/login?oauth=1
fileshare.purr-1  | 2025.01.26 01:33:27 [io-comp...] INFO org.http4s.server.middleware.Logger - HTTP/1.1 200 OK
fileshare.purr-1  | 2025.01.26 01:33:28 [io-comp...] INFO org.http4s.server.middleware.Logger - HTTP/1.1 POST /api/v2/sec/auth/session
fileshare.purr-1  | 2025.01.26 01:33:28 [io-comp...] INFO org.http4s.server.middleware.Logger - HTTP/1.1 403 Forbidden
fileshare.purr-1  | 2025.01.26 01:33:27 [io-comp...] TRACE sharry.restserver.oauth.CodeFlow.lres:139 - HTTP/1.1 200 OK Headers(Cache-Control: no-store, Content-Type: application/json, Date: Sun, 26 Jan 2025 01:32:26 GMT, Pragma: no-cache, Referrer-Policy: same-origin, Vary: Accept-Encoding, Vary: Cookie, X-Authentik-Id: bcea2d60c7894547a8c837c396b25c84, X-Content-Type-Options: nosniff, X-Frame-Options: DENY, X-Powered-By: authentik, Transfer-Encoding: chunked) body="{"access_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6ImJjYTZkN2Y0ZjVhNmY4OGEwMzZhNTdhMWY5YzFhNWU4IiwidHlwIjoiSldUIn0.eyJpc3MiOiJodHRwczovL2F1dGgubW9vbWVycy5vcmcvYXBwbGljYXRpb24vby9maWxlc2hhcmUvIiwic3ViIjoiOGY2YTIzYzA3MzMwZWY5MjQ2YTFkOWQxZGU0M2NiNTA4YmNjZDdkNDIwMTE1MDhkNjNjYTM2MWQ1Mjc3Mjk2OCIsImF1ZCI6ImVXaHdwakVFa3kzMmIxNnAwdG55VDJmOTI1MGk5RGNyR1F3ZzJzRlkiLCJleHAiOjE3Mzc4NTU0NDcsImlhdCI6MTczNzg1NTE0NywiYXV0aF90aW1lIjoxNzM3NzQyMTY1LCJhY3IiOiJnb2F1dGhlbnRpay5pby9wcm92aWRlcnMvb2F1dGgyL2RlZmF1bHQiLCJhbXIiOlsicHdkIl0sInNpZCI6ImUxZDA5MDUwOTU5OGUwYWIwYTNmNWQ2NjNmZGZiNTZiODJiOGE1MTk3YmY4NjE2N2UxZTJiZDViNzFjMzAwMjMiLCJlbWFpbCI6Imlnb3I0N0Btb29tZXJzLm9yZyIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJuYW1lIjoiSWdvciIsImdpdmVuX25hbWUiOiJJZ29yIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiaWdvcjQ3Iiwibmlja25hbWUiOiJpZ29yNDciLCJncm91cHMiOlsiVXNlcnMiXSwiYXpwIjoiZVdod3BqRUVreTMyYjE2cDB0bnlUMmY5MjUwaTlEY3JHUXdnMnNGWSIsInVpZCI6IkF3TXNXS1YzbzgxZFkyV3kwRUNGQXUwOVpaSU5IdFZNakhwbVlsemsifQ.DSNETX1ayCRfnMSCSdD8lMzUtmu34lD77rFO_DqTnyvXSut1WgnC-6lsKSUfXGyebRoxzS83JzRUIoXmxOHpNs9peY6Ddsz3i5UQ4DLVTqfLC9v22csEivnvuPKt25zEvMefYQcNFx00JQuV2E3DgtsyaOF5QrXY3l630nd0TqcKnd7Ujj5fdrmaPQXYRzEh4gjS7OVBq51ZO-A58zJdeen-WwSFJxJBm9-KEQ_H5905prdO2yJm6YHmSqLtC49uPITcIn9Phxhx0e3ICs5OCd2N4Mhv91V72_KedNcWsEvI6BNRp5nSGoBiMvYHVCg24ST9Yzel6VodNY_884BCLGYPsNlLdZr_xZQKYv_TJJ9W10XPS5PZRGcRzKY9wmZv-4IpxVmwcuPMIGQVmwyDWz_zs1MWHIO6cij5JMxn7ffZb9YXf0tZ-E26MXU2kH_8rJ3COsfhhTU6SOBF6xebAWWtWm9FNPFdblok40QYjmrbSjT8_ruvSMgfZFxTqM6lqvfi2Q4im2_xwEADai0ofw-EemidpSDWI2wJEziB9-WcR-Lb_hsfV0fZ5qphIQWurc6jRDYPCWD1t7swDQoohCKy2MQnTCOdvr7CdWDhnDwc1OT6spkMQTcXpjYees6vtZR5ThI3sKoCwtgUpKSBSITF6ZvBRYCoLKle6mXBGtI", "token_type": "Bearer", "expires_in": 300, "id_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6ImJjYTZkN2Y0ZjVhNmY4OGEwMzZhNTdhMWY5YzFhNWU4IiwidHlwIjoiSldUIn0.eyJpc3MiOiJodHRwczovL2F1dGgubW9vbWVycy5vcmcvYXBwbGljYXRpb24vby9maWxlc2hhcmUvIiwic3ViIjoiOGY2YTIzYzA3MzMwZWY5MjQ2YTFkOWQxZGU0M2NiNTA4YmNjZDdkNDIwMTE1MDhkNjNjYTM2MWQ1Mjc3Mjk2OCIsImF1ZCI6ImVXaHdwakVFa3kzMmIxNnAwdG55VDJmOTI1MGk5RGNyR1F3ZzJzRlkiLCJleHAiOjE3Mzc4NTU0NDcsImlhdCI6MTczNzg1NTE0NywiYXV0aF90aW1lIjoxNzM3NzQyMTY1LCJhY3IiOiJnb2F1dGhlbnRpay5pby9wcm92aWRlcnMvb2F1dGgyL2RlZmF1bHQiLCJhbXIiOlsicHdkIl0sInNpZCI6ImUxZDA5MDUwOTU5OGUwYWIwYTNmNWQ2NjNmZGZiNTZiODJiOGE1MTk3YmY4NjE2N2UxZTJiZDViNzFjMzAwMjMiLCJlbWFpbCI6Imlnb3I0N0Btb29tZXJzLm9yZyIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJuYW1lIjoiSWdvciIsImdpdmVuX25hbWUiOiJJZ29yIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiaWdvcjQ3Iiwibmlja25hbWUiOiJpZ29yNDciLCJncm91cHMiOlsiVXNlcnMiXX0.NoeqVb0SEpdcppkEG7BzOyXME_PCf37i3iNEgurXIctlh666SDsd6--kPXNOhIAal7y-02MDSxreaNn3Y7z1nKxhw23_Jx1KmKB5zj55rvbyF1jI4hF77L1AI-qQc7WH57Nevm9XuAE45U3cEraMGfhM9GKahHPmf3m4tFHafeXYf8495j0Kb-6OCJ5j_OoNO7DP5y1T_-ZuYTq2Cext30NguO7M839Cd5zBJFF_mXAOuDVmydpPHylubAa_s80ewYK7sbzEuGnlOiynRqk51u5FQZ6MJ61Hn-j6Ake01PG3tdOYhKdIcdNgq2F9_UQJmdbpPhis_fsBFPr9j7518kiQVPI04h1BYkfC9Tn8EhLf0p2jAUZm571xK-bLCVCGdm7AM2Jt7wSS32hLPsNCWCqUxbwl3FfR-N-AmWYJpC_6lu6XkWpSfZRoTnPhHU2PbsQ8fN_ba1EhqNHw1ndhRbD3m2QqKCMNsc7-xBAPZFivfPNIvQzB7zI5NCheHCZXkrp5bcKAbjQh3vet58S4SaK8VYEEBALDslzngVdJxD0QGg3ndQExsUKnqulMOD0f7fKgDC-ElHSPxxEG7hpnRrF-OcPTPhYRpbO-aO2Evq-VAtiDAbmdsq6bbYfK_asneODmpdh77MXHYM3ettZxUc1sZgaO9vklt4Y2ezkuuww"}{"access_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6ImJjYTZkN2Y0ZjVhNmY4OGEwMzZhNTdhMWY5YzFhNWU4IiwidHlwIjoiSldUIn0.eyJpc3MiOiJodHRwczovL2F1dGgubW9vbWVycy5vcmcvYXBwbGljYXRpb24vby9maWxlc2hhcmUvIiwic3ViIjoiOGY2YTIzYzA3MzMwZWY5MjQ2YTFkOWQxZGU0M2NiNTA4YmNjZDdkNDIwMTE1MDhkNjNjYTM2MWQ1Mjc3Mjk2OCIsImF1ZCI6ImVXaHdwakVFa3kzMmIxNnAwdG55VDJmOTI1MGk5RGNyR1F3ZzJzRlkiLCJleHAiOjE3Mzc4NTU0NDcsImlhdCI6MTczNzg1NTE0NywiYXV0aF90aW1lIjoxNzM3NzQyMTY1LCJhY3IiOiJnb2F1dGhlbnRpay5pby9wcm92aWRlcnMvb2F1dGgyL2RlZmF1bHQiLCJhbXIiOlsicHdkIl0sInNpZCI6ImUxZDA5MDUwOTU5OGUwYWIwYTNmNWQ2NjNmZGZiNTZiODJiOGE1MTk3YmY4NjE2N2UxZTJiZDViNzFjMzAwMjMiLCJlbWFpbCI6Imlnb3I0N0Btb29tZXJzLm9yZyIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJuYW1lIjoiSWdvciIsImdpdmVuX25hbWUiOiJJZ29yIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiaWdvcjQ3Iiwibmlja25hbWUiOiJpZ29yNDciLCJncm91cHMiOlsiVXNlcnMiXSwiYXpwIjoiZVdod3BqRUVreTMyYjE2cDB0bnlUMmY5MjUwaTlEY3JHUXdnMnNGWSIsInVpZCI6IkF3TXNXS1YzbzgxZFkyV3kwRUNGQXUwOVpaSU5IdFZNakhwbVlsemsifQ.DSNETX1ayCRfnMSCSdD8lMzUtmu34lD77rFO_DqTnyvXSut1WgnC-6lsKSUfXGyebRoxzS83JzRUIoXmxOHpNs9peY6Ddsz3i5UQ4DLVTqfLC9v22csEivnvuPKt25zEvMefYQcNFx00JQuV2E3DgtsyaOF5QrXY3l630nd0TqcKnd7Ujj5fdrmaPQXYRzEh4gjS7OVBq51ZO-A58zJdeen-WwSFJxJBm9-KEQ_H5905prdO2yJm6YHmSqLtC49uPITcIn9Phxhx0e3ICs5OCd2N4Mhv91V72_KedNcWsEvI6BNRp5nSGoBiMvYHVCg24ST9Yzel6VodNY_884BCLGYPsNlLdZr_xZQKYv_TJJ9W10XPS5PZRGcRzKY9wmZv-4IpxVmwcuPMIGQVmwyDWz_zs1MWHIO6cij5JMxn7ffZb9YXf0tZ-E26MXU2kH_8rJ3COsfhhTU6SOBF6xebAWWtWm9FNPFdblok40QYjmrbSjT8_ruvSMgfZFxTqM6lqvfi2Q4im2_xwEADai0ofw-EemidpSDWI2wJEziB9-WcR-Lb_hsfV0fZ5qphIQWurc6jRDYPCWD1t7swDQoohCKy2MQnTCOdvr7CdWDhnDwc1OT6spkMQTcXpjYees6vtZR5ThI3sKoCwtgUpKSBSITF6ZvBRYCoLKle6mXBGtI", "token_type": "Bearer", "expires_in": 300, "id_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6ImJjYTZkN2Y0ZjVhNmY4OGEwMzZhNTdhMWY5YzFhNWU4IiwidHlwIjoiSldUIn0.eyJpc3MiOiJodHRwczovL2F1dGgubW9vbWVycy5vcmcvYXBwbGljYXRpb24vby9maWxlc2hhcmUvIiwic3ViIjoiOGY2YTIzYzA3MzMwZWY5MjQ2YTFkOWQxZGU0M2NiNTA4YmNjZDdkNDIwMTE1MDhkNjNjYTM2MWQ1Mjc3Mjk2OCIsImF1ZCI6ImVXaHdwakVFa3kzMmIxNnAwdG55VDJmOTI1MGk5RGNyR1F3ZzJzRlkiLCJleHAiOjE3Mzc4NTU0NDcsImlhdCI6MTczNzg1NTE0NywiYXV0aF90aW1lIjoxNzM3NzQyMTY1LCJhY3IiOiJnb2F1dGhlbnRpay5pby9wcm92aWRlcnMvb2F1dGgyL2RlZmF1bHQiLCJhbXIiOlsicHdkIl0sInNpZCI6ImUxZDA5MDUwOTU5OGUwYWIwYTNmNWQ2NjNmZGZiNTZiODJiOGE1MTk3YmY4NjE2N2UxZTJiZDViNzFjMzAwMjMiLCJlbWFpbCI6Imlnb3I0N0Btb29tZXJzLm9yZyIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJuYW1lIjoiSWdvciIsImdp"
fileshare.purr-1  | 2025.01.26 01:33:28 [io-comp...] INFO org.http4s.server.middleware.Logger - HTTP/1.1 GET /api/v2/open/info/version
fileshare.purr-1  | 2025.01.26 01:33:28 [io-comp...] INFO org.http4s.server.middleware.Logger - HTTP/1.1 GET /sw.js
fileshare.purr-1  | 2025.01.26 01:33:27 [io-comp...] INFO org.http4s.server.middleware.Logger - HTTP/1.1 GET /api/v2/open/auth/oauth/authentik/resume?code=4e0a7e4f967041b2bcd30234005c6c99&state=2dvrKZj1HAh%24RWv30T4fqfM8d5E6uvzTL98_bkM
fileshare.purr-1  | 2025.01.26 01:33:28 [io-comp...] INFO org.http4s.server.middleware.Logger - HTTP/1.1 200 OK
fileshare.purr-1  | 2025.01.26 01:33:27 [io-comp...] INFO org.http4s.server.middleware.Logger - service raised an error: class java.util.concurrent.TimeoutException
fileshare.purr-1  | 2025.01.26 01:33:28 [io-comp...] INFO org.http4s.server.middleware.Logger - HTTP/1.1 200 OK
fileshare.purr-1  | 2025.01.26 01:33:27 [io-comp...] ERROR sharry.restserver.RestServer.httpServer:48 - Error processing request!
fileshare.purr-1  | java.util.concurrent.TimeoutException: 60 seconds
fileshare.purr-1  |     at timeout @ org.http4s.ember.core.Util$.timeoutMaybe(Util.scala:106)
fileshare.purr-1  |     at main$ @ sharry.restserver.Main$.main(Main.scala:12)
fileshare.purr-1  |     at timeout @ org.http4s.ember.core.Util$.timeoutMaybe(Util.scala:106)
fileshare.purr-1  |     at timeout @ org.http4s.ember.core.Util$.timeoutMaybe(Util.scala:106)
fileshare.purr-1  |

the symptom is that i get logged in (authentik thinks everything went well) and redirected to the redirect url, which never loads, just sits there spinning. what i see on that screen is the authentik UI. eventually, there seems to be a timeout which i see in the logs, and i get bounced to the shari login page with a 403 error on the session endpoint

looking at the logs, it kinda seems like sharri makes a few requests to authentik.tld and at least one of them seems to succeed? i see the app getting an access token in the logs. but there's also a request that clearly fails with an invalid code, not sure why. and another request that times out, again not sure why.

using github provider with the same client and secret but an additional redirect url has the same symptoms.

would appreciate any help debugging this!

@eikek
Copy link
Owner

eikek commented Jan 27, 2025

From the logs, I see something strange. Sharry tries to get the authorization token using the code 4e0a7e4f967041b2bcd30234005c6c99. And then authentik says, that this code doesn't exist, sharry gets a 400 (bad request) and can't continue. Authentik also says in the beginning "No scopes requested, defaulting to all configured scopes". Perhaps you could try setting the scope= setting? It seems to be empty in your config. You could try with scope = "openid".

@igor47
Copy link
Author

igor47 commented Jan 27, 2025

i think this is a second request. i tried setting the scope but that wasn't the problem. the problem is that sharry seems to request the token endpoint twice. the first time, authentik replies with the code, but sharry ignores it. there's no record of it in the sharry logs. maybe this is the request that times out? but my reverse proxy shows that it succeeded. sharry also requests the token endpoint again, and gets a 400 that time because the code can only be exchanged once. here's another version of the logs, including my reverse proxy logs

01 authentik-1       | {"event":"updating brand certificates","level":"info","logger":"authentik.router.brand_tls","timestamp":"2025-01-27T20:51:35Z"}
02 fileshare.purr-1  | 2025.01.27 20:52:05:0000 [io-comp...] [INFO ] org.http4s.server.middleware.Logger - HTTP/1.1 GET /
03 fileshare.purr-1  | 2025.01.27 20:52:05:0001 [io-comp...] [INFO ] org.http4s.server.middleware.Logger - HTTP/1.1 303 See Other
04 traefik.purr-1    | {"DownstreamContentSize":0,"DownstreamStatus":303,"Duration":25167980,"OriginContentSize":0,"OriginDuration":25125799,"OriginStatus":303,"Overhead":42181,"RequestContentSize":0,"RequestCount":203874,"RequestMethod":"GET","RequestPath":"/","RequestPort":"-","RequestProtocol":"HTTP/2.0","RequestScheme":"https","RetryAttempts":0,"RouterName":"fileshare@docker","ServiceName":"fileshare@docker","StartLocal":"2025-01-27T20:52:05.849501085Z","StartUTC":"2025-01-27T20:52:05.849501085Z","TLSCipher":"TLS_CHACHA20_POLY1305_SHA256","TLSVersion":"1.3","downstream_Content-Type":"","entryPointName":"https","level":"info","msg":"","origin_Content-Type":"","request_User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0","time":"2025-01-27T20:52:05Z"}
05 fileshare.purr-1  | 2025.01.27 20:52:06:0000 [io-comp...] [INFO ] sharry.restserver.webapp.TemplateRoutes.loadTemplate:110 - Compiled template jar:file:/opt/sharry-restserver-1.14.0/lib/com.github.eikek.sharry-restserver-1.14.0.jar!/index.html
06 fileshare.purr-1  | 2025.01.27 20:52:06:0001 [io-comp...] [INFO ] sharry.restserver.webapp.TemplateRoutes.default:183 - Use default head section for main template
07 fileshare.purr-1  | 2025.01.27 20:52:06:0002 [io-comp...] [INFO ] org.http4s.server.middleware.Logger - HTTP/1.1 GET /app
08 fileshare.purr-1  | 2025.01.27 20:52:06:0003 [io-comp...] [INFO ] org.http4s.server.middleware.Logger - HTTP/1.1 200 OK
09 traefik.purr-1    | {"DownstreamContentSize":3580,"DownstreamStatus":200,"Duration":122802004,"OriginContentSize":3580,"OriginDuration":122759653,"OriginStatus":200,"Overhead":42351,"RequestContentSize":0,"RequestCount":203877,"RequestMethod":"GET","RequestPath":"/app","RequestPort":"-","RequestProtocol":"HTTP/2.0","RequestScheme":"https","RetryAttempts":0,"RouterName":"fileshare@docker","ServiceName":"fileshare@docker","StartLocal":"2025-01-27T20:52:05.976896905Z","StartUTC":"2025-01-27T20:52:05.976896905Z","TLSCipher":"TLS_CHACHA20_POLY1305_SHA256","TLSVersion":"1.3","downstream_Content-Type":"text/html; charset=UTF-8","entryPointName":"https","level":"info","msg":"","origin_Content-Type":"text/html; charset=UTF-8","request_User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0","time":"2025-01-27T20:52:06Z"}
10 fileshare.purr-1  | 2025.01.27 20:52:05:0002 [io-comp...] [INFO ] org.http4s.server.middleware.Logger - HTTP/1.1 GET /api/v2/open/info/version
11 fileshare.purr-1  | 2025.01.27 20:52:05:0003 [io-comp...] [INFO ] org.http4s.server.middleware.Logger - HTTP/1.1 200 OK
12 traefik.purr-1    | {"DownstreamContentSize":174,"DownstreamStatus":200,"Duration":6790147,"OriginContentSize":174,"OriginDuration":6705641,"OriginStatus":200,"Overhead":84506,"RequestContentSize":0,"RequestCount":203880,"RequestMethod":"GET","RequestPath":"/api/v2/open/info/version","RequestPort":"-","RequestProtocol":"HTTP/2.0","RequestScheme":"https","RetryAttempts":0,"RouterName":"fileshare@docker","ServiceName":"fileshare@docker","StartLocal":"2025-01-27T20:52:06.517562248Z","StartUTC":"2025-01-27T20:52:06.517562248Z","TLSCipher":"TLS_CHACHA20_POLY1305_SHA256","TLSVersion":"1.3","downstream_Content-Type":"application/json","entryPointName":"https","level":"info","msg":"","origin_Content-Type":"application/json","request_User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0","time":"2025-01-27T20:52:06Z"}
13 fileshare.purr-1  | 2025.01.27 20:52:05:0004 [io-comp...] [INFO ] org.http4s.server.middleware.Logger - HTTP/1.1 GET /app/login?r=/app/home
14 fileshare.purr-1  | 2025.01.27 20:52:05:0005 [io-comp...] [INFO ] org.http4s.server.middleware.Logger - HTTP/1.1 200 OK
15 authentik-1       | {"action": "authorize_application", "auth_via": "session", "context": {"authorized_application": {"app": "authentik_core", "model_name": "application", "name": "File Share"}, "http_request": {"method": "GET", "path": "/application/o/authorize/", "request_id": "fcbfc0028c524629aa8099d94de5c623", "user_agent": "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"}, "scopes": "openid email profile"}, "event": "Created Event", "level": "info", "logger": "authentik.events.models", "pid": 60, "request_id": "fcbfc0028c524629aa8099d94de5c623", "schema_name": "public", "timestamp": "2025-01-27T20:52:07.764737"}
16 authentik-1       | {"auth_via": "session", "event": "Task published", "level": "info", "logger": "authentik.root.celery", "pid": 60, "request_id": "fcbfc0028c524629aa8099d94de5c623", "schema_name": "public", "task_id": "92d3347b2f91462e908927451c35f9e6", "task_name": "authentik.events.tasks.event_notification_handler", "timestamp": "2025-01-27T20:52:07.838877"}
17 authentik-1       | {"auth_via": "session", "event": "/application/o/authorize/", "level": "info", "logger": "authentik.asgi", "method": "GET", "pid": 60, "request_id": "fcbfc0028c524629aa8099d94de5c623", "runtime": 197, "schema_name": "public", "scheme": "https", "status": 302, "timestamp": "2025-01-27T20:52:07.860641", "user_agent": "Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0"}
18 traefik.purr-1    | {"DownstreamContentSize":23,"DownstreamStatus":302,"Duration":244569236,"OriginContentSize":23,"OriginDuration":244522285,"OriginStatus":302,"Overhead":46951,"RequestContentSize":0,"RequestCount":203889,"RequestMethod":"GET","RequestPath":"/application/o/authorize/","RequestPort":"-","RequestProtocol":"HTTP/2.0","RequestScheme":"https","RetryAttempts":0,"RouterName":"authentik@docker","ServiceName":"authentik@docker","StartLocal":"2025-01-27T20:52:07.618392548Z","StartUTC":"2025-01-27T20:52:07.618392548Z","TLSCipher":"TLS_CHACHA20_POLY1305_SHA256","TLSVersion":"1.3","downstream_Content-Type":"text/html; charset=utf-8","entryPointName":"https","level":"info","msg":"","origin_Content-Type":"text/html; charset=utf-8","request_User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0","time":"2025-01-27T20:52:07Z"}
19 fileshare.purr-1  | 2025.01.27 20:52:08:0000 [io-comp...] [INFO ] org.http4s.server.middleware.Logger - HTTP/1.1 GET /sw.js
20 fileshare.purr-1  | 2025.01.27 20:52:08:0001 [io-comp...] [INFO ] org.http4s.server.middleware.Logger - HTTP/1.1 200 OK
21 traefik.purr-1    | {"DownstreamContentSize":1279,"DownstreamStatus":200,"Duration":7323912,"OriginContentSize":1279,"OriginDuration":7288464,"OriginStatus":200,"Overhead":35448,"RequestContentSize":0,"RequestCount":203894,"RequestMethod":"GET","RequestPath":"/sw.js","RequestPort":"-","RequestProtocol":"HTTP/2.0","RequestScheme":"https","RetryAttempts":0,"RouterName":"fileshare@docker","ServiceName":"fileshare@docker","StartLocal":"2025-01-27T20:52:08.047517126Z","StartUTC":"2025-01-27T20:52:08.047517126Z","TLSCipher":"TLS_CHACHA20_POLY1305_SHA256","TLSVersion":"1.3","downstream_Content-Type":"application/javascript; charset=UTF-8","entryPointName":"https","level":"info","msg":"","origin_Content-Type":"application/javascript; charset=UTF-8","request_User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0","time":"2025-01-27T20:52:08Z"}
22 authentik-1       | {"auth_via": "oauth_client_secret", "event": "/application/o/token/", "level": "info", "logger": "authentik.asgi", "method": "POST", "pid": 60, "runtime": 957, "schema_name": "public", "scheme": "https", "status": 200, "timestamp": "2025-01-27T20:52:09.414721", "user_agent": "http4s-ember/0.23.27"}
23 traefik.purr-1    | {"DownstreamContentSize":3168,"DownstreamStatus":200,"Duration":989288111,"OriginContentSize":3168,"OriginDuration":989254893,"OriginStatus":200,"Overhead":33218,"RequestContentSize":362,"RequestCount":203897,"RequestMethod":"POST","RequestPath":"/application/o/token/","RequestPort":"-","RequestProtocol":"HTTP/1.1","RequestScheme":"https","RetryAttempts":0,"RouterName":"authentik@docker","ServiceName":"authentik@docker","StartLocal":"2025-01-27T20:52:08.426923733Z","StartUTC":"2025-01-27T20:52:08.426923733Z","TLSCipher":"TLS_CHACHA20_POLY1305_SHA256","TLSVersion":"1.3","downstream_Content-Type":"application/json","entryPointName":"https","level":"info","msg":"","origin_Content-Type":"application/json","request_Content-Type":"application/x-www-form-urlencoded; charset=UTF-8","request_User-Agent":"http4s-ember/0.23.27","time":"2025-01-27T20:52:09Z"}

25 authentik-1       | {"event":"updating brand certificates","level":"info","logger":"authentik.router.brand_tls","timestamp":"2025-01-27T20:52:12Z"}
26 fileshare.purr-1  | 2025.01.27 20:52:43:0000 [io-comp...] [INFO ] org.http4s.server.middleware.Logger - HTTP/1.1 GET /api/v2/open/info/version
27 fileshare.purr-1  | 2025.01.27 20:52:43:0001 [io-comp...] [INFO ] org.http4s.server.middleware.Logger - HTTP/1.1 200 OK
28 authentik-1       | {"auth_via": "oauth_client_secret", "code": "01ce1837e7934e0db50c3961e3b80e1c", "event": "Code does not exist", "level": "warning", "logger": "authentik.providers.oauth2.views.token", "pid": 22920, "schema_name": "public", "timestamp": "2025-01-27T20:53:08.563756"}
29 authentik-1       | {"auth_via": "oauth_client_secret", "event": "/application/o/token/", "level": "info", "logger": "authentik.asgi", "method": "POST", "pid": 22920, "runtime": 29, "schema_name": "public", "scheme": "https", "status": 400, "timestamp": "2025-01-27T20:53:08.566338", "user_agent": "http4s-ember/0.23.27"}
30 traefik.purr-1    | {"DownstreamContentSize":232,"DownstreamStatus":400,"Duration":72102419,"OriginContentSize":232,"OriginDuration":72056198,"OriginStatus":400,"Overhead":46221,"RequestContentSize":362,"RequestCount":204162,"RequestMethod":"POST","RequestPath":"/application/o/token/","RequestPort":"-","RequestProtocol":"HTTP/1.1","RequestScheme":"https","RetryAttempts":0,"RouterName":"authentik@docker","ServiceName":"authentik@docker","StartLocal":"2025-01-27T20:53:08.496511778Z","StartUTC":"2025-01-27T20:53:08.496511778Z","TLSCipher":"TLS_CHACHA20_POLY1305_SHA256","TLSVersion":"1.3","downstream_Content-Type":"application/json","entryPointName":"https","level":"info","msg":"","origin_Content-Type":"application/json","request_Content-Type":"application/x-www-form-urlencoded; charset=UTF-8","request_User-Agent":"http4s-ember/0.23.27","time":"2025-01-27T20:53:08Z"}
31 fileshare.purr-1  | 2025.01.27 20:53:08:0000 [io-comp...] [ERROR] sharry.restserver.oauth.CodeFlow.codeToToken:76 - Error obtaining access token '400' / IO(...)
32 fileshare.purr-1  | 2025.01.27 20:53:08:0001 [io-comp...] [INFO ] org.http4s.server.middleware.Logger - HTTP/1.1 GET /api/v2/open/auth/oauth/
33 fileshare.purr-1  | 2025.01.27 20:53:08:0002 [io-comp...] [INFO ] org.http4s.server.middleware.Logger - HTTP/1.1 307 Temporary Redirect
34 traefik.purr-1    | {"DownstreamContentSize":0,"DownstreamStatus":307,"Duration":252325505,"OriginContentSize":0,"OriginDuration":252285699,"OriginStatus":307,"Overhead":39806,"RequestContentSize":0,"RequestCount":204161,"RequestMethod":"GET","RequestPath":"/api/v2/open/auth/oauth/resume","RequestPort":"-","RequestProtocol":"HTTP/2.0","RequestScheme":"https","RetryAttempts":0,"RouterName":"fileshare@docker","ServiceName":"fileshare@docker","StartLocal":"2025-01-27T20:53:08.375219546Z","StartUTC":"2025-01-27T20:53:08.375219546Z","TLSCipher":"TLS_CHACHA20_POLY1305_SHA256","TLSVersion":"1.3","downstream_Content-Type":"","entryPointName":"https","level":"info","msg":"","origin_Content-Type":"","request_User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0","time":"2025-01-27T20:53:08Z"}
35 fileshare.purr-1  | 2025.01.27 20:53:08:0000 [io-comp...] [INFO ] org.http4s.server.middleware.Logger - HTTP/1.1 GET /app/login?oauth=1
36 fileshare.purr-1  | 2025.01.27 20:53:08:0001 [io-comp...] [INFO ] org.http4s.server.middleware.Logger - HTTP/1.1 200 OK
37 fileshare.purr-1  | 2025.01.27 20:53:09:0000 [io-comp...] [INFO ] org.http4s.server.middleware.Logger - HTTP/1.1 GET /

you can see on line 17 & 18, authentik replies with a 302, presumably to the /resume endpoint. on lines 22 & 23, there's a successful request to token -- presumably authentik replies with the token, but sharry does not log this. then, on line 29/30, there's a second request to token and this one has a 400. this second request is a minute after the first request. what is sharry doing during that minute?

@eikek
Copy link
Owner

eikek commented Jan 28, 2025

Thank you for the detailed logs! yeah this sounds strange. I'll try to set it up on my end when I find the time. I tested it soem time ago, always without a reverse proxy

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants