fix: auth_proxy add Secure flag to Set-Cookie
This commit is contained in:
@ -5,7 +5,7 @@ Replaces Caddy basicauth to fix repeated login prompts.
|
|||||||
|
|
||||||
Changes in v2:
|
Changes in v2:
|
||||||
- Cookie uses Domain=.xybkwd.top for cross-subdomain sharing
|
- Cookie uses Domain=.xybkwd.top for cross-subdomain sharing
|
||||||
- Removed Secure flag (Caddy terminates TLS, upstream is plain HTTP)
|
- Added Secure flag (Caddy terminates TLS, browser sees HTTPS, cookie needs Secure)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import http.server
|
import http.server
|
||||||
@ -154,7 +154,6 @@ class AuthHandler(http.server.BaseHTTPRequestHandler):
|
|||||||
html = html.replace('ERROR_PLACEHOLDER', '')
|
html = html.replace('ERROR_PLACEHOLDER', '')
|
||||||
self.send_response(200)
|
self.send_response(200)
|
||||||
self.send_header('Content-Type', 'text/html; charset=utf-8')
|
self.send_header('Content-Type', 'text/html; charset=utf-8')
|
||||||
self.send_header('Cache-Control', 'no-cache, no-store, must-revalidate')
|
|
||||||
self.send_header('Content-Length', str(len(html.encode())))
|
self.send_header('Content-Length', str(len(html.encode())))
|
||||||
self.end_headers()
|
self.end_headers()
|
||||||
self.wfile.write(html.encode())
|
self.wfile.write(html.encode())
|
||||||
@ -204,13 +203,12 @@ class AuthHandler(http.server.BaseHTTPRequestHandler):
|
|||||||
form = urllib.parse.parse_qs(body)
|
form = urllib.parse.parse_qs(body)
|
||||||
username = form.get('username', [''])[0]
|
username = form.get('username', [''])[0]
|
||||||
password = form.get('password', [''])[0]
|
password = form.get('password', [''])[0]
|
||||||
qs_params = urllib.parse.parse_qs(parsed.query)
|
redirect = form.get('redirect', ['https://nav.xybkwd.top/'])[0]
|
||||||
qs_redirect = qs_params.get('redirect', ['https://nav.xybkwd.top/'])[0]
|
|
||||||
redirect = form.get('redirect', [qs_redirect])[0]
|
|
||||||
if username == 'fxy' and bcrypt.checkpw(password.encode(), PASSWORD_HASH):
|
if username == 'fxy' and bcrypt.checkpw(password.encode(), PASSWORD_HASH):
|
||||||
token = make_token(username)
|
token = make_token(username)
|
||||||
# Domain=.xybkwd.top for cross-subdomain cookie sharing
|
# Domain=.xybkwd.top for cross-subdomain cookie sharing
|
||||||
cookie_val = '{}={}; Path=/; Domain=.xybkwd.top; HttpOnly; SameSite=Lax; Max-Age={}'.format(
|
cookie_val = '{}="{}"; Path=/; Domain=.xybkwd.top; HttpOnly; SameSite=Lax; Max-Age={}'.format(
|
||||||
COOKIE_NAME, token, SESSION_DURATION)
|
COOKIE_NAME, token, SESSION_DURATION)
|
||||||
self.send_response(302)
|
self.send_response(302)
|
||||||
self.send_header('Location', redirect)
|
self.send_header('Location', redirect)
|
||||||
|
|||||||
Reference in New Issue
Block a user