Skip to content

Instantly share code, notes, and snippets.

@doino-gretchenliev
Last active May 31, 2024 04:31
Show Gist options
  • Save doino-gretchenliev/d9faf0bf1bbad8919764cd1fbf8d2c64 to your computer and use it in GitHub Desktop.
Save doino-gretchenliev/d9faf0bf1bbad8919764cd1fbf8d2c64 to your computer and use it in GitHub Desktop.
Home Assistant RADIUS authentication #home-assistant #homeassistant #radius #authentication #python
homeassistant:
auth_providers:
- type: command_line
command: "/config/auth/radius-auth.sh"
meta: true
#!/usr/bin/env python
import os
import radius
radius_client = radius.Radius('secret',
host='127.0.0.1',
port=1883)
def main():
username = os.environ['username']
password = os.environ['password']
try:
print("# Trying authentication for user [{}]".format(username))
result = radius_client.authenticate(username, password)
except:
print("# Error during authentication!")
exit(1)
if result:
print("name = {}".format(username.capitalize()))
print("# User [{}] successfully authenticated!".format(username))
exit(0)
else:
print("# Authentication failed for user [{}].".format(username))
exit(1)
if __name__ == "__main__":
main()
#!/usr/bin/env bash
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
python $SCRIPT_DIR/home-assistant-radius-auth.py
-e git+git://github.com/btimby/py-radius.git@6c277f89207dd877e930d69fa59681b2279ffbac#egg=radius
@doino-gretchenliev
Copy link
Author

Install the requirements: pip install -r requirements.txt.

@sdebruyn
Copy link

How can I setup hassio to do this on startup? I'm using it in a Docker container so it has to be reinstalled when the container restarts

@doino-gretchenliev
Copy link
Author

You should plug in somewhere at the entry point script or prepare your image.

@Buster14
Copy link

Buster14 commented May 11, 2022

Hi, i'm trying to differentiate HA trigger between A, P, S and D / H status in Hotspot > Hosts status.
The reason for this is that there's some clients that only connects and not logged in to my hotspot server, and that messes up the automation. My AP is unifi and my radius server and hotspot server is mikrotik. Currently using unifi counter as trigger but of course i'm getting alot of false positive trigger due to above issue

Can this be done with your script?
How would i create a sensor then?

@k-brok
Copy link

k-brok commented Sep 28, 2022

Hi, I tried to install your scripts.

I'm running HA os on ODROID. At first I installed python3.
I installed radius with pip command (not with the requirement file).

However when I try to login, I get a ivalid username error.
In HA log I see a Permission denied error on the radius-auth-sh file.

What can I do to fix this?

@cmos486
Copy link

cmos486 commented Oct 14, 2022

Is there any way for users not to be administrators?

@doino-gretchenliev
Copy link
Author

Is there any way for users not to be administrators?

It's an authentication script. Probably you can attach roles to users afterwards.

@saya6k
Copy link

saya6k commented Sep 2, 2023

Hi, do you have any plan to make this as custom component in HACS? It would be much easier to install requirements and use your awesome code :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment