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

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

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

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

Из ссылки, предоставленной Крейгом Штунцем:

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

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

OAuth – альтернативный способ для приложений хранить данные для входа, не имея реальных данных, хранящихся вообще.

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

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

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

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