Пример конфигурации расширения аутентификатора
Используйте описанные ниже шаги для компоновки и создания манифеста расширения и реализации алгоритма стратегии аутентификации в методах обратного вызова расширения аутентификатора. Дополнительные сведения о создании пользовательских расширений в
ThingWorx см. в разделе
Расширяемость ThingWorx.
Компоновка
Можно использовать такие средства компоновки, как Ant или Gradle. В сценарии компоновки необходимо будет скомпилировать Java-класс, который реализует обратные вызовы метода аутентификатора (будет обсуждаться позже). Удостоверьтесь, что для компилирования используются библиотеки Thingworx-Extension-SDK-x.x.x (JAR-файлы), которые совместимы с версией Thingworx-Platform-x.x.x, используемой во время выполнения. Также не забудьте включить файл metadata.xml, который используется для регистрации расширения аутентификатора в ThingWorx при импорте ZIP-архива расширения.
Создание манифеста
1. Откройте файл configfiles/metadata.xml.
2. В элементе набора аутентификаторов (пример показан ниже) настройте следующие параметры требуемым образом:
<Entities>
<ExtensionPackages>
<ExtensionPackage name="Authenticators_Sample_BasicUser_ExtensionPackage"
description="Authenticators Sample BasicUser Extension Package"
vendor="ThingWorx"
packageVersion="1.0"
minimumThingWorxVersion="5.1.1">
<JarResources>
<FileResource type="JAR" file="auth-sample-basicuser-extension.jar" description="Authenticators Sample BasicUser JAR file." />
</JarResources>
</ExtensionPackage>
</ExtensionPackages>
<Authenticators>
<Authenticator name="SampleBasicUserAuthenticator"
className="com.thingworx.security.authentication.samples.SampleBasicUserAuthenticator"
description="Sample Authenticator that validates against the Thingworx User"
aspect.isEditableExtensionObject="true">
</Authenticator>
</Authenticators>
</Entities>
a. Authenticator name - отображается в Composer. Должно быть уникальным наименованием.
b. className - имя класса реализации, который используется ThingWorx для создания экземпляра реализации аутентификатора.
c. description - отображается в Composer.
d. aspect.isEditableExtensionObject - задайте значение true, чтобы разрешить сохранение включенных настроек приоритета в Composer. Этот параметр является обязательным.
3. Настройте имя jar-файла типа FileResource (см. ниже):
<FileResource type="JAR" file="auth-sample-basicuser-extension.jar"
description="Authenticators Sample BasicUser JAR file." /> name of jar file
4. Сохраните и закройте файл.
Реализация
Для реализации выполните описанные ниже шаги для соответствующего JAR-файла аутентификатора:
1. Используйте/расширьте класс CustomAuthenticator.
|
Параметр SupportsSession разрешает поддержку сессии между запросами; по умолчанию задано значение true. Если не требуется поддерживать сессию между запросами, задайте значение false.
|
2. Примените конструктор по умолчанию.
3. Переопределите методы типа аутентификатора требуемым для реализации образом:
Метод
|
Описание
|
public boolean matchesAuthRequest(HttpServletRequest httpRequest) throws AuthenticatorException,
|
Позволяет получать информацию из входящего запроса аутентификации, предоставляемую в виде параметра httpRequest. Чтобы указать, что запрос может быть обработан, возвращается значение true, в противном случае возвращается значение false. Если возвращается значение true, во время выполнения ThingWorx будет вызван метод аутентификации (см. ниже).
|
//… make SSO call or other algorithm to determine userName public void authenticate(HttpServletRequest httpRequest, HttpServletResponse httpResponse) { // use validateThingworxUser to make sure the user is enabled and a Thingworx user AuthenticationUtilities.validateThingworxUser(userName); // Call setCredentials, so the Thingworx platform can provide the correct permissions and access to allowed content this.setCredentials(userName); } // … or if not using SSO, but providing username and password public void authenticate(HttpServletRequest httpRequest, HttpServletResponse httpResponse) { AuthenticationUtilities.validateCredentials(user, password); this.setCredentials(user, password); }
|
В случае стратегии аутентификации, в которой предоставляется только имя пользователя (например, SSO, где аутентификация пользователя выполняется в отдельном приложении), используйте первый набор validate и setCredentials, как показано в левом столбце.
В случае стратегии аутентификации, в которой предоставляются имя пользователя и пароль, используйте второй набор validate и setCredentials, как показано в левом столбце.
|
public void issueAuthenticationChallenge(HttpServletRequest httpRequest, HttpServletResponse httpResponse)
Сообщает об исключительной ситуации аутентификатора
|
Этот метод не всегда необходимо использовать. Однако если из метода аутентификации сообщено об исключительной ситуации или для флага RequiresChallenge установлено значение true, будет вызван метод issueAuthenticationchallenge.
|
Приоритизация аутентификаторов по умолчанию
Для системных аутентификаторов применяется следующая система приоритетов по умолчанию. Этот распределенный диапазон позволяет вставлять расширения аутентификаторов в цепочку обработки на промежуточном уровне, если требуется. Для этих аутентификаторов системных объектов невозможно переупорядочение, изменение приоритета, удаление или любое изменение.
• ThingworxBasicAuthenticator - приоритет 100. Аутентификация по предоставляемому имени пользователя и паролю.
• ThingworxMobileTokenAuthenticator - приоритет 150. Аутентификатор Mobile App Builder, который осуществляет проверку по мобильным маркерам ThingWorx.
|
Этот аутентификатор предназначен для будущего выпуска и в настоящее время отключен.
|
• ThingworxApplicationKeyAuthenticator - приоритет 200. Аутентификация по предоставляемому ключу приложения.
• ThingworxFormAuthenticator - приоритет 300. Аутентификация посредством формы входа в систему.
• ThingworxMobileAuthorizationAuthenticator - приоритет 350. Аутентификатор построителя мобильных приложений, который осуществляет проверку по именам пользователя и паролям ThingWorx.
|
Этот аутентификатор предназначен для будущего выпуска и в настоящее время отключен.
|
• ThingworxHttpBasicAuthenticator - приоритет 400. Базовая HTTP-аутентификация.
Развертывание пользовательского аутентификатора в Composer
1. В Composer щелкните > .
2. Найдите файл <имя_ZIP-файла_расширения_аутентификатора>.zip.
3. Установите расширение.
4. В проводнике щелкните Аутентификаторы.
5. Откройте нужный аутентификатор.
6. В разделе Общая информация щелкните Включено.
|
По умолчанию все аутентификаторы отключены.
|
7. Щелкните Сохранить.
Аутентификаторы во время выполнения
К расширению аутентификатора можно обратиться во время выполнения. Обычно самое низкоприоритетное значение обрабатывается сначала. При наличии двух аутентификаторов, которые имеют одинаковые значения приоритета и возвращают значение true в обратный вызов matchAuthenticationRequest, воздействие неопределенной упорядоченности приводит к неопределенности порядка обработки запросов во время выполнения. Поэтому для обеспечения известного порядка обработки запросов рекомендуется не использовать два пользовательских аутентификатора с одинаковыми значениями приоритета. Если аутентификатору не удается обработать запрос, очередь переходит к следующему аутентификатору в цепочке, и так до тех пор, пока аутентификация не будет выполнена. Если ни одному из пользовательских аутентификаторов не удалось обработать запрос, этот запрос будет обрабатываться системными аутентификаторами ThingWorx с возможным отображением формы входа в систему для ввода имени пользователя и пароля.
Обращение к аутентификаторам во время выполнения
Чтобы обратиться к аутентификатору во время выполнения, отправьте запрос на следующий URL-адрес и укажите параметры запроса или заголовка либо текст сообщения, который пользовательский аутентификатор сможет загрузить из пересылаемого объекта HTTP-запроса и обработать с использованием трех методов обратного вызова пользовательского аутентификатора, описанных ранее.
• <сервер:порт>/Thingworx/Home
• <хост:порт>/Thingworx/Home?YourParameter=something
См. также