인증자 샘플 확장 구성
아래 단계를 사용하여 확장 목록을 빌드 및 생성하고 사용자의 인증 전략 알고리즘을 인증자 확장 콜백 메소드에서 구현할 수 있습니다. 사용자 정의 확장을 생성하는 방법에 대한 추가 정보는
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
관련 링크