Аутентификация внешних запросов к веб-сервисам bpm'online
Glossary Item Box
Общие положения
Все внешние запросы к веб-сервисам bpm'online должны быть аутентифицированы.
В bpm'online поддерживается только Forms-аутентификация — способ аутентификации с помощью cookie. Для Forms-аутентификации в 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; }