Все внешние запросы к веб-сервисам bpm`online должны быть

advertisement
Аутентификация внешних запросов к вебсервисам bpm'online
Общие положения
Все внешние запросы к веб-сервисам bpm'online должны быть аутентифицированы.
В bpm'online поддерживаются два вида аутентификации:


Basic-аутентификация. Стандартный способ аутентификации с помощью HTTP-заголовков.
Учетные данные пользователя (логин и пароль) добавляются в заголовок запроса к сервису в
кодировке Base64.
Forms-аутентификация. Стандартный способ аутентификации с помощью cookie. Для formsаутентификации в bpm'online предназначен веб-сервис AuthService.svc.
Важно
Basic-аутентификация является небезопасным способом аутентификации, так как
данные передаются в открытом виде. Поэтому использовать этот способ можно
только при взаимодействии с системой по протоколу SSL (HTTPS).
Для обеспечения безопасности при передаче учетных данных рекомендуется
выполнять аутентификацию внешних запросов к bpm'online посредством
AuthService.svc.
Сервис аутентификации AuthService.svc
Для прохождения аутентификации необходимо вызвать метод Login сервиса AuthService.svc. При
этом строка запроса к сервису выглядит следующим образом:
http(s)://[Адрес приложения bpm'online]/ServiceModel/AuthService.svc/Login
Парметры запроса к сервису:

Метод: POST

ContentType: application/json
В теле запроса должны передаваться учетные данные пользователя bpm'online. Учетные данные
передаются в формате JSON-объекта со следующими свойствами:

UserName: Имя пользователя bpm'online

UserPassword: Пароль пользователя bpm'online
При успешной аутентификации метод вернет аутентификационные cookies, которые
необходимо сохранить на клиенте и в дальнейшем использовать в запросах к веб-сервисам
bpm'online.
Пример вызова AuthService.svc из клиентского
кода
В примере приведена реализация метода на языке C#, который выполняет запрос к
AuthService.svc для аутентификации пользователя. Учетные данные пользователя передаются в
метод в качестве входящих параметров userName и userPassword. При успешной
аутентификации метод возвращает true; иначе — false.
Алгоритм выполнения примера:
1) Добавьте в блок usings пространства имен System.IO и System.Net:
using System.IO;
using System.Net;
2) Создайте класс, в который добавьте следующие поля:
// Строка запроса к методу Login сервиса AuthService.svc.
// Замените "my.bpmonline.com" в строке на адрес вашего приложения bpm'online.
public const string authServiceUri = "http://my.bpmonline.com/ServiceModel/AuthService.svc/Login";
// Cookie аутентификации bpm'online.
public static CookieContainer AuthCookie = new CookieContainer();
3) Добавьте в созданный класс метод для аутентификации через сервис AuthService.svc:
// Метод выполняет аутентификацию пользователя .
// Параметры:
// userName - имя пользователя bpm'online,
// userPassword - пароль пользователя bpm'online.
public static bool TryLogin(string userName, string userPassword)
{
// Создание экземпляра запроса к сервису аутентификации.
var authRequest = HttpWebRequest.Create(authServiceUri) as HttpWebRequest;
// Определение метода запроса.
authRequest.Method = "POST";
// Определение типа контента запроса.
authRequest.ContentType = "application/json";
// Включение использования cookie в запросе.
authRequest.CookieContainer = AuthCookie;
// Помещение в тело запроса учетной информации пользователя.
using (var requesrStream = authRequest.GetRequestStream())
{
using (var writer = new StreamWriter(requesrStream))
{
writer.Write(@"{
""UserName"":""" + userName + @""",
""UserPassword"":""" + userPassword + @"""
}");
}
}
// Получение ответа от сервера. Если аутентификация проходит успешно, в свойство
AuthCookie будут
// помещены cookie, которые могут быть использованы для последующих запросов.
using (var response = (HttpWebResponse)authRequest.GetResponse())
{
if (AuthCookie.Count > 0)
{
return true;
}
}
return false;
}
Download