Как сделать Аутентификацию между веб-сервисом и мобильным телефоном?

Я использовал веб-дизайн С открытым исходным кодом в прошлом. У них есть довольно много css тем, не знайте о ASP.Net

7
задан Chris Walsh 18 December 2014 в 09:40
поделиться

2 ответа

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

using System.Web.Services.Protocols;

public class AuthHeader : SoapHeader
{
    public string Username;
    public string Password;
}

Вы определяете общедоступное свойство в веб-службе

public AuthHeader AuthenticationInfo;

и добавьте некоторые атрибуты к любым веб-методам, которые должны быть доступны только для аутентифицированных пользователей:

[SoapHeader ("AuthenticationInfo", Required=true)]
[WebMethod]
public string HelloSecretWorld()
{
    if(!(AuthenticationInfo.UserName == "Hello" && AuthenticationInfo.UserName.Password == "World"))
        throw new AuthenticationException();

    return "Hello World";
}

Клиентский код будет выглядеть так:

MyWebService ws = new MyWebService();
ws.AuthenticationInfo = new AuthHeader {Username = "Hello", Password = "World"};
Console.Out.WriteLine(ws.HelloSecretWorld());

Таким образом, вам не нужно изменять подписи методов для добавления аутентификация.

9
ответ дан 7 December 2019 в 03:17
поделиться

Мне приходилось решать эту проблему несколько раз при подключении портативных (Windows Mobile) приложений к веб-службам. Решение, которое я использовал, - создать файл cookie на основе хэша имени пользователя и IP-адреса после успешного завершения процесса аутентификации. например, User ID и pwd соответствуют сохраненным учетным данным на сервере. Затем вы передаете этот файл cookie обратно клиенту, который затем будет передан вместе со всеми запросами веб-служб для остальной части сеанса. например, первым параметром любого веб-метода является файл cookie.

псевдокод:

string cookie = webServiceInstance.Authenticate("userName", "password");
double balance = webServiceInstance.GetBalance(cookie, someId);

Конечно, вы хотите использовать SSL, чтобы не передавать свой идентификатор пользователя и пароль в виде обычного текста.

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

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