Авторизация в СПИК

Авторизация в СКАУТ-Платформе через СПИК необходима для того, чтобы получить права на доступ к Объектам мониторинга и задать некоторые пользовательские настройки. Например, язык пользователя и часовой пояс.

Алгоритм авторизации:

  • Формирование запроса авторизации 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#, который вы можете использовать в качестве примера реализации авторизации в СПИК. Внутри добавлены сервис-референсы:

Адреса сервисов можно проверить в браузере на доступность. Если сервисы доступны, то в браузере вы уведите WSDL-документ:

Выход из системы осуществляется вызовом client.Logout()
При авторизации клиент должен послать в СПИК 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 можно посмотреть в сгенерированных классах, сформированных после получения метаданных.

  • Вложения
  • SpicSoapRequestExample.rar (138.34 KB) 580
  • SPIC_JSclient.zip (190.67 KB) 370
    1. а где HttpJsonRequestProvider.js, который: В данном примере используется HttpJsonRequestProvider, код которого можно найти в сопровождающем файле HttpJsonRequestProvider.js. ???