Авторизация в СПИК
Авторизация в СКАУТ-Платформе через СПИК необходима для того, чтобы получить права на доступ к Объектам мониторинга и задать некоторые пользовательские настройки. Например, язык пользователя и часовой пояс.
Алгоритм авторизации:
- Формирование запроса авторизации SpicAuthorizationRequest
- Вызов в сервисе SpicAuthorizationService метода входа в систему Login (SpicAuthorizationRequest).
- Метод возвращает SpicAuthorizationResponse, содержащий результат открытия сессии, а именно:
-уникальный идентификатор сессии (токен авторизации),
-статус (удалось ли авторизоваться и аутентифицироваться),
-время истечения сессии,
-уникальный идентификатор пользователя,
-имя пользователя.
Пример авторизации на языке JS.
В данном примере используется HttpJsonRequestProvider, код которого можно найти в сопровождающем файле HttpJsonRequestProvider.js.
var baseUrl = 'http://localhost:8081/spic/auth/rest/';
var loginServerUrl = baseUrl + 'Login';
var logoutServerUrl = baseUrl + 'Logout';
var requestProvider = new HttpJsonRequestProvider();
var authorizationToken = null;
function loginOnServer(request) {
return response = requestProvider.POST(loginServerUrl,
request);
}
function logoutOnServer(request) {
return requestProvider.GETAuthorized(logoutServerUrl,
null,
authorizationToken);
}
function generateRequest() {
return {
Login: 'login',
Password: 'password',
TimeStampUtc: '/Date(' + new Date().getTime() + ')/',
TimeZoneOlsonId: 'Europe/Moscow',
CultureName: 'ru-ru',
UiCultureName: 'ru-ru'
};
}
function login() {
//формируем запрос
var request = generateRequest();
//отправляем запрос
var response = loginOnServer(request);
//получаем токен авторизации
authorizationToken = response.response.SessionId;
}
function logout() {
logoutOnServer();
}
Пример авторизации на языке C#.
Во вложениях присутствует проект WPF-клиента на C#, который вы можете использовать в качестве примера реализации авторизации в СПИК. Внутри добавлены сервис-референсы:
- soap-сервис для авторизации http://login.scout-gps.ru/spic/auth/soap
- soap-сервис для получения units по запросу http://login.scout-gps.ru/spic/units/soap
Адреса сервисов можно проверить в браузере на доступность. Если сервисы доступны, то в браузере вы уведите WSDL-документ:
При авторизации клиент должен послать в СПИК SpicAuthorizationRequest и получить SpicAuthorizationResponse.
Пример контракта SpicAuthorizationRequest в JS :
{
"Login": "test_demo",
"Password": "test_demo",
"TimeStampUtc": "/Date(1380174312983)/",
"TimeZoneOlsonId": "Europe/Moscow",
"CultureName": "ru-ru",
"UiCultureName": "ru-ru"
}
Пример контракта SpicAuthorizationResponse в JS :
{
"ExpireDate": "\/Date(1380203117863+0400)\/",
"IsAuthenticated": true,
"IsAuthorized": true,
"SessionId": "a26fd966-dada-453f-adc8-359ac32c4b94",
"UserId": 1075,
"UserName": "Демо-диспетчер"
}
Результирующие классы для контрактов данных SpicAuthorizationRequest и SpicAuthorizationResponse для SOAP можно посмотреть в сгенерированных классах, сформированных после получения метаданных.
а где HttpJsonRequestProvider.js, который: В данном примере используется HttpJsonRequestProvider, код которого можно найти в сопровождающем файле HttpJsonRequestProvider.js. ???