Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
protokollsystem
proto3
Commits
5b939d7e
Commit
5b939d7e
authored
Feb 17, 2018
by
Robin Sonnabend
Browse files
Add PAM auth backend
parent
6beb3489
Changes
1
Hide whitespace changes
Inline
Side-by-side
auth.py
View file @
5b939d7e
...
@@ -3,6 +3,7 @@ import ssl
...
@@ -3,6 +3,7 @@ import ssl
import
ldap3
import
ldap3
from
ldap3.utils.dn
import
parse_dn
from
ldap3.utils.dn
import
parse_dn
from
datetime
import
datetime
from
datetime
import
datetime
import
grp
,
pwd
,
pam
class
User
:
class
User
:
def
__init__
(
self
,
username
,
groups
,
timestamp
=
None
,
obsolete
=
False
,
permanent
=
False
):
def
__init__
(
self
,
username
,
groups
,
timestamp
=
None
,
obsolete
=
False
,
permanent
=
False
):
...
@@ -137,7 +138,7 @@ class ADManager:
...
@@ -137,7 +138,7 @@ class ADManager:
class
StaticUserManager
:
class
StaticUserManager
:
def
__init__
(
self
,
users
):
def
__init__
(
self
,
users
,
obsolete
=
False
):
self
.
passwords
=
{
self
.
passwords
=
{
username
:
password
username
:
password
for
(
username
,
password
,
groups
)
in
users
for
(
username
,
password
,
groups
)
in
users
...
@@ -146,6 +147,7 @@ class StaticUserManager:
...
@@ -146,6 +147,7 @@ class StaticUserManager:
username
:
groups
username
:
groups
for
(
username
,
password
,
groups
)
in
users
for
(
username
,
password
,
groups
)
in
users
}
}
self
.
obsolete
=
obsolete
def
authenticate
(
self
,
username
,
password
):
def
authenticate
(
self
,
username
,
password
):
return
(
username
in
self
.
passwords
return
(
username
in
self
.
passwords
...
@@ -156,8 +158,27 @@ class StaticUserManager:
...
@@ -156,8 +158,27 @@ class StaticUserManager:
yield
from
self
.
groups
[
username
]
yield
from
self
.
groups
[
username
]
def
all_groups
(
self
):
def
all_groups
(
self
):
return
list
(
set
(
group
for
group
in
groups
.
values
()))
yield
from
list
(
set
(
group
for
group
in
groups
.
values
()))
class
PAMManager
:
def
__init__
(
self
,
obsolete
=
False
):
self
.
pam
=
pam
.
pam
()
self
.
obsolete
=
obsolete
def
authenticate
(
self
,
username
,
password
):
return
self
.
pam
.
authenticate
(
username
,
password
)
def
groups
(
self
,
username
,
password
=
None
):
print
(
username
)
yield
grp
.
getgrgid
(
pwd
.
getpwnam
(
username
).
pw_gid
).
gr_name
for
group
in
grp
.
getgrall
():
if
username
in
group
.
gr_mem
:
yield
group
.
gr_name
def
all_groups
(
self
):
for
group
in
grp
.
getgrall
():
yield
group
.
gr_name
class
SecurityManager
:
class
SecurityManager
:
def
__init__
(
self
,
key
,
max_duration
=
300
):
def
__init__
(
self
,
key
,
max_duration
=
300
):
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment