Аутентификация внешних запросов к вебсервисам 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; }