script to use authelias basic auth #17
|
@ -508,6 +508,7 @@
|
||||||
- reboot_required.py
|
- reboot_required.py
|
||||||
- update_omzsh.sh
|
- update_omzsh.sh
|
||||||
- matrixmsg.py
|
- matrixmsg.py
|
||||||
|
- authelia-auth.py
|
||||||
tags:
|
tags:
|
||||||
- common-scripts
|
- common-scripts
|
||||||
- update_omzsh
|
- update_omzsh
|
||||||
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import requests
|
||||||
|
import argparse
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
authelia_url = "https://{{ authelia_api_url }}/api/verify"
|
||||||
|
|
||||||
|
def make_headers(domain):
|
||||||
|
return {
|
||||||
|
#"X-Real-IP": ip,
|
||||||
|
#"X-Forwarded-For": ip,
|
||||||
|
"X-Original-URL": f"https://{domain}/",
|
||||||
|
"X-Forwarded-Method": "GET",
|
||||||
|
"X-Forwarded-Proto": "https",
|
||||||
|
"X-Forwarded-Host": domain,
|
||||||
|
"X-Forwarded-Uri": "/",
|
||||||
|
"X-Forwarded-Ssl": "on",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def auth(domain, username, password):
|
||||||
|
r = requests.get(
|
||||||
|
authelia_url,
|
||||||
|
params={'auth': 'basic'},
|
||||||
|
headers=make_headers(domain),
|
||||||
|
auth=(username, password)
|
||||||
|
)
|
||||||
|
return r.status_code == 200
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument("domain", help="which rule in authelia to auth against")
|
||||||
|
parser.add_argument("--username", help="overrides env var with the same name")
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
try:
|
||||||
|
if not args.username:
|
||||||
|
username = os.environ['username']
|
||||||
|
else:
|
||||||
|
username = args.username
|
||||||
|
password = os.environ['password']
|
||||||
|
except KeyError:
|
||||||
|
print("missing env var(s)")
|
||||||
|
sys.exit(2)
|
||||||
|
|
||||||
|
if auth(args.domain, username, password):
|
||||||
|
sys.exit(0)
|
||||||
|
else:
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
Loading…
Reference in New Issue