mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-07-27 20:45:23 -04:00
Support CAS in UI Auth flows. (#7186)
This commit is contained in:
parent
b0db928c63
commit
694d8bed0e
5 changed files with 137 additions and 89 deletions
|
@ -425,7 +425,9 @@ class CasRedirectServlet(BaseSSORedirectServlet):
|
|||
self._cas_handler = hs.get_cas_handler()
|
||||
|
||||
def get_sso_url(self, client_redirect_url: bytes) -> bytes:
|
||||
return self._cas_handler.handle_redirect_request(client_redirect_url)
|
||||
return self._cas_handler.get_redirect_url(
|
||||
{"redirectUrl": client_redirect_url}
|
||||
).encode("ascii")
|
||||
|
||||
|
||||
class CasTicketServlet(RestServlet):
|
||||
|
@ -436,10 +438,20 @@ class CasTicketServlet(RestServlet):
|
|||
self._cas_handler = hs.get_cas_handler()
|
||||
|
||||
async def on_GET(self, request: SynapseRequest) -> None:
|
||||
client_redirect_url = parse_string(request, "redirectUrl", required=True)
|
||||
client_redirect_url = parse_string(request, "redirectUrl")
|
||||
ticket = parse_string(request, "ticket", required=True)
|
||||
await self._cas_handler.handle_ticket_request(
|
||||
request, client_redirect_url, ticket
|
||||
|
||||
# Maybe get a session ID (if this ticket is from user interactive
|
||||
# authentication).
|
||||
session = parse_string(request, "session")
|
||||
|
||||
# Either client_redirect_url or session must be provided.
|
||||
if not client_redirect_url and not session:
|
||||
message = "Missing string query parameter redirectUrl or session"
|
||||
raise SynapseError(400, message, errcode=Codes.MISSING_PARAM)
|
||||
|
||||
await self._cas_handler.handle_ticket(
|
||||
request, ticket, client_redirect_url, session
|
||||
)
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue