Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
ssoauth
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Container registry
Model registry
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
django
ssoauth
Commits
9152c524
Commit
9152c524
authored
6 years ago
by
Art
Browse files
Options
Downloads
Patches
Plain Diff
Replace some assertions (those which shouldn't be assertions) with proper exceptions
parent
2ecf0c83
No related branches found
No related tags found
No related merge requests found
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
ssoauth/__init__.py
+1
-1
1 addition, 1 deletion
ssoauth/__init__.py
ssoauth/auth_utils.py
+8
-7
8 additions, 7 deletions
ssoauth/auth_utils.py
ssoauth/sso_utils.py
+9
-4
9 additions, 4 deletions
ssoauth/sso_utils.py
with
18 additions
and
12 deletions
ssoauth/__init__.py
+
1
−
1
View file @
9152c524
import
logging
import
logging
from
.
import
checks
# As for Django 1.11 it still doesn't auto-import checks >.<
from
.
import
checks
# As for Django 1.11 it still doesn't auto-import checks >.<
assert
checks
assert
checks
# must be imported
logger
=
logging
.
getLogger
(
"
ssoauth
"
)
logger
=
logging
.
getLogger
(
"
ssoauth
"
)
...
...
This diff is collapsed.
Click to expand it.
ssoauth/auth_utils.py
+
8
−
7
View file @
9152c524
...
@@ -11,8 +11,10 @@ import importlib
...
@@ -11,8 +11,10 @@ import importlib
def
_validate_username
(
username
):
def
_validate_username
(
username
):
assert
isinstance
(
username
,
str
)
if
not
isinstance
(
username
,
str
):
assert
username
==
username
.
lower
()
# because .islower() returns False when no letters present
raise
TypeError
if
not
username
==
username
.
lower
():
# weird check because .islower() returns False when no letters present
raise
ValueError
(
"
Username must be lowere case
"
)
def
get_user
(
uuid
=
None
,
username
=
None
):
def
get_user
(
uuid
=
None
,
username
=
None
):
...
@@ -70,10 +72,10 @@ def get_or_create_user(uuid, username):
...
@@ -70,10 +72,10 @@ def get_or_create_user(uuid, username):
logger
.
info
(
"
Created user: {username} {uuid}
"
.
format
(
**
locals
()))
logger
.
info
(
"
Created user: {username} {uuid}
"
.
format
(
**
locals
()))
return
user
return
user
#
checks and casts
#
prepare
if
isinstance
(
uuid
,
str
):
if
isinstance
(
uuid
,
str
):
uuid
=
UUID
(
uuid
)
uuid
=
UUID
(
uuid
)
assert
isinstance
(
uuid
,
UUID
)
and
isinstance
(
username
,
str
)
,
"
Bad arguments
"
assert
isinstance
(
uuid
,
UUID
)
and
isinstance
(
username
,
str
)
username
=
username
.
lower
()
username
=
username
.
lower
()
# get or create
# get or create
user
=
get_user_by_uuid
(
uuid
,
username
)
# best case scenario
user
=
get_user_by_uuid
(
uuid
,
username
)
# best case scenario
...
@@ -109,12 +111,11 @@ def set_user_groups(user, saml2_groups):
...
@@ -109,12 +111,11 @@ def set_user_groups(user, saml2_groups):
raise
ImportError
(
"
Could not import {r}. {e.__class__.__name__}: {e}
"
.
format
(
r
=
app_settings
.
GROUP_RESOLVER
,
e
=
e
))
raise
ImportError
(
"
Could not import {r}. {e.__class__.__name__}: {e}
"
.
format
(
r
=
app_settings
.
GROUP_RESOLVER
,
e
=
e
))
# resolve the groups
# resolve the groups
groups
=
resolver_method
(
user
,
saml2_groups
)
groups
=
resolver_method
(
user
,
saml2_groups
)
assert
isinstance
(
groups
,
(
list
,
tuple
,
set
,))
and
all
(
isinstance
(
g
,
Group
)
for
g
in
groups
),
\
assert
isinstance
(
groups
,
(
list
,
tuple
,
set
,))
and
all
(
isinstance
(
g
,
Group
)
for
g
in
groups
)
"
{r} instead of a list/tuple/set of Group objects returned: {garbage}
"
.
format
(
r
=
app_settings
.
GROUP_RESOLVER
,
garbage
=
groups
)
# update user groups
# update user groups
if
set
(
user
.
groups
.
all
())
!=
set
(
groups
):
if
set
(
user
.
groups
.
all
())
!=
set
(
groups
):
user
.
groups
.
set
(
groups
)
user
.
groups
.
set
(
groups
)
assert
set
(
user
.
groups
.
all
())
==
set
(
groups
)
# dunno how relation.set() behaves, better safe than sorry
assert
set
(
user
.
groups
.
all
())
==
set
(
groups
)
logger
.
info
(
"
Groups for {user} were updated.
"
.
format
(
user
=
user
))
logger
.
info
(
"
Groups for {user} were updated.
"
.
format
(
user
=
user
))
# done
# done
logger
.
info
(
"
User {user} is member of: {groups}
"
.
format
(
user
=
user
,
groups
=
set
(
str
(
g
)
for
g
in
groups
)))
logger
.
info
(
"
User {user} is member of: {groups}
"
.
format
(
user
=
user
,
groups
=
set
(
str
(
g
)
for
g
in
groups
)))
...
...
This diff is collapsed.
Click to expand it.
ssoauth/sso_utils.py
+
9
−
4
View file @
9152c524
...
@@ -58,8 +58,11 @@ def get_idp_runtime_info(meta_url):
...
@@ -58,8 +58,11 @@ def get_idp_runtime_info(meta_url):
logger
.
debug
(
"
From the IDP metadata received {s} signing certs, {e} encryption certs, {sso} SSO bindings, {slo} SLO bindings.
"
.
format
(
logger
.
debug
(
"
From the IDP metadata received {s} signing certs, {e} encryption certs, {sso} SSO bindings, {slo} SLO bindings.
"
.
format
(
s
=
len
(
signing
),
e
=
len
(
encryption
),
sso
=
len
(
bindings_sso_redirect
),
slo
=
len
(
bindings_slo_redirect
),
s
=
len
(
signing
),
e
=
len
(
encryption
),
sso
=
len
(
bindings_sso_redirect
),
slo
=
len
(
bindings_slo_redirect
),
))
))
assert
signing
and
encryption
,
"
Could not find certificates in IDP meta.
"
if
not
(
signing
and
encryption
):
assert
bindings_sso_redirect
is
not
None
,
"
Could not find SSO HTTP-Redirect binding.
"
raise
RuntimeError
(
"
Could not find certificates in IDP meta.
"
)
if
bindings_sso_redirect
is
None
:
raise
RuntimeError
(
"
Could not find SSO HTTP-Redirect binding.
"
)
# pack the received data
# pack the received data
return
{
return
{
"
certificates
"
:
{
"
certificates
"
:
{
...
@@ -78,14 +81,16 @@ def create_onelogin_settings(template=app_settings.ONELOGIN_SETTINGS_TEMPLATE):
...
@@ -78,14 +81,16 @@ def create_onelogin_settings(template=app_settings.ONELOGIN_SETTINGS_TEMPLATE):
# get the template
# get the template
settings
=
copy
(
template
)
settings
=
copy
(
template
)
# prepare some values
# prepare some values
assert
app_settings
.
SP_HOST
,
"
SP_HOST is not set.
"
# before OneLogin toolkit chokes with "sp_acs_url_invalid,sp_sls_url_invalid"
if
not
app_settings
.
SP_HOST
:
raise
ValueError
(
"
SP_HOST is not set
"
)
# before OneLogin toolkit chokes with "sp_acs_url_invalid,sp_sls_url_invalid"
host_full
=
"
{protocol}://{host}{port_suffix}
"
.
format
(
host_full
=
"
{protocol}://{host}{port_suffix}
"
.
format
(
host
=
app_settings
.
SP_HOST
,
host
=
app_settings
.
SP_HOST
,
protocol
=
"
https
"
if
app_settings
.
SP_SSL
else
"
http
"
,
protocol
=
"
https
"
if
app_settings
.
SP_SSL
else
"
http
"
,
port_suffix
=
""
if
app_settings
.
SP_PORT
in
[
80
,
443
]
else
"
:{0}
"
.
format
(
app_settings
.
SP_PORT
)
port_suffix
=
""
if
app_settings
.
SP_PORT
in
[
80
,
443
]
else
"
:{0}
"
.
format
(
app_settings
.
SP_PORT
)
)
)
# IDP settings
# IDP settings
assert
app_settings
.
IDP_META_URL
,
"
IDP_META_URL is not set
"
# before get_idp_runtime_info starts logging errors
if
not
app_settings
.
IDP_META_URL
:
raise
ValueError
(
"
IDP_META_URL is not set
"
)
# before get_idp_runtime_info starts logging errors
idp_info
=
get_idp_runtime_info
(
app_settings
.
IDP_META_URL
)
idp_info
=
get_idp_runtime_info
(
app_settings
.
IDP_META_URL
)
settings
[
"
idp
"
][
"
x509certMulti
"
][
"
signing
"
]
=
idp_info
[
"
certificates
"
][
"
signing
"
]
settings
[
"
idp
"
][
"
x509certMulti
"
][
"
signing
"
]
=
idp_info
[
"
certificates
"
][
"
signing
"
]
settings
[
"
idp
"
][
"
x509certMulti
"
][
"
encryption
"
]
=
idp_info
[
"
certificates
"
][
"
encryption
"
]
settings
[
"
idp
"
][
"
x509certMulti
"
][
"
encryption
"
]
=
idp_info
[
"
certificates
"
][
"
encryption
"
]
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment