인증자 샘플 확장 구성
아래 단계를 사용하여 확장 목록을 빌드 및 생성하고 사용자의 인증 전략 알고리즘을 인증자 확장 콜백 메소드에서 구현할 수 있습니다. 사용자 정의 확장을 생성하는 방법에 대한 추가 정보는 ThingWorx 확장성ThingWorx을 참조하십시오.
빌드
Ant 또는 Gradle과 같은 빌드 도구를 사용할 수 있습니다. 빌드 스크립트에서 인증자 메소드 콜백을 구현하는 Java 클래스를 컴파일해야 합니다(나중에 설명됨). 런타임 시 사용 중인 Thingworx-Platform-x.x.x 버전과 호환되는 Thingworx-Extension-SDK-x.x.x 라이브러리(JAR 파일)에 대해 컴파일했는지 확인하십시오. 확장 ZIP을 가져올 때 인증자 확장을 ThingWorx에 등록하는 데 사용되는 metadata.xml 파일도 포함하십시오.
목록 생성
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 - 활성화된 우선 순위 설정이 Composer에 저장되도록 true로 설정됩니다. 이는 필수 사항입니다.
3. FileResource 유형 jar 파일 이름을 구성합니다(아래 참조).
<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)
throws AuthenticatorException
이 메소드는 항상 필요하지는 않습니다. 그러나 인증 메소드에서 예외가 throw된 경우 또는 RequiresChallenge 플래그를 true로 설정한 경우 issueAuthenticationchallenge 메소드가 호출됩니다.
기본 인증자 우선 순위 지정
시스템 인증자의 기본 우선 순위 지정은 다음과 같습니다. 이 분산 범위를 사용하면 원하는 경우 인증자 확장을 처리 체인 사이에 삽입할 수 있습니다. 이러한 시스템 객체 인증자는 어떤 방식으로든 재정렬되거나, 우선 순위가 재지정되거나, 삭제되거나, 변경될 수 없습니다.
ThingworxBasicAuthenticator - 우선 순위 100입니다. 제공된 사용자 이름 및 암호를 인증합니다.
ThingworxMobileTokenAuthenticator - 우선 순위 150입니다. ThingWorx 모바일 토큰에 대해 유효성을 검사하는 Mobile App Builder Authenticator입니다.
* 
이 인증자는 향후 릴리즈를 위한 것으로, 현재 비활성화되어 있습니다.
ThingworxApplicationKeyAuthenticator - 우선 순위 200입니다. 제공된 응용 프로그램 키를 인증합니다.
ThingworxFormAuthenticator - 우선 순위 300입니다. 형태 로그인을 통해 인증합니다.
ThingworxMobileAuthorizationAuthenticator - 우선 순위 350입니다. ThingWorx 사용자/암호에 대해 유효성을 검사하는 Mobile App Builder 인증자입니다.
* 
이 인증자는 향후 릴리즈를 위한 것으로, 현재 비활성화되어 있습니다.
ThingworxHttpBasicAuthenticator - 우선 순위 400입니다. 기본 HTTP 인증입니다.
Composer에서 사용자 정의 인증자 배포
1. Composer에서 가져오기/내보내기>가져오기를 클릭합니다.
2. <YourAuthenticatorExtensionZipName>.zip을 찾습니다.
3. 확장을 설치합니다.
4. 탐색기에서 인증자를 클릭합니다.
5. 적합한 인증자를 엽니다.
6. 일반 정보에서 활성화됨을 클릭합니다.
* 
모든 인증자가 기본적으로 비활성화됩니다.
7. 저장을 클릭합니다.
실행 시간의 인증자
실행 시간의 인증자 확장에 액세스할 수 있습니다. 일반적으로 가장 낮은 값이 먼저 처리됩니다. 우선 순위 값이 동일한 두 개의 인증자가 있으며 둘 다 matchAuthenticationRequest 콜백에 true로 응답하는 경우 비결정적 순서 효과로 인해 비결정적 인증자 요청이 실행 시간에 처리됩니다. 따라서 알려진 요청 처리 순서가 보장되도록 두 개의 사용자 정의 인증자가 동일한 우선 순위 값을 갖지 않는 것이 좋습니다. 인증자가 요청 처리에 실패하면 유효한 인증이 발생할 때까지 체인에 있는 다음 인증자가 요청을 처리하는 식으로 작업이 수행됩니다. 요청을 처리할 수 있는 사용자 정의 인증자가 없으면 ThingWorx 시스템 인증자가 요청을 처리하며 사용자 이름 및 암호에 대한 형태 로그인을 표시할 가능성이 높습니다.
실행 시간에 인증자 액세스
실행 시간에 인증자에 액세스하려면 다음 URL에 대한 요청을 작성하고, 사용자 정의 인증자가 앞에서 설명한 세 가지 사용자 정의 인증자 콜백 메소드 동안 전달된 httpRequest 객체로부터 읽어들이고 처리할 수 있는 질의, 머리글 매개 변수 또는 메시지 본문을 제공합니다.
Server:Port/Thingworx/Home
<host:port>/Thingworx/Home?YourParameter=something
관련 링크
도움이 되셨나요?