Использование OpenID с WebService: Лучший способ пройти проверку подлинности?

Я бы предложил сначала начать с самых простых решений - возможно, в вашем сценарии достаточно простой базовой аутентификации HTTP + HTTPS.

Если нет (например, вы не можете использовать https или нуждаетесь в более сложном управлении ключами), вы можете взглянуть на решения на основе HMAC, как это предлагают другие. Хорошим примером такого API был бы Amazon S3 ( http://s3.amazonaws.com/doc/s3-developer-guide/RESTAuthentication.html )

Я написал сообщение в блоге. об аутентификации на основе HMAC в ASP.NET Web API. В нем рассматриваются как служба веб-API, так и клиент веб-API, а код доступен на bitbucket. http://www.piotrwalat.net/hmac-authentication-in-asp-net-web-api/

Вот пост о базовой аутентификации в веб-API: http://www.piotrwalat.net/basic-http-authentication-in-asp-net-web-api-using-message-handlers/

Помните, что если вы собираетесь предоставить API для третьих лиц, вы также, скорее всего, будете нести ответственность за доставку клиентских библиотек. Базовая аутентификация имеет существенное преимущество, поскольку она поддерживается на большинстве программных платформ из коробки. HMAC, с другой стороны, не настолько стандартизирован и потребует индивидуальной реализации. Они должны быть относительно простыми, но все же требуют работы.

PS. Также есть возможность использовать HTTPS + сертификаты. http://www.piotrwalat.net/client-certificate-authentication-in-asp-net-web-api-and-windows-store-apps/

6
задан 3 revs 9 July 2009 в 18:16
поделиться

3 ответа

Возможно, вы захотите взглянуть на OAuth:

http://oauth.net/

(Используйте http://oauth.net/code/ для кодирования.)

Поскольку он предназначен специально для этого сценария (на самом деле Open ID - нет).

Есть еще один Обсуждается вопрос о SA, в котором задается лучший способ защиты веб-службы, а также Open ID и OAuth:

Аутентификация веб-службы с использованием OpenID

3
ответ дан 17 December 2019 в 18:19
поделиться

На самом деле это не ответ, но я не могу оставлять комментарии ...

Вы говорите: «У меня есть стандартный WebService на .NET 3.5 и веб-сайт MVC, который находится поверх этого WebService ».

Я могу ошибаться здесь, но язык подразумевает, что эти двое находятся на одном сервере. Если да, то почему вы не можете просто поделиться базой данных пользователей и токеном cookie?

Джеймс

0
ответ дан 17 December 2019 в 18:19
поделиться

Веб-службы ASMX (которые Microsoft теперь считает «устаревшим») не имеет возможности использовать OpenID для аутентификации. Они могут использовать только то, что им предоставляет IIS. Вы могли бы добавить SoapExtension, который будет выполнять для них аутентификацию OpenID, но я бы не стал тратить на это время.

Я недостаточно знаю об OpenID, чтобы быть уверенным, но я подозреваю, что он может интегрироваться с WCF через федеративную безопасность. Я уверен, что кто-нибудь еще ответит на этот вопрос с подробностями.

0
ответ дан 17 December 2019 в 18:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: