Initial commit
This commit is contained in:
commit
bd4d1ae126
|
@ -0,0 +1,19 @@
|
|||
# OAuth2 authentication mechanism for INN2/nnrpd #
|
||||
|
||||
## Keycloak setup ##
|
||||
|
||||
Create a new client, type openid-connect
|
||||
|
||||
- Standard flow, implicit flow enabled: off
|
||||
- Direct access grants: on
|
||||
- Access type: confidential
|
||||
|
||||
Insert details into script:
|
||||
- client_id: the client ID you created
|
||||
- client_secret: from credentials tab in keycloak
|
||||
- token_url: https://<yourinstance.tld>/auth/realms/<your-realm>/protocol/openid-connect/token
|
||||
|
||||
## Install to INN2 ##
|
||||
Ensure requirements are installed.
|
||||
|
||||
Copy nnrpd_oauth.py to _pathbin_/auth/passwd/
|
|
@ -0,0 +1,40 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
# OAuth2 (OpenID Connect / Keycloak) authentication mechanism for INN2/nnrpd.
|
||||
|
||||
import sys
|
||||
from oauthlib.oauth2 import LegacyApplicationClient
|
||||
from requests_oauthlib import OAuth2Session
|
||||
|
||||
CLIENT_AUTHNAME = "ClientAuthname: "
|
||||
CLIENT_PASSWORD = "ClientPassword: "
|
||||
|
||||
client_id = ""
|
||||
client_secret = ""
|
||||
token_url = ""
|
||||
|
||||
username = None
|
||||
password = None
|
||||
|
||||
while username is None or password is None:
|
||||
line = sys.stdin.readline()
|
||||
while len(line) > 0 and line[-1] in "\r\n":
|
||||
line = line[:-1]
|
||||
if line[0:len(CLIENT_AUTHNAME)] == CLIENT_AUTHNAME:
|
||||
username = line[len(CLIENT_AUTHNAME):]
|
||||
elif line[0:len(CLIENT_PASSWORD)] == CLIENT_PASSWORD:
|
||||
password = line[len(CLIENT_PASSWORD):]
|
||||
|
||||
try:
|
||||
oauth = OAuth2Session(client=LegacyApplicationClient(client_id=client_id))
|
||||
token = oauth.fetch_token(token_url=token_url,
|
||||
username=username,
|
||||
password=password,
|
||||
client_id=client_id,
|
||||
client_secret=client_secret)
|
||||
# Success!
|
||||
sys.stdout.write(f"User:{username}@lain.faith\r\n")
|
||||
sys.exit(0)
|
||||
except:
|
||||
# Auth error
|
||||
sys.exit(1)
|
|
@ -0,0 +1 @@
|
|||
requests-oauthlib
|
Loading…
Reference in New Issue