|
159 | 159 | if TYPE_CHECKING:
|
160 | 160 | from weblate.auth.models import AuthenticatedHttpRequest
|
161 | 161 |
|
| 162 | +AUTHID_SALT = "weblate.authid" |
| 163 | +AUTHID_MAX_AGE = 600 |
| 164 | + |
162 | 165 | CONTACT_TEMPLATE = """
|
163 | 166 | Message from %(name)s <%(email)s>:
|
164 | 167 |
|
@@ -1329,15 +1332,17 @@ def social_auth(request: AuthenticatedHttpRequest, backend: str):
|
1329 | 1332 | except MissingBackend:
|
1330 | 1333 | msg = "Backend not found"
|
1331 | 1334 | raise Http404(msg) from None
|
1332 |
| - # Store session ID for OpenID based auth. The session cookies will not be sent |
1333 |
| - # on returning POST request due to SameSite cookie policy |
1334 |
| - if isinstance(request.backend, OpenIdAuth): |
| 1335 | + |
| 1336 | + # Store session ID for OpenID or SAML based auth. The session cookies will |
| 1337 | + # not be sent on returning POST request due to SameSite cookie policy |
| 1338 | + if isinstance(request.backend, OpenIdAuth) or backend == "saml": |
1335 | 1339 | request.backend.redirect_uri += "?authid={}".format(
|
1336 | 1340 | dumps(
|
1337 | 1341 | (request.session.session_key, get_ip_address(request)),
|
1338 |
| - salt="weblate.authid", |
| 1342 | + salt=AUTHID_SALT, |
1339 | 1343 | )
|
1340 | 1344 | )
|
| 1345 | + |
1341 | 1346 | try:
|
1342 | 1347 | return do_auth(request.backend, redirect_name=REDIRECT_FIELD_NAME)
|
1343 | 1348 | except AuthException as error:
|
@@ -1417,7 +1422,9 @@ def social_complete(request: AuthenticatedHttpRequest, backend: str): # noqa: C
|
1417 | 1422 | if "authid" in request.GET:
|
1418 | 1423 | try:
|
1419 | 1424 | session_key, ip_address = loads(
|
1420 |
| - request.GET["authid"], max_age=600, salt="weblate.authid" |
| 1425 | + request.GET["authid"], |
| 1426 | + max_age=AUTHID_MAX_AGE, |
| 1427 | + salt=AUTHID_SALT, |
1421 | 1428 | )
|
1422 | 1429 | except (BadSignature, SignatureExpired):
|
1423 | 1430 | return auth_redirect_token(request)
|
|
0 commit comments