Я не уверен, что существует «правильный» способ, но прежде чем я просто соберу свою собственную несовместимую реализацию, возможно, во всех стандартах есть что-то, что может удовлетворить мои потребности?
Вот ситуация: Apple заявила, что приложения на их телефонах ДОЛЖНЫ включать в себя все стандартные функции внутри себя. Больше никаких фреймов с веб-контентом! Если вам нужно показать материал из Интернета, откройте системный браузер (Safari)! К сожалению, нам нужно отображать материалы из Интернета, так что поехали...
Теперь приложение требует аутентификации, которую пользователь сделал ранее. Мы храним любые токены, которые нам нужны. Когда приходит время открывать браузер, мы не хотим заставлять пользователя повторно аутентифицироваться. Нам нужно каким-то образом передать учетные данные для доступа в браузер, и желательно сделать это безопасно. Кроме того, для веб-страницы в браузере потребуется токен, полученный с нашего сервера OpenID Connect.
К сожалению, единственной точкой связи между приложением и браузером является URL-адрес, поэтому все, что мы даем, будет там, на виду. Я знаю, что OAuth был очень обеспокоен этим, настолько, что они сделали невозможным перехват аутентификации только с тем, что видно на экране, и вместо этого использовали такие вещи, как одноразовые промежуточные коды, обратные каналы и PKCE.
К сожалению, я не вижу способа использовать потоки по умолчанию «из коробки» для достижения того, что мне нужно. Я могу подумать о модификациях этих потоков, которые могли бы это сделать, но я не эксперт по безопасности, поэтому я предпочитаю что-то стандартное, проверенное экспертами.