2013-04-05 3 views
2

Я хотел бы защитить службу app.net web api с помощью токена. Теперь я знаю, что вы обычно используете STS-сервер, но я не хочу этого делать, так что это мои другие варианты.Asp.Net Web Api: Защита с помощью токена?

Я думал о том, чтобы оставить контроллер. Незащищенный, где клиенты могут переходить в имя пользователя и пароль, и что будет возвращать токен, этот токен будет использоваться И НЕОБХОДИМО вызывать другие контроллеры на службе, которая будет защищена.

Таким образом, возникают некоторые вопросы, используя DelegatingHandler vs AuthorizeAttribute. Вышеуказанный вариант должен быть атрибутом authorizeAttribute, потому что мне нужно оставить контроллер незащищенным для клиентов, чтобы вызвать аутентификацию. Я не вижу, как использовать обработчик делегирования, который бы технически защищал полный сервис, а не оставлял один контроллер незащищенным.

Другой вариант я вижу, предоставляет другой сервис, позволяющий клиентам для аутентификации и получить маркер, а затем я мог заблокировать мою вторую услугу, используя delegatinghandler ..

Давайте представим, что я пошел вниз маршрутизации STS, Я все равно должен был бы каким-то образом предоставить клиенту возможность связаться с «ОТКРЫТО» службой/контроллером, который, в свою очередь, назвал бы STS для получения токена.

Так, учитывая это, есть еще одна услуга, мой лучший вариант

Любая помощь или обратная связь действительно оценили.

+0

Ну, я просто нашел это, способ интегрировать STS в мое приложение с помощью Thinktecture IdentityServer http://leastprivilege.com/2012/12/28/embedding-thinktecture-identityserver-in-your-own-applications/ – Martin

+0

Возможно STS - это возможность – Martin

ответ

2

Я использовал аналогичный сценарий в прошлом с использованием Hawk (https://github.com/hueniverse/hawk). У меня есть реализация в GitHub для Hawk в .NET, которая интегрируется с Web API с помощью обработчиков сообщений.

https://github.com/pcibraro/hawknet

В пути я реализовал в проекте. Клиентское приложение сначала совершает вызов веб-api, используя базовую аутентификацию с реальным именем пользователя/паролем (используя https). Веб-api аутентифицирует пользователя, и набор учетных данных hawk возвращается клиенту (это будет эквивалентно токену). Остальные вызовы обеспечены ястребом, используя согласованные учетные данные хока. Это очень просто, и это не связано с STS.

+0

Отлично, я посмотрю. Спасибо за ваш ответ. – Martin