Как люди обрабатывают аутентификацию пользователей для веб-сервисов? - PullRequest
8 голосов
/ 23 января 2011

Я создаю веб-сервис для предоставления некоторых данных через общедоступные API.На высоком уровне, какие механизмы используют люди для защиты своих API, чтобы гарантировать, что действительный, аутентифицированный пользователь выполняет вызов?

Служба будет C #, потребителем может быть что угодно (приложение Facebook или iPhoneа также веб-сайт) так что Microsoft только решения отсутствуют.

Это не новая проблема, поэтому я предполагаю, что есть некоторые стандартные методы, чтобы справиться с этим, но мой гугл-фу подводит меня к этому.Может ли коллектив указать мне на какие-либо ресурсы?Спасибо.

Ответы [ 4 ]

5 голосов
/ 23 января 2011

Вы все еще можете использовать аутентификацию членства: есть метод веб-службы Login(username, password), внутри этого метода проверьте пользователя:

[WebMethod]
public bool Login( string username, string password)
{
    bool isValid = Membership.ValidateUser(username, password);
    if (isValid)
    {
        FormsAuthentication.SetAuthCookie(username, true);
        return true;
    }
    return false;
}

И это должно сделать это - он создаст cookie, который будет путешествовать с запросами ив каждом методе вы можете проверить HttpContext.Current.User.IsAuthenticated.

void SomeWebMethodThatRequiresAuthentication(someparameter)
{
    if (HttpContect.Current.User.IsAuthenticated)
    {
        ... do whatever you need - user is logged in ...
    }
    else
    {
        .... optionally let user know he is not logged in ...
    }
}

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

3 голосов
/ 23 января 2011

Я вижу, что нередко в веб-сервисах SaaS используется аутентификация по токен-ключу по SSL - в нашем последнем проекте мы выбрали этот простой протокол по протоколам OAuth и SAML. Может быть, это может быть полезно - иногда простые решения делают вещи более масштабируемыми и более контролируемыми.

3 голосов
/ 23 января 2011
1 голос
/ 23 января 2011

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

Вот еще один вопрос SO, касающийся использования WS-Security с C #.
Как использовать WS-Security в C #?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...