SSO에 대한 암호 암호화
키 저장소 작업을 수행하려면 키 저장소 공급자가 파일에 암호화되어 저장된 보안 토큰을 사용합니다. 키 저장소에 작성되는 모든 데이터는 암호를 사용하여 안전하게 저장됩니다. 처음으로 공급자가 시작되면 공급자가 임의의 암호 값과 키 저장소 파일을 생성합니다(없는 경우).
|
키 저장소 암호 및 키 저장소 파일은 응용 프로그램 사용자로만 제한되어야 합니다. 응용 프로그램 사용자는 파일에 대한 읽기/쓰기 권한이 있어야 합니다.
|
|
아래 예는 Windows를 기반으로 합니다. Linux 기반 OS를 사용하는 경우 필요한 대로 명령을 변경하십시오.
|
키 저장소 파일을 미리 만들고 해당 파일에 초기 데이터를 저장하려면
보안 관리 도구를 사용해야 합니다.
1. PTC 지원 사이트에서 보안 관리 도구 ZIP 파일을 얻습니다. 이 도구가 이미 설치되어 있는 경우 3단계로 건너뜁니다.
2. ZIP 파일의 콘텐츠를 디렉터리에 추출합니다.
3. 다음 매개 변수를 포함하는 구성 파일을 만들어 압축을 푼 파일의 bin 폴더에 배치합니다.
|
이 예에서는 파일의 이름이 keystore.conf이고 도구 버전은 1.0.0.36이며 위치는 C://security-common-cli-1.0.0.36/bin입니다.
|
|
default-encryption-key-length는 응용 프로그램 구성과 일치해야 합니다. ThingWorx에서는 이 값이 platform-settings.json에 있는 InternalAesCryptographicKeyLength 매개 변수입니다. 기본값은 128이지만 Java 1.8.0_162 이상을 사용하는 경우 256비트 암호화를 사용할 수 있습니다. 필요한 경우 키 크기 제한에 대한 Java 정책을 업데이트하여 이전 Java 버전과 함께 사용할 수도 있습니다.
|
{
security {
secret-provider = "com.thingworx.security.provider.keystore.KeyStoreProvider"
default-encryption-key-length = 128
keystore {
password-file-path = "/ThingworxPlatform/ssoSecurityConfig"
password-file-name = "keystore-password"
path = "/ThingworxPlatform/ssoSecurityConfig"
name = "_sso_keystore"
}
}
}
4. ThingWorx 서버를 중지합니다.
5. 관리자 권한으로 명령 프롬프트를 시작하고 security-common-cli-1.0.0.36\bin의 위치로 이동합니다.
6. 다음 명령을 실행하여 도구의 셸 프롬프트로 전환합니다.
C:\security-common-cli-1.0.0.36\bin> security-common-cli.bat <path to keystore>\keystore.conf
7. 아래 명령 집합을 실행하여 암호를 삽입합니다.
◦ 데이터베이스 암호:
> set encrypt.accesstoken.password <add-password-here>
◦ 키 저장소 저장 암호(sso-keystore.jks에 대한 암호):
> set encrypt.keystorestore.password <add-keystorestore-password-here>
◦ 키 저장소 키 암호(sso-keystore.jks의 키에 대한 암호):
> set encrypt.keystorekey.password <add-keystorekey-password-here>
◦ 서비스 공급자 클라이언트 보안: 각 AuthorizationServersSettings에 대해.<승인 서버 ID>(/ThingworxPlatform/ssoSecurityConfig/sso-settings.json 파일에서 언급된 경로)의 경우(
> set <AuthorizationServerId>.encrypt.SP.clientSecret <add-SP-clientSecret-here>
)
예를 들어, 아래 sso-settings.json 구성 파일의 경우 뒤에 나오는 명령을 실행합니다.
"AuthorizationServersSettings": {
"PingFed1": {
"clientId": "twx-sp-client-1",
"clientSecret": "twx-sp-client_1234",
"authorizeUri": "https://pingfed1.com:9031/as/authorization.oauth2",
"tokenUri": "https://pingfed1.com:9031/as/token.oauth2",
"clientAuthScheme": "form"
},
"PingFed2": {
"clientId": "twx-sp-client-2",
"clientSecret": "twx-sp-client_123456",
"authorizeUri": "https://pingfed2.com:9031/as/authorization.oauth2",
"tokenUri": "https://pingfed2.com:9031/as/token.oauth2",
"clientAuthScheme": "form"
}
}
Run:
> set PingFed1.encrypt.SP.clientSecret twx-sp-client_1234
> set PingFed2.encrypt.SP.clientSecret twx-sp-client_123456
◦ 리소스 서버 클라이언트 보안(ThingWorx가 리소스 서버로 구성된 경우에만):
> set encrypt.RP.clientSecret <add-clientSecret-here>
8. exit를 입력하여 셸 모드를 종료합니다.
> exit
9. /ThingworxPlatform/ssoSecurityConfig/sso-settings.json을 열고 다음 업데이트를 만듭니다.
◦ 데이터베이스 암호: AccessTokenPersistenceSettings 아래에서 password 값을
"encrypt.accesstoken.password"
로 변경합니다.
◦ 키 저장소 저장 암호: KeyManagerSettings 아래에서 keyStoreStorePass 값을
"encrypt.keystorestore.password"
로 변경합니다.
◦ 키 저장소 키 암호: KeyManagerSettings 아래에서 keyStoreKeyPassvalue를
"encrypt.keystorekey.password"
로 변경합니다.
◦ 서비스 공급자 클라이언트 보안: 각 AuthorizationServersSettings에 대해.<승인 서버 ID>.clientSecret의 경우 clientSecret 값을
"encrypt.SP.clientSecret"
로 변경합니다.
10. ThingWorx가 리소스 서버로 구성된 경우 /ThingworxPlatform/ssoSecurityConfig/resourceServerSettings.json 파일을 열고 다음과 같이 업데이트합니다.
◦ 리소스 서버 클라이언트 보안: ResourceServerSettings.accessTokenServicesSettings에서 clientSecret 값을
"encrypt.RP.clientSecret"
으로 변경합니다.
11. ThingWorx 서버를 시작합니다.