impemented SimpleSAMLLogin option into the IliasWebCrawler

This commit is contained in:
NIKL45 2025-10-24 21:26:06 +02:00
parent 77c6e7d816
commit 8d37f42ce8

View file

@ -32,6 +32,7 @@ from .kit_ilias_html import (
parse_ilias_forum_export,
)
from .shibboleth_login import ShibbolethLogin
from .simplesaml_login import SimpleSAMLLogin
TargetType = str | int
@ -49,12 +50,14 @@ class IliasWebCrawlerSection(HttpCrawlerSection):
return base_url
def login(self) -> Literal["shibboleth"] | LoginTypeLocal:
def login(self) -> Literal["shibboleth", "simple-saml"] | LoginTypeLocal:
login_type = self.s.get("login_type")
if not login_type:
self.missing_value("login_type")
if login_type == "shibboleth":
return "shibboleth"
if login_type == "simple-saml":
return "simple-saml"
if login_type == "local":
client_id = self.s.get("client_id")
if not client_id:
@ -194,7 +197,14 @@ instance's greatest bottleneck.
if isinstance(self._login_type, LoginTypeLocal):
self._client_id = self._login_type.client_id
else:
self._shibboleth_login = ShibbolethLogin(self._base_url, self._auth, self._tfa_auth)
# Allow multiple remote login backends
if self._login_type == "shibboleth":
self._shibboleth_login = ShibbolethLogin(self._base_url, self._auth, self._tfa_auth)
elif self._login_type == "simple-saml":
self._simplesaml_login = SimpleSAMLLogin(self._base_url, self._auth, self._tfa_auth)
else:
# Fallback to shibboleth to avoid breaking older configs
self._shibboleth_login = ShibbolethLogin(self._base_url, self._auth, self._tfa_auth)
self._target = section.target()
self._link_file_redirect_delay = section.link_redirect_delay()
@ -1044,6 +1054,8 @@ instance's greatest bottleneck.
# fill the session with the correct cookies
if self._login_type == "shibboleth":
await self._shibboleth_login.login(self.session)
elif self._login_type == "simple-saml":
await self._simplesaml_login.login(self.session)
else:
params = {
"client_id": self._client_id,