- Порезанный
- 23 сентября 2026 г. в 02:58 UTC
- Автор
- Kamo
- Обещать
- 78c4a87
/api/email/oauth/callback и **************** являются общедоступными и не сессионными Провайдер перенаправляет браузер здесь без сеанса Kamo, поэтому «состояние» было единственным местом, где браузер был доступен. Организация могла прийти из — и это была самоописывающаяся база64 JSON CALLER, построенная: {"orgId": 1, "nonce": "...", "provider": "GOOGLE WORKSPACE"}. Любой мог бы сделать ручную работу, называя другой организации и воспроизводить его против кода авторизации, который они получили для своих собственных; Внутри он был создан, но никогда не хранился и не проверялся на что-либо, поэтому он ничего не останавливал. The Callback доверенный orgId/provider/memberId прямо из этого декодирования и активировал подключенный Поставщиком для любой организации, названной государством. OAuthStateStore теперь чеканит непрозрачный, неуловимый токен на «выпуске», сохраняя организацию / участника / поставщика / Поток, который он решает, только в записи Redis с 10-минутным TTL — никогда в самом токене. «Peek» читает эту запись, не тратя ее (используется для выбора перенаправления URI и потока перед перенаправлением). Обратный вызов обязывает обработчика; «потребить» читает и навсегда удаляет его, поэтому обратный вызов одноразовое использование: повторно воспроизведенный или повторно используемый токен не решает ничего, неотличимого от того, который никогда существовали. OAuthFlowService и GroupwareOAuthService — которые используются для создания и декодирования этого блоба самостоятельно, каждый со своей копией одного и того же механизма — теперь и монетный двор, и искупать токены Через этот один магазин, так что есть ровно одно место, которое решает, что означает государственный токен. OAuthStateStoreTest терпит неудачу без исправления (второе потребление того же токена по-прежнему возвращает деньги). Запись вместо нуля; OAuthFlowServiceTest, OAuthFlowKindStateTest и GroupwareOAuthServiceTest Они обновляются для нового механизма — они больше не строят и не декодируют блоб состояния напрямую. Декодировать нечего.
