2015-04-15 3 views
2

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

Раньше я использовал oAuth для Google, Facebook, Twitter и Microsoft. У меня есть несколько вопросов здесь

  1. Каковы преимущества внедрения поставщика
  2. Каков наилучший подход в общих принципах OAuth
  3. Могу ли я использовать этот OAuth-сервер для Single Sign On
OAuth

Когда у меня есть пользователь oAuth из Google или другой, идея заключалась в том, чтобы устранить попытки пользователя зарегистрироваться на моем сайте, а использовать те же учетные данные, что и он для Google. Является ли это единственным преимуществом, которое я получу, если создам свой пользовательский oAuth?

Реализация OAuth:

  • Создание Entity приложений с ApplicationName, ClientID, ClientSecrete
  • Создать объект пользователя с UserId, UserName, Password, ApplicationID
  • Share уникального ClientID и Выделяет с каждым сайтом и когда пользователь пытается войти с этого сайта, передайте идентификатор клиента, clientSecrete, UserName, Password и подтвердите и верните true или false
  • Следуйте аналогичному потоку для пользователя, чтобы зарегистрироваться в системе ,

На высоком уровне мой вышеуказанный поток удовлетворяет концепции oAuth? есть ли подробные детали реализации oAuth, которые я могу назвать для лучшего понимания?

+0

https://github.com/DotNetOpenAuth/DotNetOpenAuth, реализация протоколов OpenID, OAuth C# – Smartkid

ответ

1

http://oauth.net/articles/authentication/

Это хорошо читать, чтобы сказать вам, что вы должны использовать для OAuth, а не: =)

https://msdn.microsoft.com/en-us/library/hh291066(v=vs.110).aspx Windows Identity Fundation ... Может помочь вам с уникальной авторизации, через разные приложений, а также слои ..

и вот, наконец, некоторые, как сделать руководящие принципы:

http://www.c-sharpcorner.com/UploadFile/scottlysle/windows-identity-foundation-and-single-sign-on-sso/

+0

Как это обрабатывается в случае нескольких клиентских сайтов. Как мой пользователь находится на D1.com, когда он пытается войти в систему, я отправил свое имя пользователя, пароль, идентификатор клиента на сервер OAuth, которые предоставляют доступ к моему пользователю на D1.com, но позже, когда пользователь ушел на D2.com, я могу избегать ввода имени пользователя и пароля? если да как? – HaBo

+0

Вам все равно необходимо войти в систему! Использование google/Fb не рекомендуется для высокозащищенного доступа, поскольку они слишком уязвимы. Если это слишком хорошо известно, кто вы, это не имеет значения. В любом случае вы все равно можете использовать поставщик членства или в mvc новый asp.net.blabla owin, у которого есть встроенная поддержка Oauth (orization: =)) Пока провайдеры используют одно и то же хранилище, вы можете повторно использовать его на каждом сайте: =) –

+0

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