Ответ 1
Я собираюсь пойти с "Ты этого не понял". (В вашей защите очень мало людей).
Пусть будет ясно: атака фиксации сеанса, на которую вы ссылаетесь, затронула OAuth 1.0, но была разрешена в OAuth 1.0a, которая стала RFC 5849. Нет основных разработчиков OAuth 1.0 - основные разработчики либо внедрили OAuth 1.0a/RFC 5849, либо реализовали один из черновиков OAuth 2.0.
Что касается анти-шаблона имени пользователя/пароля, OAuth 1.0a не предусматривает механизм обмена имени пользователя и пароля для токена доступа. OAuth 2.0 делает, но только для поддержки установленных приложений. Имейте в виду, что установленное приложение может просто keylog (или подобное), если оно действительно этого захочет. Когда дело доходит до обеспечения безопасности, все ставки отключены, если приложение уже выполняется изначально и не используется на клиентской машине. Но на самом деле это совсем другой сценарий, чем то, о чем вы говорите. Веб-приложения как OAuth 1.0a, так и OAuth 2.0 никогда не касаются имени пользователя и пароля.
Поток для OAuth 1.0a выглядит следующим образом: приложение запрашивает у провайдера токен запроса, сообщая ему все, к чему он хочет получить доступ. Поставщик выдает временный неавторизованный токен, и в этот момент клиент может отправить пользователю провайдеру для авторизации этого токена. Пользователь входит в систему со своим именем пользователя и паролем на сайте поставщика, а затем либо предоставляет, либо запрещает доступ. Затем провайдер перенаправляет обратно строку с верификатором, которая позволяет сайту обновляться до авторизованного токена доступа. Все эти взаимодействия подписаны. Если подписи не совпадают ни с одним из них, поставщик отклонит запрос. И пользователь может в любой момент отменить любой токен, удалив клиентскую способность для доступа к своей учетной записи.
Существует ряд соображений безопасности с протоколом, но если вы действительно прочитали список, это по сути тот же список проблем безопасности которые затрагивают почти каждый сайт в Интернете. Эти соображения безопасности очень хорошо известны и очень хорошо поняты. Насколько я знаю, в настоящее время нет известных уязвимостей, которые можно использовать для поставщиков, которые правильно учитывают все эти соображения безопасности.
Точка, вы намного безопаснее, используя OAuth 1.0a или OAuth 2.0, чтобы разрешить третьему лицу, чем с любыми альтернативами. Если вам это не нравится, решение прост: не разрешайте третьим лицам получать доступ к вашей учетной записи. Разумеется, есть много причин, по которым вы, возможно, не захотите этого делать.