예: PingFederate에 인증서 기반 인증 통합
이 예에서는 SSO 환경을 개선하는 방법에 대한 자세한 단계를 제공합니다. 이 환경에서는 PingFederate를 중앙 승인 서버(CAS) 및 ID 공급자(IdP)로 사용하고, Windchill DS를 인증서 기반 인증(CBA)을 사용하는 데이터 저장소로 구성하여 ThingWorx에 Single Sign-On을 설정한 상태입니다. 이를 통해 사용자는 자신의 자격 증명 또는 인증서를 사용하여 ThingWorx에 로그인할 수 있습니다.
파트 A: 사전 요구 사항
1단계: 인증서 생성
인증서 기반 인증을 설정할 때 PingFederate에 저장된 인증 기관(CA) 인증서와 비교하여 사용자 인증에 사용되는 인증서를 검증할 수 있도록 PingFederate를 구성합니다. CA와 사용자 인증서가 없으면 자체 서명 인증서를 생성하여 PingFederate에서 사용할 수 있습니다. 공개 키 및 클라이언트 인증서를 생성하려면 다음 명령을 사용하십시오.
1. openssl genrsa -out ptc-sso-ca.key 4096
2. openssl req -x509 -new -nodes -key ptc-sso-ca.key -days 3650 -out ptc-sso-ca.pem
3. openssl genrsa -out ptc-sso-jsmith.key 2048
4. openssl req -new -key ptc-sso-jsmith.key -out ptc-sso-jsmith.csr
5. v3.ext 파일을 생성합니다.
extendedKeyUsage=clientAuth
keyUsage = digitalSignature
6. openssl x509 -req -in ptc-sso-jsmith.csr -CA ptc-sso-ca.pem -CAkey ptc-sso-ca.key -CAcreateserial -out ptc-sso-jsmith.pem -days 1024 -sha256 -extfile <path to v3.ext file>
7. openssl pkcs12 -export -out ptc-sso-jsmith.pfx -inkey ptc-sso-jsmith.key -in ptc-sso-jsmith.pem
2단계: PingFederate에 CA 인증서 추가
X.509 토큰을 사용하려면 PingFederate에 보조 SSL 포트가 필요합니다. 보조 SSL 포트를 설정하려면 <pf-install>/ping federate/bin/run.properties 파일을 편집하여 pf.secondary.https.port 값을 유효한 포트 번호로 변경합니다. 이 예에서는 9032로 구성합니다.
3단계: 신뢰할 수 있는 CA 인증서 추가
1. > > 로 이동합니다.
2. CA 기관 인증서 파일(pem 파일)을 선택합니다.
3. Summary 창에서 구성을 검토하고 필요한 대로 수정한 다음 Save를 클릭합니다.
4단계: 브라우저에 사용자 인증서 저장
이제 사용자 인증서(pfx 파일)를 브라우저로 가져옵니다.
파트 B: X509 인증서 IDP 어댑터 생성
이 어댑터는 인증서를 기반으로 사용자를 인증하는 데 사용됩니다.
1. PingFederate에 관리자로 로그인합니다. > > > 로 이동합니다. Create New Instance를 클릭합니다.
2. Instance Name 및 Instance ID를 입력합니다. 유형을 X.509 Certificate IdP Adapter 1.3.1로 설정합니다. Next를 클릭합니다.
3. pf.secondary.https.port(9032)에 지정된 Client Auth Port를 입력합니다. client hostname에 PingFederate 시스템의 fqdn을 입력합니다.
4. Match Issuer DN in Client X.509 certificate를 선택하고 Show Advanced Fields를 클릭합니다.
5. Policy OID로 Authentication Context를 설정하고 Include Subject Alternative Name (SAN) 옵션을 선택합니다. Next를 클릭합니다.
6. Extended Contract 탭에서 Add 버튼을 사용하여 userPrincipalName과 CN을 입력하고 Next를 클릭합니다.
7. Adapter Attributes 탭에서 userPrincipalName 속성에 대한 Pseudonym 옵션을 설정하고 Next를 클릭합니다.
8. Adapter Contract Mapping 탭에서 데이터 저장소의 추가 속성과 Issuance Criteria를 구성할 수 있습니다. Issuance Criteria는 인증서에서 제공된 정보를 사용하여 LDAP에서 사용자의 현재 상태를 검증합니다.
| ThingWorx에서 CBA에 대한 Issuance Criteria를 설정해야 합니다. |
a. Configure Adapter Contract를 클릭합니다.
b. Adapter Contract Mapping에서 ADD Attribute Source를 클릭합니다.
c. Attribute Source Id 및 Attribute Source Description에 LDAP을 설정합니다. Active Data Store에서 WindchillDS 데이터 저장소를 선택하고 Next를 클릭합니다.
d. LDAP Directory Search에서 다음 매개 변수를 제공합니다.
i. 기본 DN = cn=Windchill_11.1,o=ptc
ii. 검색 범위 = Subtree
iii. 다음 사용자 속성 추가: uid, CN, Subject DN
e. Next를 클릭합니다.
f. LDAP FILTER에서 uid=${CN} 필터를 설정합니다. Next 및 Done을 클릭합니다.
g. Adapter Contract Fulfillment에서 userPrincipalName 소스를 LDAP으로 설정하고, 값은 uid로 지정합니다. 다른 모든 계약 소스를 Adapter로 설정합니다. Next를 클릭합니다.
h. Issuance Criteria에서 Show Advanced Criteria를 클릭합니다.
i. Expression에 다음을 추가합니다. #this.get("ds.LDAP.uid").hasValue(#this.get("CN").getValue())
ii. Error Result를 제공합니다(예: "사용자를 찾지 못함").
iii. ADD를 클릭합니다.
9. Next 및 Save를 클릭합니다.
파트 C: SP 연결에 인증서 어댑터 추가
1. PingFederate에 관리자로 로그인합니다. > > 로 이동합니다. 연결 이름을 선택합니다.
2. > 를 클릭합니다.
3. Adapter Instance 탭에서 파트 B에서 만든 어댑터 이름을 선택합니다. Next를 클릭합니다.
4. 다양한 속성을 어댑터 값이나 동적 텍스트 값에 매핑합니다.
5. Next 및 Save를 클릭합니다.