Может ли кто-нибудь объяснить OAuth?

Я немного читал об этом в http://oauth.net/, это "простой способ публикации и взаимодействия с защищенными данными", очевидно.

Я думаю, что именно то, что мне нужно, чтобы обеспечить безопасный способ доступа к данным из приложения android/iphone через веб-службу REST, но я не могу точно определить, что это такое.

Итак, просто укажите, что именно он делает и есть ли (действительно) простые примеры этого в действии, за которыми я могу следовать, предпочтительно внедряя что-то в С#, доступ к которому можно получить из приложения для смартфонов?

Ответы

Ответ 1

Из ссылки, предоставленной Craig Stuntz:

Open ID предоставляет вам один логин для нескольких сайтов. Каждый раз, когда вам нужно войти в Zooomr - сайт с использованием Open ID, вы будете перенаправлены на свой сайт Open ID, где вы входите в систему, а затем обратно в Zooomr. OAuth позволяет вам разрешить одному веб-сайту - потребителю - получать доступ к вашим данным с другого веб-сайта - поставщика. Например, вы хотите авторизовать поставщика печати - назовите его Moo - для захвата ваших фотографий из репозитория фотографий - назовите его Flickr. Moo перенаправит вас на Flickr, который спросит вас, например: "Moo хочет загрузить ваши фотографии Flickr. Это круто?", А затем обратно в Moo для печати ваших фотографий.

DotNetOpenAuth - хорошая библиотека С# для Open ID и OAuth.

Ответ 2

OAuth - это альтернативный способ для приложений хранить данные входа без фактических данных.

При входе на какую-либо страницу у вас обычно есть имя пользователя и персональный пароль или любые другие учетные данные для входа. Теперь, если вы хотите, чтобы приложение могло делать что-то по этому логину, вам нужно будет предоставить этому приложению свои исходные данные для входа. Это означает, что вы вводите свое имя пользователя и пароль в приложение. Это не так плохо, но дело в том, что если вы хотите войти в систему через это приложение, ему необходимо сохранить ваши учетные данные. Но чтобы можно было отправить правильные данные входа на фактическую страницу, необходимо сохранить их в исходной форме (только с некоторым шифрованием или чем-то еще). Поэтому, если кто-то знает, как данные хранятся в приложении, они могут извлечь ваши исходные учетные данные для входа.

Это проблема безопасности, и именно там, где OAuth входит. С OAuth каждое приложение идентифицируется ключом потребителя и секретом потребителя. Оба являются уникальными для клиента, и, как правило, ни один пользователь не сможет увидеть их (особенно не секрет). Теперь, когда вы хотите, чтобы ваше приложение имело доступ к странице, вы начинаете процесс авторизации OAuth. Вы просто заходите на страницу и прямо разрешаете этому специальному приложению (идентифицированному ключом потребителя) иметь доступ. Если вы это сделаете, приложение получит другую пару ключей, токен доступа и секрет доступа. Эта пара ключей работает только для вашей учетной записи и работает только при использовании точного приложения (идентифицированного ключом потребителя и защищенного как оригинальное приложение по секрету потребителя). Теперь все приложение необходимо сохранить, это пара ключей доступа (вместе с уже сохраненной парой потребительских ключей), и он будет иметь доступ к странице, не видя ваши исходные данные входа.

Таким образом, никто не сможет получить ваши фактические данные для входа, и никто другой (или никакое другое приложение) не сможет использовать сгенерированные учетные данные доступа для доступа к странице. И если вы не хотите, чтобы приложение имело доступ к нему, вы можете легко отменить пару ключей доступа, чтобы приложение больше не могло его использовать.

Итак, OAuth - это всего лишь способ защитить ваши настоящие данные входа. Помимо этого, он не добавляет никакого другого уровня безопасности или чего-то еще, он просто защищает ваши данные.