AutoGRAPH.NET Service Auth — различия между версиями
Admin (обсуждение | вклад) |
Admin (обсуждение | вклад) |
||
Строка 44: | Строка 44: | ||
Аутентификация выполняется вызовом метода Login, который возвращает токен. Данный токен должен передаваться в HTTP header всех остальных запросов. Примеры кода, для реализации работы с аутентификацией. |
Аутентификация выполняется вызовом метода Login, который возвращает токен. Данный токен должен передаваться в HTTP header всех остальных запросов. Примеры кода, для реализации работы с аутентификацией. |
||
− | WCF (Windows Communication Foundation) |
+ | == WCF (Windows Communication Foundation) == |
В этом режиме используется особенность библиотеки WCF с помощью behaviours extensions и message inspector's. Пример: |
В этом режиме используется особенность библиотеки WCF с помощью behaviours extensions и message inspector's. Пример: |
||
+ | <syntaxhighlight lang="csharp">This page contains the following errors:error on line 1 at column 325: Entity 'nbsp' not defined |
||
− | var svc = new AutoGRAPHSvcClient();<br/>var bh = new AuthenticateEndpointBehavior();<br/>svc.Endpoint.Behaviors.Add(bh);<br/>bh.Token = svc.Login("demo", "demo"); |
||
+ | Below is a rendering of the page up to the first error.</syntaxhighlight> |
||
+ | и далее все остальные методы не требуют дополнительных изменений для работы. Дополнительный файл с классами Helpers.cs прилагается в архиве. |
||
− | <br/>var devices = svc.EnumDevices("DemoSchema");<br/>var geofences = svc.EnumGeofences("DemoSchema"); |
||
+ | |||
+ | == JSON == |
||
+ | |||
+ | В этом режиме делается запрос к методу Login для получения токена и устанавливается заголовок AG-TOKEN. |
||
+ | |||
+ | <syntaxhighlight lang="csharp"> |
||
+ | WebClient client = new WebClient(); |
||
+ | client.Headers["Content-Type"] = "application/json"; |
||
+ | client.Headers["AG-TOKEN"] = client.UploadString("http://localhost:8300/Login", "{\"UserName\":\"demo\",\"Password\":\"demo\"}").Trim('\"', '\"'); |
||
+ | |||
+ | // далее обычная работа с JSON |
||
+ | |||
+ | client.DownloadString("http://localhost:8300/EnumSchemas"); |
||
+ | </syntaxhighlight> |
||
и далее все остальные методы не требуют дополнительных изменений для работы. |
и далее все остальные методы не требуют дополнительных изменений для работы. |
Версия 14:14, 4 августа 2015
Содержание
Режимы с аутентификацией
Если в .config-файле указаны параметры users-directory и devices-directory - работа сервиса немного видоизменяется. Основные отличия приведены ниже.
Отличие в логике работы | Без аутентификации | С аутентификацией пользователей |
Аутентификация | Не выполняется |
В начале работы необходимо вызвать метод Login для получения токена аутентификации, который в дальнейшем передается в каждом вызове метода. Работа всех остальных методов без токена аутентификации невозможна. |
Местоположение схем |
в каталоге, на который указывает параметр common-directory схемы общие для всех клиентов, которые выполняют запросы анонимно |
в каталоге каждого пользователя (например {users-directory}\username1\Download - далее структуры каталогов должны соответствовать каталогу common-directory - т.е. иметь подкаталоги Schemes, Geofences, Devices, ...). Пользователи не имеют доступа к схемам и прочим данных друг друга. |
Проверка на доступность приборов | клиентам доступны все приборы, которые есть в ключе сервера | клиенту доступны только те приборы, которые заданы ему в его собственном каталоге DBF, вобщем те же приборы, которые доступны ему на сервере |
Каталог данных | общий |
общий |
Аутентификация
Аутентификация выполняется вызовом метода Login, который возвращает токен. Данный токен должен передаваться в HTTP header всех остальных запросов. Примеры кода, для реализации работы с аутентификацией.
WCF (Windows Communication Foundation)
В этом режиме используется особенность библиотеки WCF с помощью behaviours extensions и message inspector's. Пример:
This page contains the following errors:error on line 1 at column 325: Entity 'nbsp' not defined
Below is a rendering of the page up to the first error.
и далее все остальные методы не требуют дополнительных изменений для работы. Дополнительный файл с классами Helpers.cs прилагается в архиве.
JSON
В этом режиме делается запрос к методу Login для получения токена и устанавливается заголовок AG-TOKEN.
WebClient client = new WebClient();
client.Headers["Content-Type"] = "application/json";
client.Headers["AG-TOKEN"] = client.UploadString("http://localhost:8300/Login", "{\"UserName\":\"demo\",\"Password\":\"demo\"}").Trim('\"', '\"');
// далее обычная работа с JSON
client.DownloadString("http://localhost:8300/EnumSchemas");
и далее все остальные методы не требуют дополнительных изменений для работы.